webSocket、http、TCP、UDP协议
1. TCP (传输控制协议)
-
定位:传输层协议
-
特点:面向连接、可靠传输、流量控制、拥塞控制
-
工作原理:通过三次握手建立连接,确保数据有序、完整到达
-
速度:快(但需保证可靠性)
-
典型应用:HTTP、FTP、邮件传输等需要可靠性的场景
2. UDP (用户数据报协议)
-
定位:传输层协议
-
特点:无连接、不可靠、无流量控制
-
工作原理:直接发送数据包,不保证顺序和完整性
-
速度:非常快(头部开销小,无确认机制)
-
典型应用:实时视频/音频、DNS查询、在线游戏
3. HTTP (超文本传输协议)
-
概念:建立在 TCP 之上的请求-响应协议。它是万维网数据通信的基础。
-
通信模型:
-
短连接(HTTP/1.0默认):客户端发起一个TCP连接 -> 发送一个HTTP请求 -> 服务器返回一个HTTP响应 -> 连接关闭。下次请求需要重新建立连接。
-
长连接(HTTP/1.1默认,Keep-Alive):一个TCP连接可以用于发送多个请求/响应对,减少了建立连接的开销。
-
-
特点:
-
单向:总是由客户端(如浏览器)主动发起请求,服务器被动响应。
-
无状态:服务器默认不记录之前的请求上下文(需要靠Cookie/Session等技术实现状态)。
-
基于文本/报文:头部信息是可读的文本格式。
-
4. WebSocket
-
概念:建立在 TCP 之上的全双工通信协议。它首先通过一个特殊的 HTTP 握手请求(Upgrade头)与服务器建立连接,成功后,连接就从HTTP协议升级为WebSocket协议。即WebSocket 在建立连接时采用 HTTP 协议,但连接建立成功后,后续的数据传输采用的是基于 TCP 的自定义帧协议。
-
通信模型:
-
握手阶段:使用HTTP协议(
ws://或加密的wss://)。 -
数据交换阶段:连接保持打开,服务器和客户端可以随时、主动地向对方发送数据帧。
-
-
特点:
-
全双工:双方平等,可以同时发送和接收数据。
-
长连接:连接一旦建立,会持续存在,直到显式关闭。
-
低开销:数据帧头部比HTTP头部小得多,特别适合频繁的小数据交换。
-
| 特性 | TCP | UDP | HTTP | WebSocket |
|---|---|---|---|---|
| 协议层 | 传输层 | 传输层 | 应用层 | 应用层 |
| 连接方式 | 面向连接 | 无连接 | 短连接 | 长连接 |
| 可靠性 | 可靠 | 不可靠 | 可靠 | 可靠 |
| 通信方向 | 全双工 | 全双工 | 半双工 | 全双工 |
| 数据格式 | 字节流 | 数据报文 | 文本/二进制 | 帧格式 |
| 头部开销 | 20字节 | 8字节 | 较大 | 2-14字节 |
WebSocket同HTTP一样也是应用层的协议,但是它是一种双向通信协议,是建立在TCP之上的。
HTTP协议是非持久化的,单向的网络协议。
WebSocket与Socket的关系
Socket其实并不是一个协议,而是为了方便使用TCP或UDP而抽象出来的一层,是位于应用层和传输控制层之间的一组接口。Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。当两台主机通信时,必须通过Socket连接,Socket则利用TCP/IP协议建立TCP连接。TCP连接则更依靠于底层的IP协议,IP协议的连接则依赖于链路层等更低层次。WebSocket则是一个典型的应用层协议。

浙公网安备 33010602011771号