TCP/IP详解卷一之用户数据报协议(UDP)和IP分片

1 UDP协议特点
—UDP是一种保留消息边界的简单的面向数据报的传输层协议。
—UDP提供了一种无连接的、不可靠的服务。
—UDP提供差错检测:端到端传输层校验和。
—缺点:UDP不提供差错纠正、队列管理、重复消除、流量控制和拥塞控制。因此,它的应用程序需要自己实现这些保护功能。
—优点:
· 它比其他的传输协议使用更少的开销。
· 应用程序可选择自己的重传单元的能力。
—广播和组播更多直接使用像UDP这样的无连接传输。

2 UDP头部
—UDP头部共8字节,如下图所示:
TCP/IP详解卷一之用户数据报协议(UDP)和IP分片_第1张图片
—源端口号:2字节,可选,如果数据报的发送者不要求对方回复的话,它可被置为0。
—目的端口号:2字节,帮助分离从IP层进入的数据。
—端口号在不同的传输协议之间是独立的。
—长度字段:2字节,UDP头部和UDP数据的总长度,以字节为单位,该字段的值应与从IP层提供的信息(IPv4头部中的数据报总长度或IPv6头部中的负载长度)计算得到的长度是一致的。
—校验和字段:2字节,IPv4中可选,IPv6中必须使用。

3 UDP校验和
—是一个端到端的传输层校验和。
—包括UDP头部、UDP数据和一个伪头部。
—由初始的发送方计算得到,并在最终目的方校验。
—UDP校验和在IPv4中是可选的,而在IPv6中使用时,校验和的计算与使用是强制的。
—与IPv4头部中的校验和的比较:
· UDP校验和在传输过程中不会被修改(除非通过一个NAT),而IPv4头部中的校验和在每跳都要被重新计算(因为IPv4头部的TTL字段值在数据报被路由器转发时会减少)。
· UDP校验和覆盖UDP头部和数据以及一个伪头部,而IPv4校验和只覆盖整个头部。
—计算UDP校验和时应注意:
· UDP数据报长度可以是奇数个字节,而校验和算法只相加16位字。因此,UDP的处理会在奇数长度的数据报尾部追加一个值为0的填充(虚)字节,用于校验和的计算与验证(该填充字节实际不会被传送)。
· UDP计算它的校验和时包含了衍生自IPv4头部的字段的一个12字节的伪头部(或衍生自IPv6头部的字段的一个40字节的伪头部),该伪头部也是虚的,它的目的只是用于校验和的计算,而实际上不会被传送出去。
—伪头部包含来自IP头部的源和目的地址以及协议或下一个头部字段,用于让UDP层验证数据是否已经到达正确的目的地。
—计算校验和时应覆盖的字段如下:

4 IPv6分组大小对UDP的影响
(1)在IPv6里,最小MTU大小是1280字节,与在IPv4中要求的需要所有主机支持的最小大小为576字节不同。
(2)IPv6支持超长数据报(大于65535字节的分组)。由于UDP头部的长度字段只有16位,因此,对于超长数据报,UDP长度字段会被置为0。

5 IP分片
—IPv4中的分片可以在原始发送方主机和端到端路径上的任何中间路由器上进行;而IPv6中的分片只允许在源主机上进行。
—IP数据报分片的重组只会在目的主机上进行,原因如下:
· 在网络中不进行重组要比重组更能减轻路由器转发软件的负担。
· 同一数据报的不同分片可能经由不同的路径到达相同的目的地。
—超时重传:一个数据报的任何一个分片首先到达时,IP层就会启动一个计时器。
—分片机制的不足:
· 路由器的处理负荷加重;
· 在分片处理中,一旦某一个分片丢失,会造成整个IP数据报作废。

6 路径MTU发现
—由于分片机制的不足,而产生该技术。
**(1)路径MTU:**从发送端主机到接收端主机之间不需要分片时最大MTU的大小,也即路径中存在的所有数据链路中最小的MTU。
**(2)路径MTU发现:**从发送主机按照路径MTU的大小将数据报分片后再进行发送。
(3)优点:既可以避免在中途的路由器上进行分片处理,也可以在TCP中发送更大的包。
(4)原理:
—首先在发送端发送IP数据报时将分片标志位设置为不分片,路由器会丢包,然后通过ICMP的不可达消息将数据链路上的MTU值给发送主机;
—然后再次发送时将当前MTU设置为从ICMP中得到的值,多次发送后直至数据报成功发送给目标主机,此时的MTU值即为合适的MTU值。
(5)使用路径MTU发现在UDP和TCP区别:
—UDP:没有重发处理,发送端UDP层传过来的数据报在IP层被分片,而且所有分片到达目标主机后需要在IP层重组后再传给上层UDP;
—TCP:有重发处理,发送端TCP层会将数据报分片后再传给IP层,IP层不需要再进行分片处理,而且分片到达目标主机后不需要在IP层进行重组,可以直接传给上层TCP;
—即UDP下数据报的分片和重组是在IP层进行,TCP下数据报的分片和重组是在TCP层进行。

7 最大UDP数据报长度
—理论上,一个IPv4数据报的最大长度是65535字节,除去20字节不带选项的IPv4头部和8字节的UDP头部,一个UDP数据报的用户数据最大为65507字节。
—有两个原因使得满额数据报不能被端到端投递:
· 系统的本地协议实现可能有一些限制。许多UDP应用程序被设计成限制数据报的大小在512字节或更小以下,如DNS和DHCP。
· 接收应用程序可能没准备好去处理这么大的数据报。UDP编程接口允许应用程序指定每次一个网络的读操作完成时返回的最大字节数。

你可能感兴趣的:(计算机网络,TCP/IP,UDP,IP分片,路径MTU发现)