TCP/IP Illustrated 笔记 UDP Checksum
2011-08-27 16:05
579 查看
1. 计算检验和的方法 同 3.2中计算IP header的检验和:
发送端,首先置校验和为全0,然后,每16-bit,用反码相加的方式求和(one's complement sum),对最后的和再取其反码,保存为在checksum字段;(one's complement sum 相加的时候,需要加上进位(carry);区别于two's complement sum,它会丢弃进位)
接收端,如果数据包正确,接收端的校验和为全1;
2. 如果,发送端的发送的UDP数据报中checksum字段全为0,那么说明发送端没有计算校验和。
为什么这里可以做这种决定?checksum字段全为0难道不是一个有效字段吗?通过分析0的反码的表示,和反码的加法方式(one's complement sum)就可以明白为什么可以做么做了。
下面是分析:
因为0的反码码两种形式,全0或者全1。
发送端计算获得的最后的和,如果是全0或者全1,在checksum字段都保存为全1或者全0,在接收端的one's complement sum都是全1,所以这里checksum字段选择了全1,把全0用来表示发送端没有计算校验和,这也提供了一个额外的功能,何乐而不为呢。
3.2 10.8
参考:http://www.netfor2.com/checksum.html
发送端,首先置校验和为全0,然后,每16-bit,用反码相加的方式求和(one's complement sum),对最后的和再取其反码,保存为在checksum字段;(one's complement sum 相加的时候,需要加上进位(carry);区别于two's complement sum,它会丢弃进位)
接收端,如果数据包正确,接收端的校验和为全1;
2. 如果,发送端的发送的UDP数据报中checksum字段全为0,那么说明发送端没有计算校验和。
为什么这里可以做这种决定?checksum字段全为0难道不是一个有效字段吗?通过分析0的反码的表示,和反码的加法方式(one's complement sum)就可以明白为什么可以做么做了。
下面是分析:
因为0的反码码两种形式,全0或者全1。
发送端计算获得的最后的和,如果是全0或者全1,在checksum字段都保存为全1或者全0,在接收端的one's complement sum都是全1,所以这里checksum字段选择了全1,把全0用来表示发送端没有计算校验和,这也提供了一个额外的功能,何乐而不为呢。
3.2 10.8
参考:http://www.netfor2.com/checksum.html
相关文章推荐
- How to Calculate IP/TCP/UDP Checksum
- TCP/IP Illustrated vol1 笔记 RIP OSPF
- TCP/IP笔记 三.运输层(1)——UDP,TCP
- Java TCP/IP Socket 编程 笔记(三)—UDP的例子
- TCP/IP Illustrated vol1 笔记 Broadcasting and Multicasting
- TCP/IP Illustrated vol1 笔记 2MSL Wait State
- How to Calculate IP/TCP/UDP Checksum–Part 3 Usage Example and Validation
- IP/TCP/UDP checksum
- TCP/IP illustrated 阅读笔记(三) IP协议
- TCP/IP Illustrated 笔记 CIDR
- TCP/IP illustrated 阅读笔记(六) ICMP协议
- DPDK 使用网卡ip/tcp/udp checksum offload
- TCP/IP笔记(六)TCP与UDP
- TCP/IP笔记二:IP头部/UDP/TCP校验和的计算
- IP/TCP/UDP中Checksum的计算
- 计算ICMP,IP,UDP,TCP报头部分中的checksum
- TCP/IP笔记(六)TCP与UDP
- http笔记(三)--IP、TCP、UDP
- TCP/IP Illustrated 笔记 IP Fragmentation
- 《TCP/IP具体解释卷2:实现》笔记--UDP:用户数据报协议