webSocket、http、TCP、UDP协议

1. TCP (传输控制协议)

  • 定位:传输层协议

  • 特点:面向连接、可靠传输、流量控制、拥塞控制

  • 工作原理:通过三次握手建立连接,确保数据有序、完整到达

  • 速度:快(但需保证可靠性)

  • 典型应用:HTTP、FTP、邮件传输等需要可靠性的场景

2. UDP (用户数据报协议)

  • 定位:传输层协议

  • 特点:无连接、不可靠、无流量控制

  • 工作原理:直接发送数据包,不保证顺序和完整性

  • 速度:非常快(头部开销小,无确认机制)

  • 典型应用:实时视频/音频、DNS查询、在线游戏

3. HTTP (超文本传输协议)

  • 概念:建立在 TCP 之上的请求-响应协议。它是万维网数据通信的基础。

  • 通信模型:

    1. 短连接(HTTP/1.0默认):客户端发起一个TCP连接 -> 发送一个HTTP请求 -> 服务器返回一个HTTP响应 -> 连接关闭。下次请求需要重新建立连接。

    2. 长连接(HTTP/1.1默认,Keep-Alive):一个TCP连接可以用于发送多个请求/响应对,减少了建立连接的开销。

  • 特点:

    • 单向:总是由客户端(如浏览器)主动发起请求,服务器被动响应。

    • 无状态:服务器默认不记录之前的请求上下文(需要靠Cookie/Session等技术实现状态)。

    • 基于文本/报文:头部信息是可读的文本格式。

4. WebSocket

  • 概念:建立在 TCP 之上的全双工通信协议。它首先通过一个特殊的 HTTP 握手请求(Upgrade头)与服务器建立连接,成功后,连接就从HTTP协议升级为WebSocket协议。即WebSocket 在建立连接时采用 HTTP 协议,但连接建立成功后,后续的数据传输采用的是基于 TCP 的自定义帧协议。

  • 通信模型:

    1. 握手阶段:使用HTTP协议(ws:// 或加密的 wss://)。

    2. 数据交换阶段:连接保持打开,服务器和客户端可以随时、主动地向对方发送数据帧。

  • 特点:

    • 全双工:双方平等,可以同时发送和接收数据。

    • 长连接:连接一旦建立,会持续存在,直到显式关闭。

    • 低开销:数据帧头部比HTTP头部小得多,特别适合频繁的小数据交换。

 

特性TCPUDPHTTPWebSocket
协议层 传输层 传输层 应用层 应用层
连接方式 面向连接 无连接 短连接 长连接
可靠性 可靠 不可靠 可靠 可靠
通信方向 全双工 全双工 半双工 全双工
数据格式 字节流 数据报文 文本/二进制 帧格式
头部开销 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则是一个典型的应用层协议。

 

posted @ 2020-12-17 17:05  wangssd  阅读(176)  评论(0)    收藏  举报