%% # 纲要 > 主干纲要、Hint/线索/路标 # Q&A #### 已明确 #### 待明确 > 当下仍存有的疑惑 **❓<font color="#c0504d"> 有什么问题?</font>** # Buffer ## 闪念 > sudden idea ## 候选资料 > Read it later %% # UDP 协议 > UDP(User Data Protocol),用户数据报协议 UDP 提供面向 **无连接** 的传输层通信协议: - **无连接**:不需要建立链接,即刻传输数据; - **尽力交付**:不保证可靠交付,**没有重传机制**,可能**丢包或乱序**。 - **以 "包" 为单位进行传输**: 每个 UDP 报文都==**独立封装**==,有边界。 - **支持一对一、一对多、多对多的交互通信**; > [!NOTE] 每个 UDP 数据报独立处理,不保证数据包的顺序、完整性或可靠性 => 丢包、重复或乱序均交由上层进行处理。 UDP 无需建立连接、没有数据恢复机制,因此通常比 TCP 快,效率更高,适用于对 **==实时性==** 要求高的应用。 常用场景: - 包总量较少的通信,如 `DNS` 、`SNMP` 等; - **视频流、音频**等多媒体通信; - **实时在线游戏** - **即时通讯**、广播通信; > [!NOTE] UDP 不可靠,但可以 **==基于 UDP==** 实现一个可靠传输协议(在应用层建立可靠性机制,例如增加确认与重传机制) > > Chrome 浏览器中所使用的 QUIC 协议就在 UDP 之上的应用层协议中实现了可靠性。 > > ![[_attachment/88-求职面试/0-MOC-求职面试.assets/IMG-0-MOC-求职面试-4D2F7101066C3F8342CB417B4E9EAE2A.png|671]] <br><br> # UDP 数据报格式 > ![image-20240104164048134|644](_attachment/02-开发笔记/07-计算机网络/传输层/传输层.assets/IMG-传输层-6286050A651F3B7AB728B51B54E3C847.png) UDP 数据报的头部**共 4 个字段**,每个字段 2 个字节,**共 8 个字节**,64 位。 - **==源端口号==**、**==目的端口号==**、**==长度==**、**==校验和==** > [!NOTE] UPD 数字报长度 > > 该字段是 **UDP 数据报的总长度**,即包括**UDP 头部**以及**数据载荷**的**总长度**(单位 "字节")。 > > 16 位,因此**UDP 数据报的理论上限是 65535 个字节**,由于头部占 8 个字节,因此理论**最大有效数据载荷是 65527 个字节**。 > 但**实际上通常会设置为远小于这个值,以适应网络层的 MTU**,**避免因超过网络层的 MTU 而被分片**。 > > [!NOTE] "校验和" 字段 > > 提供了差错检测功能,确定当 UDP 数据报从源端到目的地之间传输时,其中的比特是否发生了改变。 > **虽然 UDP 提供了差错检测功能,但==没有差错恢复能力==,故或是丢弃受损的数据报,或是将受损的数据报传给应用程序并发出警告**。 <br><br> # TCP 与 UDP 协议的区别 - **"面向连接" 与 "无连接"** - TCP 是面向连接的协议:在数据传输前需要先**建立连接**(三次握手),需要维护**连接状态**,包括接收和发送缓存、拥塞控制参数以及序号和确认号的参数。 - UDP 是**无连接**的,发送数据前不需要建立连接,也就不需要维护连接状态 - **可靠性** - TCP 提供可靠的数据传输服务,确保接收端正确收到完整的数据。 => **确认应答** & **重传**机制。 - UDP 提供**不可靠**的数据传输服务,**不保证数据包的顺序或完整性**(可能丢包 or 乱序) - **流量控制与拥塞控制** - TCP 提供了 **"==流量控制==" 与 "==拥塞控制==" 两种机制**; - UDP 无,以恒定的速率发送数据包,丢包也不会处理,且UDP 报文段由于缓存溢出**可以在接收方丢失**。 - **报文格式** - TCP 报文段的头部为 `[20, 60]` 字节。 - UDP 数据报的头部只有 8 字节。 - **数据传输方式**: - UDP 基于**数据报**,**每个 UDP 报文都==独立封装==**,保持了数据边界。 - TCP 基于字节流,发送方和接收方之间**没有明确的数据边界**。 - **分片不同** - UDP 在传输层无分片,只可能在 **IP 层根据 MTU 分片**; - TCP **在传输层会根据 ==MSS== 进行分片**。(MSS 通常设置小于 MTU,从而避免 IP 层再次分片) - **速度效率与使用场景** - TCP 由于建立连接、确认应答等过程,相较于 UDP 有更多的开销,速度较慢。 - 适用于需要高可靠性的应用,如**HTTP/HTTPS**、FTP 文件传输、电子邮件、 - UDP 无需建立连接、没有数据恢复机制,因此通常比 TCP 快,效率更高; - 适用于对实时性要求高的应用,如视频流、在线游戏、VoIP(语音通信)。 <br><br> # ♾️参考资料 # Footnotes