Socket 和 http 的区别
HTTP
超文本传输协议,首先它是一个协议,并且是基于TCP/IP协议基础之上的应用层协议。TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,HTTP是应用层协议,主要解决如何包装数据。HTTP协议详细规定了浏览器与服务器之间相互通信的规则,是万维网交换信息的基础。HTTP是基于请求-响应形式并且是短连接,并且是无状态的协议。针对其无状态特性,在实际应用中又需要有状态的形式,因此一般会通过session/cookie技术来解决此问题。
Http请求的协议
- http协议
- 基于http协议的soap协议
优点
- 基于应用级的接口使用方便
- 要求的开发水平不高,容错性强
缺点
- 传输速度慢,数据包大
- 如实现实时交互,服务器性能压力大
- 数据传输安全性差
Http显著特点
HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。
- 在HTTP 1.0中,客户端的每次请求都要求建立一次单独的连接,在处理完本次请求后,就自动释放连接。
- 在HTTP 1.1中则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后再发送下一个请求。
适用场景:一般用于实时性要求不那么高的情况
- 信息反馈
- 图片上传
- 获取新闻信息
- 公司OA服务
- 互联网服务
Socket
Socket不属于协议范畴,而是一个调用接口(API),Socket是对TCP/IP协议的封装,通过调用Socket,才能使用TCP/IP协议。Socket连接是长连接,理论上客户端和服务器端一旦建立连接将不会主动断开此连接。Socket连接属于请求-响应形式,服务端可主动将消息推送给客户端。
socket可以使用TCP或UDP协议
TCP
传输控制协议,面向连接的的协议,稳定可靠。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。
UDP
广播式数据传输,UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
优点
- 传输数据为字节级,传输数据可自定义,数据量小。相应的移动端开发,手机费用低
- 传输数据时间短,性能高
- 适合C/S之间信息实时交互
- 可以加密,数据安全性高
缺点
- 需要对传输的数据进行解析,转化为应用级的数据
- 对开发人员的开发水平要求高
- 相对于Http协议传输,增加了开发量
适用场景:一般用于比较即时的通信和实时性较高的情况
- 推送
- 聊天
- 保持心跳长连接
- 网络游戏
- 银行交互
- 支付
参考:
http://blog.csdn.net/zeng622peng/article/details/5546384