TCP 首部格式

《图解TCP/IP》 6.7  TCP的首部格式

TCP中没有表示包长度和数据长度的字段。可由IP层获知TCP的包长由TCP的包长可知数据的长度。

源端口号:表示发送端端口号,字段长16位。

目标端口号:表示接收端端口号,字段长度16位。

序列号:字段长32位。序列号是指发送数据的位置。每发送一次数据,就累加一次该数据字节数的大小。序列号不会从0或1开始,而是在建立连接时由计算机生成的随机数作为其初始值,通过SYN包传给接收端主机。然后再将每转发过去的字节数累加到初始值上表示数据的位置。此外,在建立连接和断开连接的时发送的SYN包和FIN包虽然并不携带数据,但是也会作为一个字节增加对应的序列号。

确认应答号:确认应答号字段长度为32位。是指下一次应该收到的数据的序列号。实际上,它是指已收到确认应答号减一为止的数据。发送端接收到这个确认应答号以后可以认为在这个序列号以前的数据都已经被正常接收。

数据偏移:该字段表示TCP所传输的数据部分应该从TCP包的哪个位开始,当然也可以把它看做TCP首部的长度。该字段长4位,单位为4字节(32位)。

保留:该字段主要是为了以后扩展时使用,其长度为4位,一般设置为0,但即使收到的包在该字段不为0,此包也不会被丢弃。

控制位:字段长为8位,每一个从左到至右分别为CWR,ECE,URG,ACK,PSH、RST、SYN、FIN。这些控制标志也叫作控制位。当它们对应位上的值为1时,具体含义如

CWR(Congestion Window Reduced):CWR标志与后面的ECE标志用于IP首部的ECN字段。ECE标志为1时,则通知对方将拥塞窗口变小。

ECE(ECN-Echo):ECE标志表示ECN-Echo。置为1会通知通信对方,从对方到这边的网络有拥塞。在收到数据包的IP首部中ECN为1时将TCP首部中的ECE设置为1。

URG(Urgent Flag):该为为1时,表示包中有需要紧急处理的数据。对于需要紧急处理的数据,会在后面的紧急指针中再进行解释。

ACK(Acknowledge Flag):该位为1时,确认应答的字段变为有效。TCP规则除了最初建立时的SYN包之外该为必须设置为1。

PSH(Push Flag):该位为1时,表示需要将受到的数据立即传输给上层的应用。PSH为0时,则不需要立即上层而是先进行缓存。

RST(Reset Flag):该位为1时表示TCP连接中出现异常必须强制断开连接。例如,一个没有被使用的端口即使发来连接请求,也无法通行。此时就可以返回一个RST设置为1的包。此外,程序宕掉或切断电源等原因导致主机重启的情况下,由于所有的连接信息将全部被初始化,所以原有的TCP通行也将不能继续进行。这种情况下,如果通信对方发送一个设置为1的RST包,就会使用心强制断开连接。

SYN(Synchronize Flag):用于建立连接。SYN为1表示希望建立连接,并在其序列号的字段进行序列号初始值的设定。

FIN(Finish Flag):该位为1时,表示今后不会再有数据发送,希望断开连接。当通信结束希望断开连接时,通信双方的主机之间就可以相互交换FIN位置为1的TCP段。每个主机又对对方的FIN包进行确认应答以后就可以断开连接。不过,主机收到FIN设置为1的TCP端以后不必马上回复一个FIN包,而是可以等到缓冲区中所有数据都已成功发送而被自动删除之后再发。

窗口大小:该字段为16位,用于通知从相同TCP首部的确认应答号所指位置开始能够接收的数据大小(8位字节)。TCP不允许发送超过此处所示大小的数据。不过,如果窗口为0,则表示可以发送窗口探测,以了解最新的窗口大小。但这个数据必须是1个字节。

校验和:TCP的校验和与UDP相似,却别在于TCP的校验和无法关闭。TCP和UDP一样在计算校验和的时候使用TCP伪首部。这个伪首部如图:

为了让其全长为16位的整数倍,需要在数据部分的最后填充0。首先将TCP校验和字段设置为0.然后以16位为单位进行1的补码和计算,再将它们的总和的1的补码和放入校验和字段。接收端在收到TCP数据段以后,从IP首部获取IP地址信息构造TCP伪首部,再进行校验和计算。由于校验和字段里保存着除本字段以外其他部分的和的补码值,因此如果计算校验和字段在内的所有数据的16位和以后,得出的结果是“16位全部为1 ”,说明收到的数据是正确的。

紧急指针:该字段长为16位。只有在URG控制位为1时有效。该字段的数值表示本报文中国紧急数据的指针。正确来讲,从数据部分的首位到紧急指针所指示的位置为止为紧急数据。因此也可以说紧急指针指出了紧急数据的末尾在报文段中的位置。如何处理紧急数据属于应用的问题。一般在暂时中断通信,或中断通信的情况下使用。例如在Web浏览器中点击停止按钮,或者使用TELNET输入Ctrl+C时都会有URG为1的包。此外,紧急指针也用左表示数据流分段的标志。

选项:选项字段用于提高TCP的传输性能。因为根据数据偏移(首部长度)进行控制,所以其长度最大为40字节。另外,选项字段尽量调整其为32位的整数倍。具有代表性的选项部分:

类型2的MSS选项用于在建立连接时决定最大段长度的情况。这选项用于大部分操作系统。

类型3的窗口扩大,是一个用来改善TCP吞吐量的选项。TCP首部中窗口字段只有16位。因此在TCP包的往返时间(RTT)内,只能发送最大64K字节的数据。如果采用了该选项,窗口的最大值可以扩展到1G字节。因此,即使在一个RTT较长的网络环境中,也能达到较高的吞吐量。

原文地址:https://www.cnblogs.com/alway-july/p/9100351.html

时间: 2024-08-30 01:05:57

TCP 首部格式的相关文章

计算机网络(8)-----TCP报文段的首部格式

TCP报文段的首部格式 概述 TCP报文段首部的前20个字节是固定的,因此TCP首部的最小长度是20字节. 源端口和目标端口 各占2个字节,分别写入源端口号和目的端口号. 序列号 占4个字节,表示本报文段所发送数据的第一个字节的编号.在TCP连接中所传送的字节流的每一个字节都会按顺序编号.由于序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再次从 0 开始. 确认号 占4个字节,是期望收到对方写一个报文段的第一个数据字节的序号.若确认号=N,则表明:到序号N-1为止的所有数据都已正

TCP学习(1)--报文段首部格式

1.TCP的主要特点 (1).TCP的面向连接的运输层协议: (2).每一条TCP连接只能有两个端点(endpoint),是点到点之间的连接,每一个端点称为套接字(socket),套接字socket=(IP地址:端口号). (3).TCP提供可靠支付的服务: (4).TCP提供双工通信: (5).面向字节流. 2.TCP报文段的首部格式 尽管TCP是面向字节流,但是TCP传送的数据单元却是报文段.一个TCP报文段分为首部和数据两个部分,而TCP的全部功能都体现在它首部中各字段的作用. TCP报文

TCP之报文首部格式

TCP虽然是面向字节流的,但TCP传输的数据单元却是报文段: 一个TCP报文段分为数据和首部两部分,而TCP的全部功能都体现在它首部中各字段的作用: TCP报文段首部前20个字节是固定的,后面有4n个字节是根据需要而增加的选项(n是整数).因此TCP首部的最小长度是20个字节. TCP首部中各字段的含义如下: 源端口和目的端口:各占2个字节.端口是传输层和应用层的服务接口.传输层的复用和分用功能都有要通过端口才能实现. 序号:占4个字节,序号范围是(0,2^32 - 1),共2^32(即4294

TCP报文格式和三次握手——三次握手三个tcp包(header+data),此外,TCP 报文段中的数据部分是可选的,在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部。

from:https://blog.csdn.net/mary19920410/article/details/58030147 TCP报文是TCP层传输的数据单元,也叫报文段. 1.端口号:用来标识同一台计算机的不同的应用进程. 1)源端口:源端口和IP地址的作用是标识报文的返回地址. 2)目的端口:端口指明接收方计算机上的应用程序接口. TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接. 2.序号和确认号:是TCP可靠传输的关键部分.序号是本报文段发送

IP首部格式[转载]

TCP 传输首部是 IP首部,所以把IP首部格式 拿过来研究下,看IP首部解码过程: 来源:51CTO博客,地址:http://lihuan.blog.51cto.com/4391550/799911 原文如下: IP包首部格式 IPv4首部一般是20字节长.在以太网帧中,IPv4包首部紧跟着以太网帧首部,同时以太网帧首部中的协议类型值设置为080016. IPv4提供不同,大部分是很少用的选项,使得IPv4包首部最长可扩展到60字节(总是4个字节4个字节的扩展) 0 4 8 12 16 19

TCP报文格式,TCP的三次握手和四次挥手&hosts文件

1.TCP报文格式 TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接 序号(4字节=32位): 37 59 56 75 用来标识TCP发端向TCP收端发送的数据字节流 确认序号(4字节=32位): 由于该报文为SYN报文,ACK标志为0,故没有确认序号(ACK标志为1时确认序号才有效)TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1 一旦连接建立,该值将始终发送(同ACK标志) 头部长度:该字段占用4位,用来表示报文首部

IP数据报首部格式

IP协议提供不可靠.无连接的数据报传送服务. 不可靠:尽力而为地传输,不保证IP数据报能成功到达目的地. 无连接:每一个数据报之间相互独立地进行路由选择,可不按发送顺序接收. IP首部格式例如以下: 以下就用这幅图结合Wireshark来分析个字段含义. 这次截取的是DNS数据报,它位于应用层. 首先看一下整个IP首部的内容: 相应的原始数据: 以下按字段分别进行说明. 4位版本号表示眼下的协议版本号号.这里使用的是IPv4,当然值就是4啦. 4为首部长度表示首部包括多少个4字节.相应Heade

IP协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)

目录 IP协议首部格式 地址解析协议 ARP 逆向地址解析协议 RARP 网际控制报文协议 ICMP 网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit:最低位在右边,记为31 bit 版本: 占 4 位,指 IP 协议的版本目前的 IP 协议版本号为 4 (即 IPv4) 首部长度: 占4位,可表示的最大数值是15个单位(一个单位为 4 字节)因此IP 的首部长度的最大值是 60 字节 区分服务: 占8位,用来获得更好的服务,在旧标准中叫做服务类型,但

转_结合Wireshark捕获分组深入理解TCP/IP协议栈之TCP协议(TCP报文格式+三次握手实例)

转自: http://blog.chinaunix.net/uid-9112803-id-3212041.html 摘要: 本文简单介绍了TCP面向连接理论知识,详细讲述了TCP报文各个字段含义,并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析. 一.概述 TCP是面向连接的可靠传输协议,两个进程互发数据之前需要建立连接,这里的连接只不过是端系统中分配的一些缓存和状态变量,中间的分组交换机不维护任何连接状态信息.连接建立整个过程如下(即三次握手协议): 首先,客户机发送一个特