tcp报文

发布时间 2023-04-18 17:43:21作者: 挖洞404

TCP 报文详解_测试开发-海励的博客-CSDN博客_tcp报文

1、介绍

tcp,transmission control protocol传输控制协议是一种传输层协议,向上为http/https等服务,向下由ip协议支持。

2、数据格式

(1)源端口,2字节

(2)目的端口,2字节

(3)序列号,4字节,表示本报文数据部分第一个字节的编号。在tcp连接中,传送的每个字节都会进行顺序编号

  • SYN为1时,该值为初始化序列值,用于对序列号同步,使用时对其+1
  • SYN不为1时,表示当前数据的第一个字节编号

(4)确认号,4字节。表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。其值是接收计算机即将接收到的下一个序列号,也就是下一个接收到的字节的序列号加1。

(5)数据偏移,4位,表示数据部分开始的字节,由tcp首部(包括选项)除以4得到,也可以理解为首部总长度

(6)保留4位,默认为0

(7)标志位,8位

(8)缓冲区,2字节,用来告诉TCP连接对端自己能够接收的最大数据长度。

它表示从 Ack Number 开始还可以接收多少字节的数据量,也表示当前接收端的接收窗口还有多少剩余空间。该字段可以用于 TCP 的流量控制。

(9)校验和,2字节,根据伪头部+tcp头部+tcp数据三部分计算

(10)紧急指针,2字节。urg为1时有意义,指出本数据段中未紧急数据的字节数。

(11)可选字段,必须是4字节的整倍数

3、标志位

(1)CWR

Congestion Window Reduce,拥塞窗口减少标志

用来表明它接收到了设置 ECE 标志的 TCP 包。并且,发送方收到消息之后,通过减小发送窗口的大小来降低发送速率

  • 理解:告知发送方,我方拥堵,你降低一下窗口发送速率

(2)ECE

用来在 TCP 三次握手时表明一个 TCP 端是具备 ECN (显式拥塞通告)功能的。在数据传输过程中,它也用来表明接收到的 TCP 包的 IP 头部的 ECN 被设置为 11,即网络线路拥堵。

理解:数据传输过程中,TCP包头部的ECN字段设置为11,表示网络线路拥堵

(3)URG

表示本报文段中发送的数据是否包含紧急数据。URG=1 时表示有紧急数据。当 URG=1 时,后面的紧急指针字段才有效

(4)ACK

表示前面的确认号字段是否有效。ACK=1 时表示有效。只有当 ACK=1 时,前面的确认号字段才有效。TCP 规定,连接建立后,ACK 必须为 1

(5)PSH

告诉对方收到该报文段后是否立即把数据推送给上层。如果值为 1,表示应当立即把数据提交给上层,而不是缓存起来

(6)RST

表示是否重置连接。如果 RST=1,说明 TCP 连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。

(7)SYN

在建立连接时使用,用来同步序号。

  • 当 SYN=1,ACK=0 时,表示这是一个请求建立连接的报文段;
  • 当 SYN=1,ACK=1 时,表示对方同意建立连接。
  • SYN=1 时,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中 SYN 才为 1。

(8)FIN

标记数据是否发送完毕。如果 FIN=1,表示数据已经发送完成,可以释放连接。

4、wireshark