当前位置: 技术问答>linux和unix
IP,UDP,TCP的校验和计算
来源: 互联网 发布时间:2017-01-14
本文导语: 关于校验和的算法,本人知道,但是很多书上对于计算有很多不同的方式。 我看到那个TCP/IP协议上讲,IP包得校验和是只要计算IP头部就好了, 但是对于UDP,TCP需要加入伪首部计算校验和 但是很多书上并没有这样子...
关于校验和的算法,本人知道,但是很多书上对于计算有很多不同的方式。
我看到那个TCP/IP协议上讲,IP包得校验和是只要计算IP头部就好了,
但是对于UDP,TCP需要加入伪首部计算校验和
但是很多书上并没有这样子去算,是不是有问题呢
我看到那个TCP/IP协议上讲,IP包得校验和是只要计算IP头部就好了,
但是对于UDP,TCP需要加入伪首部计算校验和
但是很多书上并没有这样子去算,是不是有问题呢
|
的确,我也发现了.
网络编程里的RAW SOCKET构造IP+UDP+DATA的时候也只计算了UDP得校验和.
网络编程里的RAW SOCKET构造IP+UDP+DATA的时候也只计算了UDP得校验和.
|
不过我又发现人家的意思是算过的,网络编程638页,我先去研究研究协议.
|
我发现了,其实代码里已经计算过了.
代码里的结构体udpiphdr就是IP头+UDP头,它先清零整个udpiphdr。 然后,它先填写好伪首部的所需要的IP字段(2个IP,8位协议,16位UDP长度),然后填写UDP头的2个端口,16位UDP长度。 也就是把伪首部需要的字段都填写好,然后计算整个IP+UDP+DAta的检验和。
所谓的伪首部不过是将IP头+UDP头清零,数据追加在末尾,然后填写伪首部所需要的IP字段和UDP字段,然后计算校验和填到UDP头里。
|
IP头+UDP头全部清0,然后填写伪首部需要的IP字段和UDP需要的字段,然后对整个IP+UDP+数据做计算。
你怎么这么死板呢,0字节对校验和计算没有影响,我们只把伪首部需要的字段赋值,然后整体计算就是校验和。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。