物理链路上传输的完整数据单元叫做“帧”,包括帧头、载荷、帧尾。 每种数据链路层能够传输的帧的大小不同,这里说的帧通常指帧中的载荷的大小不同,能够传输的最大载荷长度,称作MTU(Maximum Transmission Unit),即最大传输单元。
一条网络路径中,可能是由多种物理链路连接起来的,那这条网络路径的MTU,取决于最小的MTU(木桶效应),最小的MTU,称为PMTU(Path Maximum Transmission Unit),即路径最大传输单元/路径MTU。
PMTUD(Path Maximum Transmission Unit Discovery)和DPLPMTUD(Datagram Packetization Layer PMTUD)是发现PMTU大小的两种实现机制。
相比PMTUD,DPLPMTUD不依赖ICMP消息,是一种更健壮的PMTU探测机制。
PMTUD过程:
端点最初是不知道PMTU是多少的,通过发送当前数据链路层上MTU大小的帧来探测路径MTU,IP包头中设置DF(Don’t Fragment)禁止分片标记(IPv4网络中),当中间设备转发IP数据包时,发现数据包太大,需要分片,但是设置了禁止分片标记,回一个包含需要分片的错误信息的ICMP包,ICMP包中包含下一个MTU的大小。 PMTUD有一个缺陷,如果ICMP包被防火墙等中间设备拦截,导致ICMP无法返回发送端,发送端也就无法知道PMTU到底是多少(ICMP黑洞)。 注意IPv4和IPv6网络中的ICMP的类型不同,但是提供的信息相似。
DPLPMTUD过程:
应用层(UDP上直接是应用层)或者分组层(UDP上是QUIC,QUIC上是应用层,分组层即QUIC层)负责发送大于MTU的探测包,然后根据探测包的应答或超时机制确定是否丢包判断PMTU的大小。
缩写和全称
MTU(Maximum Transmission Unit)最大传输单元 PMTU(Path Maximum Transmission Unit)路径最大传输单元——路径MTU PMTUD(Path Maximum Transmission Unit Discovery)路径最大传输单元发现——路径MTU发现 DPLPMTUD(Datagram Packetization Layer PMTUD)数据包分组层路径最大传输单元发现——数据包分组层路径MTU发现
什么是ICMP黑洞?
实际网络中,ICMP消息可能被防火墙拦截等情况,导致ICMP无法返回发送端,这种情况叫ICMP黑洞。
TCP/IP分层中的数据单元名称
| TCP/IP分层 | 数据单元名称 | 说明 |
|---|---|---|
| 应用程 | 消息、数据 | 应用层数据 |
| 传输层 | 段 | TCP段 |
| 数据报 | UDP数据报 | |
| 网络层 | 包、分组 | IP包、IP数据包、IP分组 |
| 数据链路层 | 帧 | 以太网帧,包含帧头、载荷和帧尾 |
| 物理层 | 比特 | 转换为光电信号传播 |
max_udp_payload_size 限制端点传输的UDP载荷的大小PMTU指IP数据包的最大尺寸,包括IP头部、UDP头部和UDP载荷