TCP检验和

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

(全文完)

时间: 2024-11-03 00:54:51

TCP检验和的相关文章

如何计算UDP/TCP检验和checksum

一.下面的图是一个UDP的检验和所需要用到的所有信息,包括三个部分:1.UDP伪首部2.UDP首部3.UDP的数据部分(切记不要遗漏该部分,否则就~吐血了~) 首先解释下伪首部的概念,伪首部包含IP首部一些字段.其目的是让UDP两次检查数据是否已经正确到达目的地,只是单纯为了做校验用的.还有一个概念十分重要,那就是16位UDP总长度,请注意该长度不是报文的总长度,而只是UDP(包括UDP头和数据部分)的总长度(之前就是因为这个概念没弄清楚,走了不少弯路,吐血~~). 二.计算检验和(checks

【转】TCP/IP协议栈及OSI参考模型详解

OSI参考模型 OSI RM:开放系统互连参考模型(open systeminterconnection reference model) OSI参考模型具有以下优点: 简化了相关的网络操作: 提供设备间的兼容性和标准接口: 促进标准化工作: 结构上可以分隔: 易于实现和维护. 20世纪60年代以来,计算机网络得到了飞速增长.各大厂商为了在数据通信网络领域占据主导地    位,纷纷推出了各自的网络架构体系和标准,如IBM公司的SNA,Novell IPX/SPX协议,Apple公司的AppleT

TCP包头

每发一个包,不论大小协议头会占用一定的空间 TCP头20字节,IP头20字节,MAC头14字节,共54字节 //Mac头部,总长度14字节  typedef struct _eth_hdr  {      unsigned char dstmac[6]; //目标mac地址      unsigned char srcmac[6]; //源mac地址      unsigned short eth_type; //以太网类型  }eth_hdr;  //IP头部,总长度20字节  typedef

《TCP/IP详解卷1:协议》第17、18章 TCP:传输控制协议(1)-读书笔记

章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(1)-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(2)-读书笔记 <TCP/IP详解卷1:协议>第4章 ARP:地址解析协议-读书笔记 <TCP/IP详解卷1:协议>第5章 RARP:逆地址解析协议-读书笔记 <TCP/IP详解卷1:协

TCP/IP协议栈及OSI参考模型详解

OSI参考模型 OSI RM:开放系统互连参考模型(open systeminterconnection reference model) OSI参考模型具有以下优点: 简化了相关的网络操作: 提供设备间的兼容性和标准接口: 促进标准化工作: 结构上可以分隔: 易于实现和维护. 20世纪60年代以来,计算机网络得到了飞速增长.各大厂商为了在数据通信网络领域占据主导地    位,纷纷推出了各自的网络架构体系和标准,如IBM公司的SNA,Novell IPX/SPX协议,Apple公司的AppleT

TCP/IP协议头部结构体

http://blog.csdn.net/ithomer/article/details/5662383 IP和TCP都20字节,IP存放地址,TCP存放端口.TCP还存放一些用于TCP特定协议的内容,序列号.确认号 // i386 is little_endian. #ifndef LITTLE_ENDIAN #define LITTLE_ENDIAN (1) //BYTE ORDER #else #error Redefine LITTLE_ORDER #endif //Mac头部,总长度1

【jc1-1】TCP/IP协议栈及OSI参考模型详解

OSI参考模型 OSI RM:开放系统互连参考模型(open systeminterconnection reference model) OSI参考模型具有以下优点: 简化了相关的网络操作: 提供设备间的兼容性和标准接口: 促进标准化工作: 结构上可以分隔: 易于实现和维护. 20世纪60年代以来,计算机网络得到了飞速增长.各大厂商为了在数据通信网络领域占据主导地    位,纷纷推出了各自的网络架构体系和标准,如IBM公司的SNA,Novell IPX/SPX协议,Apple公司的AppleT

TCP/IP协议详解 卷一:协议 17章、TCP传输控制协议

1.TCP服务 尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务.TCP提供一种面向连接的.可靠的字节流服务. (1)面向连接 两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接.过程与打电话相似,先拨号振铃,等待对方摘机说"喂",然后才说明是谁. 说明:在一个TCP连接中,仅有两方彼此进行通信.广播和多播不能用于TCP. (2)可靠性 TCP通过下列方式来提供可靠性: 1)应用数据被分割成TCP认为最适

第十七章 TCP传输控制协议

TCP的服务 TCP通过下列方式来提供可靠性: ? 应用数据被分割成 TCP认为最适合发送的数据块.这和 UDP完全不同,应用程序产生的数据报长度将保持不变.由 TCP传递给 IP的信息单位称为报文段或段( segment). ? 当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段.如果不能 及时收到一个确认,将重发这个报文段. ? 当TCP收到发自 TCP连接另一端的数据,它将发送一个确认.这个确认不是立即发送,通常将推迟几分之一秒. ? TCP将保持它首部和数据的检验和.这