InfoQ 极客传媒 15 周年庆征文|Socket 请求和 Http 请求特点、区别及适用场景
一、Socket 请求
Socket
实现服务器与客户端之间的物理连接,并进行数据传输。主要有TCP/UDP
两个协议。Socket
处于网络协议的传输层。
TCP
:传输控制协议,面向连接的的协议,稳定可靠。在客户端和服务器彼此交换数据前,必须先在双方之间建立一个TCP
连接,之后才能传输数据。UDP
:广播式数据传输,UDP
不提供可靠性,它只是把应用程序传给IP
层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP
在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
优点:
传输数据为字节级,传输数据可自定义,数据量小。相应的移动端开发,手机费用低;
传输数据时间短,性能高;
适合 C/S 之间信息实时交互;
可以加密,数据安全性高;
缺点:
需要对传输的数据进行解析,转化为应用级的数据;
对开发人员的开发水平要求高;
相对于 Http 协议传输,增加了开发量;
二、Http 请求
Http 请求主要有http
协议,基于 http 协议的soap
协议,常见的 http 数据请求方式有 get 和 post,web 服务。优点:
基于应用级的接口使用方便;
要求的开发水平不高,容错性强;
缺点:
传输速度慢,数据包大。
如实现实时交互,服务器性能压力大;
数据传输安全性差;
2.1 Http、TCP、IP 协议
HTTP 协议:简单对象访问协议,对应于应用层 ,HTTP 协议是基于 TCP 连接的。
tcp 协议: 对应于传输层;
ip 协议: 对应于网络层;
2.2 敲黑板
TCP/IP
是传输层协议,主要解决数据如何在网络中传输;而HTTP
是应用层协议,主要解决如何包装数据。
Socket
是对TCP/IP
协议的封装,Socket
本身并不是协议,而是一个调用接口(API
),通过Socket
,我们才能使用TCP/IP
协议。
三、Socket 请求和 Http 请求区别
http 连接:http 连接就是所谓的短连接,即客户端向服务器端发送一次请求,服务器端响应后连接即会断掉;
socket 连接:socket 连接就是所谓的长连接,理论上客户端和服务器端一旦建立起连接将不会主动断掉;但是由于各种环境因素可能会使连接断开,比如说:服务器端或客户端主机 down 了,网络故障,或者两者之间长时间没有数据传输,网络防火墙可能会断开该连接以释放网络资源。所以当一个 socket 连接中没有数据的传输,那么为了维持连接需要发送心跳消息~~具体心跳消息格式是开发者自己定义的。
四、Socket 请求和 Http 请求适用场景
Socket 适用场景:网络游戏,银行交互,支付。
http 适用场景:公司 OA 服务,互联网服务。
版权声明: 本文为 InfoQ 作者【No Silver Bullet】的原创文章。
原文链接:【http://xie.infoq.cn/article/43b321e472553c82c5b2f1e7e】。文章转载请联系作者。
评论