websocket和http的区别:1、websocket是双向通信协议,模拟socket协议,可以双向发送或接受信息,而http是单向的;2、websocket是需要浏览器和服务器握手进行建立连接的,而http是浏览器发起向服务器的连接。
本文操作环境:windows7系统,dell g3电脑。
推荐:《编程视频》
一、websocket 是什么?
websocket是html5规范提出的一种协议;目前除了完犊子的ie浏览器,其他浏览器都基本支持。他是一种协议,万变不离其宗,也是基于tcp协议的;和http协议是并存的两种协议。
websocket是html5中的协议。html5 web sockets规范定义了web sockets api,支持页面使用web socket协议与远程主机进行全双工的通信。它引入了websocket接口并且定义了一个全双工的通信通道,通过一个单一的套接字在web上进行操作。
html5 web sockets以最小的开销高效地提供了web连接。相较于经常需要使用推送实时数据到客户端甚至通过维护两个http连接来模拟全双工连接的旧的轮询或长轮询(comet)来说,这就极大的减少了不必要的网络流量与延迟。
要使用html5 web sockets从一个web客户端连接到一个远程端点,你要创建一个新的websocket实例并为之提供一个url来表示你想要连接到的远程端点。
该规范定义了ws://以及wss://模式来分别表示websocket和安全websocket连接,这就跟http:// 以及https:// 的区别是差不多的。
一个websocket连接是在客户端与服务器之间http协议的初始握手阶段将其升级到web socket协议来建立的,其底层仍是tcp/ip连接。
二、websocket与socket的关系
socket其实并不是一个协议,而是为了方便使用tcp或udp而抽象出来的一层,是位于应用层和传输控制层之间的一组接口。
“socket是应用层与tcp/ip协议族通信的中间软件抽象层,它是一组接口,提供一套调用tcp/ip协议的api。
在设计模式中,socket其实就是一个门面模式,它把复杂的tcp/ip协议族隐藏在socket接口后面,对用户来说,一组简单的接口就是全部,让socket去组织数据,以符合指定的协议。”
当两台主机通信时,必须通过socket连接,socket则利用tcp/ip协议建立tcp连接。tcp连接则更依靠于底层的ip协议,ip协议的连接则依赖于链路层等更低层次。
websocket就像http一样,则是一个典型的应用层协议。
总结:
socket是传输控制层接口,websocket是应用层协议。
三、websocket与http的关系
关系图:
相同点
都是一样基于tcp的,都是可靠性传输协议。
都是应用层协议。
区别
websocket是双向通信协议,模拟socket协议,可以双向发送或接受信息。http是单向的。
websocket是需要浏览器和服务器握手进行建立连接的。而http是浏览器发起向服务器的连接,服务器预先并不知道这个连接。
联系
websocket在建立握手时,数据是通过http传输的。但是建立之后,在真正传输时候是不需要http协议的。
总结:
在websocket中,只需要服务器和浏览器通过http协议进行一个握手的动作,然后单独建立一条tcp的通信通道进行数据的传送。
websocket连接的过程是:
首先,客户端发起http请求,经过3次握手后,建立起tcp连接;http请求里存放websocket支持的版本号等信息,如:upgrade、connection、websocket-version等;
然后,服务器收到客户端的握手请求后,同样采用http协议回馈数据;
最后,客户端收到连接成功的消息后,开始借助于tcp传输信道进行全双工通信。
以上就是websocket和http的区别的详细内容。