HTTP、WebSocket、MQTT、TCP的区别和联系

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中握手的作用

  1. 客户端向服务器发送HTTP请求,请求头部包含Upgrade和Connection字段,表示客户端请求升级到WebSocket协议。
  2. 服务器收到请求后,根据请求头部中的Upgrade字段,判断是否支持升级到WebSocket协议。
  3. 如果服务器支持升级到WebSocket协议,则返回HTTP响应,响应头部包含Upgrade和Connection字段,表示服务器同意升级到WebSocket协议。
  4. 客户端收到服务器的响应后,根据响应头部中的Upgrade和Connection字段,确认服务器同意升级到WebSocket协议,并开始使用WebSocket协议进行通信。

由于WebSocket协议建立在HTTP协议之上,因此WebSocket协议也继承了HTTP协议的一些特性,例如可以使用HTTP的身份认证和安全机制等。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值