关于校验和(UDP,TCP,IP)

关于校验,感觉大家和我一样一直对这个概念很模糊,对一些细节还不是很了解!所以就写了一篇博客,总结一下校验和的知识,也加深一下印象!

首先TCP,UDP,IP三个协议中校验和都占16位,也就是两个字节。

UDP的校验和结算相对简单。首先UDP报文长度不是确定的,所以计算校验和前要先将报文的末尾用‘0’补齐。使报文为偶数个字节。

发送端计算校验和:

计算UDP的校验和方法是计算16位的二进制和包括UDP首部数据,将校验和字段(16位)置0,将每个16位的按位相加,第17、18位出现进位的话,将结果值重新与结果的第1,2位相加,再将所得的结果取反码,最后得到的结果即为UDP校验和,存在校验和字段中。

PS:求校验和的方法写的有点笼统,详细算法自行google二进制反码求和!

接收端验证校验和:

若传输中没有任何差错,包含之前的校验和对报文进行二进制反码求和,接收端计算的结果为全1,即报文正确,否则有错。

在这额外多说一句,一旦验证UDP报文出错时,报文在分组转发时,正常发送转发,不会被丢弃。他被丢弃的地方发生在应用层向上转发的时候。一般路由器等三层设备,不会验证其校验和!但是UDP的校验是可选的!也就是可以选择接收端是否对其进行校验!

TCP的校验和算法和UDP的基本相同!不够偶数个字节同样需要‘0’填充。求法也是将每个16位进行二进制反码求和。但是不同的地方,TCP必须进行校验,而且他有自己的一些重传机制,来确保可靠传输。

最后再说IP的校验和,检验和的算法几个协议都是相同的。唯一不同就是IP协议只验证头部。求校验和时,他并不包括数据部分!


  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值