TCP校验和
作者:互联网
检验和目的
目的是为了发现TCP首部和数据在发送端到接收端之间发生的任何改动。如果接收方检测到检验和有差错,则TCP段会被直接丢弃。
TCP在计算检验和时,要加上一个12字节的伪首部。
伪首部
伪首部共有12字节,包含IP首部的一些字段,有如下信息:32位源IP地址、32位目的IP地址、8位保留字节(置0)、8位传输层协议号(TCP是6,UDP是17)、16位TCP报文长度(TCP首部+数据)。
伪首部是为了增加TCP校验和的检错能力:通过伪首部的目的IP地址来检查TCP报文是否收错了、通过伪首部的传输层协议号来检查传输层协议是否选对了。
检验和计算过程
TCP首部校验和计算三部分:TCP首部+TCP数据+TCP伪首部。
接收端:
将所有反码相加,高位叠加到低位, 如计算结果的16位中每一位都为1,则正确,否则说明发生错误。
验证示例: 校验和 反码求和过程 以4bit 为例 发送端计算: 数据: 1000 0100 校验和 0000 则反码:0111 1011 1111 叠加: 0111+1011+1111 = 0010 0001 高于4bit的, 叠加到低4位 0001 + 0010 = 0011 即为校验和 接收端计算: 数据: 1000 0100 检验和 0011 反码: 0111 1011 1100 叠加: 0111 + 1011 +1100 = 0001 1110 叠加为4bit为1111. 全为1,则正确
参考:https://www.cnblogs.com/zxiner/p/7203192.html
参考:https://www.bilibili.com/video/BV154411j7gm?from=search&seid=6568804261643548157&spm_id_from=333.337.0.0
标签:叠加,反码,字节,首部,校验,TCP 来源: https://www.cnblogs.com/fanfuhu/p/15777059.html