【深入理解计算机网络10】UDP协议详解 - 指南

传输层服务

端口的作用

  • 通过 “端口号相互独立的就是” 标识本主机的一个特定进程,每台主机的端口号是相互独立的,并且TCP、UDP 两种协议的端口号
  • TCP 或 UDP 协议,通过 Socket 套接字 ={IP 地址:端口号},唯一地标识网络中的一台主机上的一个应用进程
  • 端口号的分类
    • 服务器采用的端口号
      • 熟知端口号 0~1023—— 通常只能用于被熟知的重要应用程序
      • 登记端口号 1024~49151
    • 客户端运用的端口号 —— 短暂端口号 49152~65535

功能

  • 实现端到端(进程到进程)的通信
  • 复用和分用
    • 复用(从上到下)通过:在发送数据的时候,同一台主机上的多个进程能够运用同一个传输层协议
    • 分用(从下到上):在接收数据的时候,传输层可能把资料正确交付到目的进程
  • 差错检测
    • TCP 检测出差错后丢弃资料,并通知发送方重传
    • UDP 检测出错误后直接丢弃资料,且不通知发送方
  • 向应用层提供两种服务
    • 面向连接的、可靠的端到端传输服务(TCP)—— 确保素材正确 / 完整,但开销大、实时性较差
    • 无连接的、不可靠的端到端传输服务(UDP)—— 材料可能出错 / 丢失,但速度快、开销小

UDP协议

UDP(User Datagram Protocol,用户材料报协议)是 TCP/IP 协议族中无连接、不可靠的传输层协议,核心设计目标是 “快捷、低开销”,适用于对实时性要求高、可容忍少量资料丢失的场景。

协议结构

包含 8 字节固定首部 + 应用层数据(无选项字段)

字段长度(字节)核心作用
源端口号2标识发送方的应用进程(如客户端端口,可选:若无需接收响应,可设为 0)
目的端口号2信息交付到目标进程的关键)就是标识接收方的应用进程(必须填写,
UDP 长度2表示 UDP 首部(8 字节)+ 应用层信息的总长度(最小值为 8,最大值为 65535)
校验和2检测 UDP 信息报(含伪首部)在传输中的错误(错误则丢弃,不通知发送方)

UDP与TCP对比

  • UDP 首部很小,只占 8B
  • UDP 每次传输一个完整的报文,不帮助报文自动拆分、重装
  • 通过UDP 是无连接的、不可靠的(可靠性能够交给应用层处理),也不支持拥塞控制
    • 不保证数据的 “交付成功”:发送方发送数据后,不等待接收方的确认(ACK),即使资料丢失也不会重传。
    • 不保证数据的 “顺序性”:若多个 UDP 数据报因网络延迟差异到达接收方,可能出现 “后发先至”,接收方不会重组顺序。
    • 不保证数据的 “完整性”:仅借助校验和检测错误(错误则丢弃,不通知发送方),无重传、流量控制等纠错机制。
  • UDP 支持一对一(封装成单播 IP 数据报)、一对多传输(封装成广播 / 多播 IP 数据报)

  • TCP 首部更大,占 20~60B
  • TCP 支持报文自动拆分、重装,因此可能传输长报文
  • 有连接的、可靠的、支持拥塞控制就是TCP
  • TCP 仅支持一对一传输(因为通信双方的传输层必须先建立连接)

UDP数据报

UDP检验

将原始的 48bit 数据分成三组 16bit 的数据依次进行二进制加法最高位产生的进位需要回卷校验和。并将校验和和原始数据组合在一起成为新的数据发送。就是),然后将得到的中间结果进行取反,所得到的就

接收方对传输过来的信息进行验证,同样将数据拆分为 16bit 的数据进行二进制加法,如果加法结果不全是1,那么就说明发生了比特错误。

通过依此为基础,就能够理解UDP的检验

发送方的传输层

  1. 传输层的 UDP 协议在计算检验和之前,先添加伪首部
  2. 把伪首部、首部、数据部分以 16bit 为一组,进行二进制加法(最高位产生的进位必须回卷)
  3. 将最终的加法结果逐位取反,就得到 16bit 检验和,将其填入 UDP 首部
  4. 去掉伪首部,并将 UDP 数据报交给网络层,封装成 IP 数据报

接收方的传输层

  1. 网络层向传输层递交 UDP 内容报
  2. 传输层在 UDP 数据报之前,添加伪首部
  3. 把伪首部、UDP 首部、数据部分以 16bit 为一组,进行二进制加法(最高位产生的进位需要回卷)
  4. 如果加法结果为全 1,说明没有比特错误,于是接收该 UDP 数据报,并根据目的端口号,向应用层递交报文。如果加法结果不是全 1,说明有差错,于是丢弃该 UDP 数据报

应用场景

  • 实时音视频传输:如 VoIP(网络电话)、视频会议(Zoom、腾讯会议)、直播(抖音、快手)。这类场景中,少量数据丢失仅导致短暂卡顿 / 模糊,但若延迟过高(如 TCP 重传导致的延迟),会严重影响体验。
  • DNS 域名解析:DNS 查询通常仅需传输少量数据(如域名→IP 的映射请求 / 响应),若用 TCP 需先建立连接,反而增加延迟;UDP 能快速完成解析,即使丢失也可由应用层重试。
  • 广播 / 多播场景:如局域网内的设备发现(如打印机共享)、实时数据分发(如股票行情推送、物联网传感器数据上报),UDP 支持一对多传输,效率远高于 TCP 的一对一连接。
  • 轻量控制协议:如 TFTP(轻松文件传输协议,用于设备固件升级)、SNMP(简单网络管理协议,用于监控路由器 / 交换机),这类场景数据量小、对可靠性要求低,UDP 足够满足需求。
posted @ 2025-11-11 23:20  ycfenxi  阅读(26)  评论(0)    收藏  举报