TCP报文段首部格式--详讲

目录

一、介绍Tcp报文段首部:

二、详解:


一、介绍TCP报文段首部:

TCP报文段主要是两个部分,一个是首部一个是数据部分。首部除了20字节的固定部分还包括选项(长度可变的字段)和填充字段(保证Tcp首部字节为4的整数倍,一般填充的都是全0字段)。

 图示:


二、详解:

1、端口号:占的位数是16位,那么源端和目的端口占的位数为32位即4个字节。

2、序号(seq)位:占的是4字节。

序号:在一个TCP连接中传送的字节流中的的每一个字节都按照顺序编号,本字节段表示本报文段所发送数据的第一个字节的序号

例如:报文的第一个字节是几对应的序号字段就是几。


3、确认号:占4字节,期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,则证明到序号N-1为止的所有数据都以正确收到。

首先报文段在链路上传输

接着报文段到达接收端的TCP缓存中

接收方要向发送方回复一个新的确认,这样发送方才会发送一个新的报文段。

现在接收端收到123的报文段之后会向发送方返回一个确认报文段,确认报文段的首部会有一个确认号字段(是期待对方下一个要发送报文段的第一个字节),现在收到123,接下来希望收到4字节,那么确认号字段就是4,并且4字节之前的已成功收到。


4、数据偏移首部长度):TCP报文段的数据起始处距离TCP报文段的起始处有多远,4B位单位,即1个数值是4B。

5、六个控制位:

(1)紧急位URG:URG=1时,标明此报文段中有紧急数据,是高级优先的数据,应尽快传送,不用在缓存中排队,配合紧急指针字段使用。

(2)确认位ACK:ACK=1时确认号有效,在连接建立后所有传达的报文段都必须把ACK置为1。

(3)推送位PSH:PSH=1时,接收方尽快交付接受应用进程,不再等到缓存填满再向上交付。

(4)复位RST:RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立传输链接,也可以拒绝非法的连接。

(5)同步位SYN:SYN = 1时,表明是一个连接请求/连接接受报文。

(6)终止位FIN:FIN=1时,表明此报文段发送方数据已发完,要求释放连接。

6、窗口:指的是发送本报文段的一方的接收窗口,即现在允许对方发送的数据量。

7、检验和:检验首部+数据,检验时要加上12字节的伪首部,第四个字段(协议字段)为6。

8、紧急指针:URG=1时才有意义,指出本报文段中紧急数据的字节数。

9、选项:是一个长度可变的字段,最大报文段长度MSS(每一个TCP报文段中数据字段的长度)、窗口扩大、时间戳、选择确认....

10、填充:如果最后选项字段不是4字节的整数倍那么就填充到4字节的整数倍。

 

注:参考资料--王道考研。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TCP报文首部格式如下: ``` 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Port | Destination Port | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Acknowledgment Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | Reserved|C|E|U|A|P|R|S|F| | | Offset| |W|C|R|C|S|S|Y|I| Window | | | |R|E|G|K|H|T|N|N| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | Urgent Pointer | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ``` 其中各字的含义如下: - 源端口(Source Port):发送端口号,16位,标识发送方的应用程序或进程。 - 目的端口(Destination Port):目标端口号,16位,标识接收方的应用程序或进程。 - 序列号(Sequence Number):32位,用于对发送的数据进行排序和重组。 - 确认号(Acknowledgment Number):32位,用于确认接收到的数据。 - 数据偏移(Data Offset):4位,表示TCP首部的长度,以32位字为单位。 - 保留字(Reserved):6位,保留供将来使用。 - 控制位(Flags):6位,包括6个标志位,分别为CWR、ECE、URG、ACK、PSH和RST,用于控制TCP连接的建立、维护和关闭。 - 窗口(Window):16位,表示发送端还能接收的数据量。 - 校验和(Checksum):16位,用于检验TCP首部和数据的完整性。 - 紧急指针(Urgent Pointer):16位,仅在URG标志置位时有效,表示紧急数据的偏移量。 - 选项(Options):可选字,用于扩展TCP功能。 - 填充(Padding):用于使TCP首部的长度为32位的整数倍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值