UDP头部结构,UDP校验和计算

Udp:用户数据报协议
特点:
1.无连接,传输数据时不需要建立链接
2.尽最大努力传输,不可靠
3.面向报文的,接收到应用程序的数据时,只往数据前面加一个UDP头部就传给网络层,收到网络层传来的UDP数据时,只把UDP头部去掉就扔给应用层进程。不论数据大小都是一次发送。
4.没有拥塞控制,不管链路的畅通情况,都以不变的速率发送报文。
5.UDP支持一对一,一对多,多对一,多对多的交互通信
6.UDP的头部简单,占用资源少(8字节)
UDP头部结构UDP头部结构,UDP校验和计算_第1张图片
源端口 :源端口号。在需要对方回信时用,不需要时可用全0.
目的端口: 目的端口号。在终点交付报文时使用。
长度: UDP数据报长度。最小值为8字节(只有首部)
校验和:检测UDP数据报文在传输过程中是否有错,错误就丢弃。
伪首部:这个不属于UDP首部,既不向下传递,也不向上递交,仅仅是用来求校验和的。伪首部的第3字节全为0;第4字段是IP首部中的协议字段的值(协议号)。第5字段是UDP用户数据报的长度。因此,这样的校验和既检查了UDP用户数据报的源端口和目的端口以及UDP用户数据报的数据部分,又检查了IP数据报的源IP地址和目的地址。
UDP校验和计算方法:
UDP的校验是首部和数据一块校验的,而IP校验只校验IP头部

发送方:
1.看数据报是不是偶数字节数,若不是添加一个全0的字节填充(该字节不发送)。
2.将校验和字段置为全0
3.将伪首部以及UDP用户数据报看成由许多16位的字串起来的。
4.进行二进制反码求和,结果填入校验和字段发送。
接收方:
将接收到的UDP报文连同伪首部以及可能的填充全0字节一起,按二进制反码求这些16位字的和。无差错时其结果为全1.否则出现差错丢弃。

这里我们假定一个15字节的数据报。
UDP头部结构,UDP校验和计算_第2张图片
10011001 00010011 --153.19
00001000 01101000 --8.104
10101011 00000011 --171.3
00001110 00001011 --14.11
00000000 00010001–0和17
00000000 00001111–15
00000100 00111111–1087
00000000 00001101–13
00000000 00001111–15
00000000 00000000–全0(校验和)
01010100 01000101–数据
01010011 01010100–数据
01001001 01001110–数据
01000111 00000000–数据和填充项
——————————————————
二进制求和??????
UDP头部结构,UDP校验和计算_第3张图片
所以和为10010110 11101101—>取反01101001 00010010就是校验和。

你可能感兴趣的:(UDP头部结构,UDP校验和计算)