UDP报文详解(转)
1.UDP概述
- UDP是一种无连接的, 即发送数据前不需要建立连接,因此减小的开销和发送数据的延迟。
- UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表。
- UDP是面向报文的,
- UDP没有拥塞控制,因此网络出现的拥塞不会使主机的发送率降低。
- UDP支持一对一,一对多,多对一和多对多的交互通信。
- UDP首部开销小,只有8字节,比TCP的20个字节的首部要短。
- UDP的封装如下所示:

- 源端口号:该项是任选项,默认值是0,可以被指定。
- 目的端口号:该项必须指定,因为这个作为接收主机内特定应用进程相关联的地址。
- UDP长度:该字段表示数据报文的长度(包含首部和数据部分),最小8个字节。
- 检验和:该字段用于防止UDP用户数据报在传输中出错。当进行检验和计算时,要在UDP数据报之前增加临时的12个字节伪首部。如上图所示。
物理网络层一般要限制每次发送的数据帧的最大长度。所以,IP层接收到一份要发送的IP数据报时,它要判断向本地哪个接口发送数据(选路),并查询该接口在原始发送端主机上,也可以发送在中间路由器上。
对于每一份IP数据报来说,其标识字段都包含一个唯一值。该值在数据报分片时候被复制到每个片中。当数据报分片之后,每个片的总长度要改为该片的长度。(任何运输层首部只出现在第一片数据报中)
4.ICMP不可达差错(需要分片)
当路由器收到一份需要分片的数据报,而在IP首部又设置了不分片(DF)的标志比特。,就会长生ICMP不可达差错报文,如图所示。

5.ICMP源站抑制差错
当一个系统(路由器或者主机)接收数据报的速度比其处理速度快时,可能产生这个差错。报文格式如下:

【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步