http与websocket的关系

http

http是应用层协议,是基于tcp协议的,所以http建立连接的时候必须要经过三次握手。

每一次交换都是客户端主动发起请求(request),服务端被动应答(response)。

服务器不能主动向客户端推送数据。

通信的数据是基于文本格式的。二进制数据(比如图片等)要转化为base64编码文本后才能传输。

长连接和短连接

短连接:是每次请求都要三次握手建立连接才能发送信息,完成一次通信之后就把连接断开。发送消息过程中一个request对应一个response。

长连接:建立连接了在一段时间内保持连接,tcp不会断开。客户端与服务器通信,必须由客户端发起request,然后服务器返回结果。即客户端是主动的,服务器是被动的。

websocket

WebSocket是HTML5规范提出的一种协议,它是封装在socket协议的上层协议。它是为了解决 客户端发起多个http请求服务器资源 必须要经过长时间轮询的问题而产生的,它能实现多路复用。

websocket建立连接时,数据是通过http传输的,建立连接后就不需要http协议了。

websocket建立连接后就是全双工模式,也是基于tcp协议。

建立连接之后,不必在浏览器(客户端)发送request之后服务器才能发送信息到浏览器,这时候服务器有主动权,可以随时发消息给浏览器(客户端)。

发送的信息中不必带有head部分信息了,相对于http来说,降低了服务器的压力,极大的减少了不必要的网络流量与延迟。

 websocket与http的关系

相同点:

1.都是基于tcp协议,都需要三次握手建立连接,都是可靠传输协议

2.都是应用层协议

区别:

1.websocket是双向通信协议,模拟socket协议,而http是单向的。

2.websocket需要浏览器(客户端)和服务器握手进行连接的,而http是浏览器发起向服务器的连接,服务器预先并不知道这个连接。

你可能感兴趣的:(http与websocket的关系)