TCP首部格式

wireshark sn编号 wireshark包序号_Wireshark

  源端口号、目的端口号:用于寻找发端和收端应用进程。这两个值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个TCP连接,在网络编程中,一般一个IP地址和一个端口号组合称为一个套接字(socket)。 
  序号:用来标识从TCP发端向TCP收端发送的数据字节流,它表示在这个报文段中的的第一个数据字节。在tcp中tcp用序号对每个字节进行计数
  确认序号:包含发送确认的一端所期望收到的下一个序号。确认序号=序号+数据字节数+ 1
  首部长度:用于记录tcp数据报首部的长度,一般为20字节,实际值为首部长度除以4。 
  URG: 紧急指针( urgent pointer)有效。 
  ACK: 确认序号有效。 
  PSH: 接收方应该尽快将这个报文段交给应用层。 
  RST: 重建连接。 
  SYN: 同步序号用来发起一个连接。 
  FIN: 发端完成发送任务。 
  窗口大小:用于流量控制。 
  检验和:检验和覆盖了整个的 TCP报文段: TCP首部和TCP数据,与udp相似需要计算伪首部。

Wireshark抓包分析TCP结构

  利用wireshark抓取一个tcp数据包,查看其具体数据结构和实际的数据:

wireshark sn编号 wireshark包序号_wireshark sn编号_02

wireshark sn编号 wireshark包序号_wireshark sn编号_03

Wireshark抓包分析TCP3次握手

下面通过利用http应用层连接一个网络,实现tcp的3次握手和简单的数据交换过程,下面通过抓包来实际观察这个过程。

  

wireshark sn编号 wireshark包序号_Wireshark_04

  从第一行的tcp往下看,前面3个tcp包为3次握手的过程,接着http包说明成功建立连接,主机向服务器发送一个http应用请求,服务器收到请求后,返回一个tcp确认帧,接着发送一个http应答给主机,主机收到服务器的http应答数据后,又发送一个tcp确认帧,确认收到了数据。这样图中的前7个包实现了主机和服务器建立连接,并实现一次简单的数据请求应答过程。即下图所示的交互按键回显过程:

wireshark sn编号 wireshark包序号_wireshark sn编号_05

接下来是按照顺序的7个数据帧的数据结构。数据帧顺序分别为: 
  1. 主机发起一个tcp连接请求(tcp), 
  2. 服务器响应连接请求(tcp), 
  3. 主机返回ACK完成3次握手成功建立连接(tcp), 
  4. 主机发送一个http网页请求(http), 
  5. 服务器收到请求返回一个ACK帧(tcp), 
  6. 服务器根据请求发送数据到主机(http), 
  7. 主机收到服务器数据返回一个ACK帧(tcp),具体帧细节见下图:

wireshark sn编号 wireshark包序号_TCP协议_06

wireshark sn编号 wireshark包序号_抓包分析_07

wireshark sn编号 wireshark包序号_抓包分析_08

wireshark sn编号 wireshark包序号_TCP_09

wireshark sn编号 wireshark包序号_Wireshark_10

wireshark sn编号 wireshark包序号_TCP协议_11

wireshark sn编号 wireshark包序号_Wireshark_12

下面通过wireshark抓包了解具体的释放连接过程,通过断开一个连接,抓取到4个TCP帧,帧顺序依次为: 

  1. 主动关闭放发送一个FIN帧给被动方 
  2. 被动方收到关闭信息返回一个确认ACK帧 
  3. 被动方发送一个FIN帧给主动方 
  4. 主动方收到被动方的FIN关闭信息返回一个ACK帧,连接释放

下面为按照顺序的帧数据结构详细信息:

wireshark sn编号 wireshark包序号_TCP协议_13

wireshark sn编号 wireshark包序号_Wireshark_14

wireshark sn编号 wireshark包序号_TCP协议_15

wireshark sn编号 wireshark包序号_TCP协议_16

TCP的最大报文段长度
  最大报文段长度(MSS)表示TCP传往另一端的最大块数据的长度。当一个连接建立时,连接的双方都要通告各自的MSS。一般来说,MSS越大越好,因为报文段越大允许每个报文段传送的数据就越多,相对IP和TCP首部有更高的网络利用率。 
  MSS选项只能出现在SYN报文段中,所以只能在SYN=1的帧中才会有MSS选项说明报文的最大段长度。