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是浏览器发起向服务器的连接,服务器预先并不知道这个连接。
参考:
https://www.cnblogs.com/guoke-jsp/p/5782653.html
https://blog.csdn.net/yamaxifeng_132/article/details/83583497