博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TCP检验和
阅读量:5757 次
发布时间:2019-06-18

本文共 1103 字,大约阅读时间需要 3 分钟。

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伪首部。

发送端:
        首先,把伪首部、TCP报头、TCP数据分为16位的字,如果总长度为奇数个字节,则在最后增添一个位都为0的字节。
        把TCP报头中的校验和字段置为0。
        其次,用反码相加法(对每16bit进行二进制反码求和)累加所有的16位字(进位也要累加,进位则将高位叠加到低位)。
        最后,将上述结果作为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,则正确
 

UDP检验和

        基本过程和TCP检验和相同,不同的是UDP的伪首部中8位传输层协议号是17而TCP是6。如下图所示

 

IP检验和

        IP首部中的检验和只覆盖IP的首部,不覆盖IP数据报中的任何数据

 

三者检验和的异同

        TCP和UDP检验和是一个端到端的检验和,由发送端计算,然后由接收端验证。

        TCP和UDP检验和覆盖首部和数据,而IP首部中的检验和只覆盖IP的首部,不覆盖IP数据报中的任何数据。

        TCP的检验和是必需的,而UDP的检验和是可选的。

        TCP和UDP计算检验和时,都要加上一个12字节的伪首部。

 

(全文完)

 

 

转载于:https://www.cnblogs.com/zxiner/p/7203192.html

你可能感兴趣的文章
同步手绘板——将View的内容映射成Bitmap转图片导出
查看>>
【Android游戏开发之十】(优化处理)详细剖析Android Traceview 效率检视工具!分析程序运行速度!并讲解两种创建SDcard方式!...
查看>>
微信小程序之wx.navigateback往回携带参数
查看>>
陌陌和请吃饭之类的应用,你要是能玩转,那就厉害了
查看>>
递归的运行机制简单理解
查看>>
汉字转阿斯克马值
查看>>
Java 栈与堆简介
查看>>
【supervisord】部署单进程服务的利器
查看>>
zabbix oracle监控插件orabbix部署安装
查看>>
python3 通过qq 服务器 发送邮件
查看>>
java 多线程踩过的坑
查看>>
部署Replica Sets及查看相关配置
查看>>
倒序显示数组(从右往左)
查看>>
文献综述二:UML技术在行业资源平台系统建模中的应用
查看>>
阿里云服务器 linux下载 jdk
查看>>
Swift 学习 用 swift 调用 oc
查看>>
第三章 Python 的容器: 列表、元组、字典与集合
查看>>
微信小程序开发 -- 点击右上角实现转发功能
查看>>
与MS Project相关的两个项目
查看>>
[转载]ASP.NET MVC Music Store教程(1):概述和新项目
查看>>