TCP/UDP伪头部检验

用Socket发送自定义TCP数据包:
pseudo header”这里翻译为伪真报头
传输控制协议(TCP),旨在为IP互联网上的 一对设备之间提供可靠的数据传输。需要许多工作来确保数据分发,主要集中的问题是确保数据在传输途中不丢失。但是还有一个重要关键阻碍了数据的安全传输:数据在整个互联网传输时在TCP段存在出错的风险。

使用校验和检测传输错误
如果数据到达指定地点但是已损坏并且我们没有检测出来,这在有些时候比数据包没有到达更为糟糕。为了提供防止传输过程损坏的基本保障,TCP在其报头中包含了16bit的校验和字段。校验和背后的思想非常简单:取包含一连串的数据字节,把他们加在一起。然后跟随数据流发送这个和,并且要求接受检验这个和。在TCP中,一种特殊的方法被发送这个字段的设备计算这个校验和,相同的方法也将在接受方接受到数据后用来检验这个和,以确保没有任何错误。
TCP使用的校验和计算方法和普通的校验和算法有些区别:传统的校验和方法在于对所有字节提供保护,并且检测出那些字段可能存在的任何错误。TCP的设计者想要的就是这种每个字节的保护,但也想要防止其他类型的问题。

增加检验误差范围:TCP伪真报头
为此,TCP检验和计算做了一个改变。这个特殊的计算方法最终也被UDP所采用。除了对TCP段所有真实数据做校验和计算以外,一个12bit的TCP伪真报头在校验和计算之前被创建。这个报头包含来自TCP报头和IP数据包中的重要信息将被封装成TCP字段。
要计算TCP段报头的Checksum域的值,TCP伪真包头首先被创建和放置,从逻辑上讲,放在TCP段之前。然后对所有TCP段以及TCP伪真报头进行校验和计算。最后TCP伪真报头被丢弃。
当TCP段到达目的地,接收方的软件将执行同样的计算,它将根据TCP段中的真实数据

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值