3个应用层协议
HTTP、WebSocket、MQTT都是应用层协议。
- HTTP(HyperText Transfer Protocol)主要用于在Web浏览器和Web服务器之间传输数据,例如显示Web页面、文件下载、上传等操作,属于请求-响应协议。
- WebSocket也是应用于浏览器和Web服务器之间进行双向通信,提供了实时交互的能力。
- MQTT(Message Queuing Telemetry Transport)是一种轻量级的、基于发布-订阅模式的消息传输协议。MQTT协议主要用于物联网设备之间的通信,具有低带宽、低能耗、可靠性高、支持异步通信等特点。
我们使用HTTP和WebSocket协议在Web应用程序中进行数据交互,使用MQTT在物联网设备之间进行数据传输。
1个传输层协议
TCP(Transmission Control Protocol)是一种传输层协议,提供可靠的、面向连接的数据传输服务。TCP协议主要用于保证数据的可靠传输,采用三次握手协议建立连接,通过确认和重传机制保证数据的可靠性。
WebSocket和HTTP协议的关系
WebSocket协议在HTTP协议之上建立,通过HTTP的Upgrade头部将HTTP协议升级为WebSocket协议。在建立WebSocket连接之前,客户端和服务器之间必须先建立HTTP连接。因此,WebSocket可以看作是一种在HTTP连接之上的新协议,它在原有的HTTP基础上增加了双向实时通信的功能,不需要每次请求都建立连接,可以保持持久连接。
HTTP协议本身是一种请求-响应协议,客户端通过发送请求,服务器接收请求并返回响应。在这个过程中,服务器不能主动向客户端发送消息,只有在接收到客户端请求后才能返回响应。这种单向通信的限制使得HTTP协议不能实现实时双向通信的功能,对于需要实时交互的应用来说,HTTP协议的性能和效率都比较低。
WebSocket协议的出现解决了这个问题。WebSocket协议建立一个持久性的TCP连接,使得客户端和服务器之间可以实时双向通信。当客户端和服务器之间建立了WebSocket连接后,客户端可以随时向服务器发送消息,服务器也可以主动向客户端发送消息,而不必等待客户端的请求。
因此,WebSocket和HTTP协议有着紧密的关系,WebSocket协议建立在HTTP协议之上,并且在使用WebSocket协议之前,需要先建立HTTP连接。这时,HTTP协议起到了类似TCP中握手的作用:
- 客户端向服务器发送HTTP请求,请求头部包含Upgrade和Connection字段,表示客户端请求升级到WebSocket协议。
- 服务器收到请求后,根据请求头部中的Upgrade字段,判断是否支持升级到WebSocket协议。
- 如果服务器支持升级到WebSocket协议,则返回HTTP响应,响应头部包含Upgrade和Connection字段,表示服务器同意升级到WebSocket协议。
- 客户端收到服务器的响应后,根据响应头部中的Upgrade和Connection字段,确认服务器同意升级到WebSocket协议,并开始使用WebSocket协议进行通信。
由于WebSocket协议建立在HTTP协议之上,因此WebSocket协议也继承了HTTP协议的一些特性,例如可以使用HTTP的身份认证和安全机制等。