用户数据报协议和IP分片

用户数据报协议和IP分片

UDP协议的特点:

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

UDP整体的封装格式:

用户数据报协议和IP分片_第1张图片
在IPV4中协议字段值为17来标识UDP协议。

UDP首部格式

用户数据报协议和IP分片_第2张图片
(1)源端口:源端口是可选的,如果数据报的发送者不要求对方回复信息,源端口可被置成0
(2)目的端口:端口号在不同的传输协议之间是独立的,两个完全不同的服务器可以使用相同的端口号和IP地址,只要他们使用不同的传输协议即可。
(3)UDP长度:UDP头部+UDP数据,这个字段最小值为8(只包含头部,没有数据部分)。UDP数据报长度可以为奇数个字节。而校验和算法只相加16位字节数(总是偶数字节),所以当UDP数据报长度为奇数字节时,需要在后面添加一个值为0的填充字节。这个填充字节仅仅是为了计算校验和用的,并没有实质含义,这个填充的字节也不会被传送出去。

UDP校验和

(1)UDP校验和是一个端到端的传输层校验和,覆盖UDP头部,UDP数据和一个伪头部。
(2)由初始的发送方计算得到,由最终的目的方校验。在传送中不会被修改(除非经过一个NAT,因为经过NAT之后,IP层的源IP地址改变,传输层的端口号会改变)

注:在IP数据报中的16位首部校验和,只检验IP首部部分,每经过一个路由器,都会被重新计算,因为TTL字段值会发生变化,
在计算UDP校验和时,IPV4衍生出12字节的伪头部,IPV6衍生出40字节的伪头部,这个伪头部也是虚的,只是为了校验和的计算,不会被传送出去

UDP校验和格式

用户数据报协议和IP分片_第3张图片
UDP计算校验和的步骤
(1)把伪首部添加到UDP上;
(2)计算初始时是需要将检验和字段添零的;
(3)把所有位划分为16位(2字节)的字
(4)把所有16位的字相加,如果遇到进位,则将高于16字节的进位部分的值加到最低位上
(5)将所有字相加得到的结果应该为一个16位的数,将该数取反则可以得到检验和

UDP-Lite

UDP-Lite是一种新的协议,与传统的UDP协议的不同之处?
传统的UDP协议是对数据部分进行完整的校验,如果其中的一些位发生了变化,那么整个数据包都有可能被丢弃,在某些情况下,丢掉这个包的代价是非常大的,尤其当包比较大的时候。在UDP-Lite协议中,一个数据包到底需不需要对数据部分进行校验,或者是校验多少位都是由用户控制的,并且UDP-Lite协议就是用UDP协议的长度字段来表示其校验覆盖的范围,所以当UDP-Lite协议的校验覆盖范围等于整个UDP数据包的长度时,UDP-Lite产生的包和传统的UDP包一模一样。

UDP-Lite头部格式

用户数据报协议和IP分片_第4张图片
注意:校验覆盖的范围为:
当其值为0时,表示对整个UDP-Lite数据包进行校验。
当其值>=8时,表示对UDP-Lite包的前多少个字节进行校验。
其他值是非法的,包括超过了UDP-Lite数据包大小的值

TCP校验和格式

用户数据报协议和IP分片_第5张图片
IP数据报只检验IP头部,UDP,TCP检验的是首部和数据部分。

IP分片和重组

(1)当IP层接受到一个要发送的IP数据报时,IP层应该要判断数据报应该从哪个本地接口发送出去,所以要查找转发表以及要求的MTU是多少,IP比较接口要求的MTU与数据报的大小,如果数据报太大,需要进行分片。
(2)对于IPV4,分片可以在原始发送方主机和端到端路径上的任何中间路由器上进行;而IPv6中的分片只允许在源主机上进行。
(3)当一个IP数据报被分片,直到它到达最终的目的地才会被重组。
(4)IP分片由ipv4头部中的标识,分片偏移和MF字段控制
用户数据报协议和IP分片_第6张图片
(1)16位标识:发送端发送的每份IP标识字段,是一个唯一值,无论怎么分片,标识值都是一样的
(2)CU位:为0
(3)DF位:不分片位,当DF=1,不分片,默认DF=0
(4)MF位:更多的分片,当MF=1,后面还有分片,这不是最后一片,当MF=0,这就是最后一个分片。
注:对于传输层来说,并不知道IP层是如何分片,只知道UDP发送数据包是1500,接收方收到的也是1500,(因为在以太网,最大能传输的数据帧的大小为1500)具体IP是如何分片的并不关心。而对于IP层来说,是根据片偏移,将分片的IP数据报串起来。
(1)例子:UDP的总长度为3000,因为还要加上IP头部(20字节),所以总长度为3020,因为UDP数据报最大为1500,需要分三片,每个分片都必须包含IP头部,又增加40个字节,所以总共长度为3060
(2)片偏移的计算:(分片大小—IPV4头部大小)/8(因为片偏移以8为单位)
(3)分片步骤如下图所示:
用户数据报协议和IP分片_第7张图片
第一个分片:总长度1500
偏移:0
MF位:1
UDP头部只在第一个分片中存在片
用户数据报协议和IP分片_第8张图片
第二个分片:总长度1500
偏移:185(第一个分片1500-IP头部20=1480,1480/8=185)
MF位:1
用户数据报协议和IP分片_第9张图片
第三个分片:总长度60
偏移:370(第一个分片1500-IP头部20=1480,1480/8=185,185+185=370,因为每个片偏移都是相对原始数据报而言的)
MF位:0(最后一个分片)

你可能感兴趣的:(用户数据报协议和IP分片)