当前位置: 技术问答>linux和unix
关于socket的sk_buff,如何判断这个sk_buff是不是完整的?
来源: 互联网 发布时间:2016-08-13
本文导语: 程序接到一个sk_buff,他可能是TCP包UDP包或者ICMP包,那怎么判断,比如我收到的TCP包可能是不完整的? | IP协议头中的16位校验和只针对IP头,ICMP协议头的16为校验和针对整个ICMP报文。 计算方...
程序接到一个sk_buff,他可能是TCP包UDP包或者ICMP包,那怎么判断,比如我收到的TCP包可能是不完整的?
|
IP协议头中的16位校验和只针对IP头,ICMP协议头的16为校验和针对整个ICMP报文。
计算方法:首先将校验和字段值为0,然后按16bit为单位,将每个16bit取反然后求和。
校验时同样以16bit为单位,将各个16bit取反然后求和,如果结果为0xffff(1111 1111 1111 1111b),则校验和正确。
内核里有现成的校验和校验函数。
计算方法:首先将校验和字段值为0,然后按16bit为单位,将每个16bit取反然后求和。
校验时同样以16bit为单位,将各个16bit取反然后求和,如果结果为0xffff(1111 1111 1111 1111b),则校验和正确。
内核里有现成的校验和校验函数。