TCP报文的格式

1.TCP Header(图片来源)

2.

(1)源端口和目的端口

各占2个字节,16比特的端口号加上32比特的IP地址.

(2)序号

占4个字节。序号范围是[0,2^32-1]共2^32(即4294967296)个序号,序号使用mod 2^32运算,每个字节都按顺序编号.

(3)确认号

占4个字节,指出接收端主机希望受到对方的下一报文段的数据的第一个字节的序号.

(4)数据偏移

占4个字节,表示数据开始的地方离TCP报文段的起始处有多远。这实际上就是TCP报文段首部的长度。由于首部长度不固定,因此数据偏移字段是必要的。

(5)保留

占6个字节,供今后使用,目前置为0。

(6)紧急URG(URGent)

当URG=1时,表明此报文应尽快传送,而不要按原来的排队顺序来传送。与“紧急指针”字段配合使用,紧急指针指出在本报文段中的紧急数据的最后一个字节的序号,使接收方可以知道紧急数据共有多长.

(7) 确认ACK

只有当ACK=1时,确认序号字段才有意义,当ACK=0时,确认号无效,TCP规定,在建立连接后所有传送的报文段都必须ACK置为1

(8)推送PSH(PuSH)

当PSH=1时,表明请求远地TCP将本报文段立即传送给其应用层,而不要等到整个缓存都填满了之后再向上交付。

(9)复位RST(ReSeT)

当RST=1时,表明出现严重差错,必须释放连接,然后再重建传输连接。复位比特还用来拒绝一个非法的报文段或拒绝打开一个连接.

(10)同步SYN(SYNchronization)

在建立连接时使用,当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,在发回的报文段中使SYN=1和ACK=1。因此,SYN=1表示这是一个连接请求或连接接受报文,而ACK的值用来区分是哪一种报文.

(11)终止FIN(FINis,意思是“完”,“终”)

用来释放一个连接,当FIN=1时,表明欲发送的字节串已经发完,并要求释放传输连接

(12)窗口

占2字节,表示报文段发送方的接收窗口,单位为字节。此窗口告诉对方,“在未收到我的确认时,你能够发送的数据的字节数至多是此窗口的大小。”

通知窗口advertised window:接收端根据其接收能力许诺的窗口值,是来自接收端的流量控制。接收端将通知窗口的值放在TCP报文的首部中,传送给对方。

拥塞窗口congestion window:是发送端根据网络拥塞情况得出的窗口值,是来自发送端的流量控制。

(13)检验和

占2个字节,覆盖了整个的TCP报文段:TCP首部和TCP数据。这是一个强制性的字段,由发端计算和存储,由收端进行验证。

(14)紧急指针

占2个字节,紧急指针仅在URG=1时,才有意义,它指出本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据),因此,紧急指针指出了紧急数据的末尾在报文段中的位置,当所有紧急数据都处理完时,TCP就会告诉应用程序恢复到正常操作,值得注意的是,即使窗口为0时,也可以发送紧急数据

(15)选项

允许每台主机设定能够接受的最大TCP载荷能力(缺省536字节)

时间: 2024-10-10 14:17:24

TCP报文的格式的相关文章

TCP三次握手及TCP连接状态 TCP报文首部格式

建立TCP连接时的TCP三次握手和断开TCP连接时的4次挥手整体过程如下图: 开个玩笑 ACK: TCP协议规定,只有ACK=1时有效,连接建立后所有发送的报文ACK必须为1 SYN(SYNchronization同步):在连接建立用来同步序号.当SYN=1而ACK=0时,表明这是一个连接请求报文.对方若同意建立连接,则应在响应报文中使用SYN=1 ACK=1因此,SYN置1表示这是一个连接请求或连接接受报文 FIN(FINIS)即完,终结的意思,用来释放一个连接.当FIN=1时,表明此报文段发

TCP报文结构和长短连接

参考博文: https://www.cnblogs.com/onlysun/p/4520553.html https://blog.csdn.net/zxy987872674/article/details/52653101 一.报文结构介绍 在开始讲TCP连接过程时,还是先看看TCP报文的格式如图1所示.IP数据报此时由IP头部+TCP头部+TCP数据组成.不带选项的TCP头部是20字节长,而带选项的,TCP头部最长可达60字节.常见的选项包括最大的大小(MSS),时间戳(传输控制时使用).窗

IP包、TCP报文、UDP数据段格式的汇总

一.IP包格式 IP数据包是一种可变长分组,它由首部和数据负载两部分组成.首部长度一般为20-60字节(Byte),其中后40字节是可选的,长度不固定,前20字节格式为固定.数据负载部分的长度一般可变,整个IP数据包的最大长度为65535B. 1.版本号(Version) 长度为4位(bit),IP v4的值为0100,IP v6的值为0110. 2.首部长度 指的是IP包头长度,用4位(bit)表示,十进制值就是[0,15],一个IP包前20个字节是必有的,后40个字节根据情况可能有可能没有.

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位,用来表示报文首部

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

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

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

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

TCP报文格式

TCP(Transmission Control Protocol)传输控制协议是一种面向连接的.可靠的.基于字节流的传输层协议 TCP报文格式: 源端口号(2字节): d5 df(54751) 目的端口号(2字节): 22 b8(8888) TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接 序号(4字节): 37 59 56 75 用来标识TCP发端向TCP收端发送的数据字节流 确认序号(4字节): 由于该报文为SYN报文,ACK标志为0,故没有确认序号

TCP之报文首部格式

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

UDP与TCP报文格式,字段意义

UDP报文 1.UDP有两个字段:数据字段和首部字段. 首部字段 首部字段很简单,只有8个字节,由4个字段组成,每个字段的长度都是两个字节. 1)源端口:源端口号.在需要对方回信时选用.不需要时可用全0. 2)目的端口:目的端口号.这在终点交付报文时必须要使用到. 3)长度: UDP用户数据报的长度,其最小值是8(仅有首部). 4)校验和:检测UDP用户数据报在传输中是否有错.有错就丢弃. 2.要注意的地方 UDP首部中校验和的计算方法有些特殊.在计算校验和时,要在UDP用户数据报之前增加12个