比较 TCPHTTP 和 WebSocket 三种协议
· 阅读需 1 分钟
特性 / 协议 | TCP | HTTP | WebSocket |
---|---|---|---|
是否基于连接 | 是,是一种面向连接的协议 | 是,但默认每次请求都需要重新建立连接(HTTP/1.1 引入了 keep-alive 机制以复用连接) | 是,一次握手后建立持久连接 |
可靠性 | 是,通过 ACK、序列号、重传机制等保证 | 是,因为基于 TCP | 是,因为基于 TCP |
通信方式 | 全双工 | 半双工,客户端发送请求后等待并接收响应 | 全双工 |
数据流向 | 双向 | 单向,从客户端发送请求到服务端响应 | 双向,可以从客户端到服务端,也可以从服务端到客户端 |
头部信息 | 无,仅在握手时有少量开销 | 每次请求和响应都有头部信息,可能导致额外开销 | 握手时有开销,但之后数据传输的头部开销非常小 |
使用场景 | 低级别的网络通信,不特定于应用场景 | 网页请求,API 请求,短连接 | 实时或需要服务器主动推送的应用,如聊天应用、在线游戏等 |