tcp header

tcp_header

详细解释

源端口号(16位),标识主机上发起传送的应用程序;

目的端口(16位)标识主机上传送要到达的应用程序。

源端和目的端的端口号,用于寻找发端和收端应用进程。

这两个值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个TCP连接。

一个IP地址和一个端口号有时也称为一个插口(socket),

插口对(socket pair)(包含客户IP地址、客户端口号、服务器 IP地址和服务器端口号的四元组 )

可唯一确定互联网络中每个TCP连接的双方。

IP+TCP端口唯一确定一个TCP连接。

TCP协议通过使用"端口"来标识源端和目标端的应用进程。

端口号可以使用0到65535之间的任何数字。

在收到服务请求时,操作系统动态地为客户端的应用程序分配端口号。

在服务器端,每种服务在"众所周知的端口"(Well-Know Port)为用户提供服务。

顺序号字段:占32比特。用来标识从TCP源端向TCP目标端发送的数据字节流,它表示在这个报文段中的第一个数据字节。

确认号字段:占32比特。只有ACK标志为1时,确认号字段才有效。它包含目标端所期望收到源端的下一个数据字节。

头部长度字段:占4比特。给出头部占32比特的数目。没有任何选项字段的TCP头部长度为20字节;最多可以有60字节的TCP头部。

预留:由跟在数据偏移字段后的6位构成,预留位通常为0.

标志位字段(U、A、P、R、S、F):占6比特。各比特的含义如下:

  • URG:紧急指针(urgent pointer)有效。
  • ACK:确认序号有效。
  • PSH:接收方应该尽快将这个报文段交给应用层。
  • RST:重建连接。
  • SYN:发起一个连接。
  • FIN:释放一个连接。

窗口大小字段:占16比特。此字段用来进行流量控制。单位为字节数,这个值是本机期望一次接收的字节数。

TCP校验和字段:占16比特。对整个TCP报文段,即TCP头部和TCP数据进行校验和计算,并由目标端进行验证。

紧急指针字段:占16比特。它是一个偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。

选项字段:占32比特。可能包括"窗口扩大因子"、"时间戳"等选项。

数据:TCP 报文段中的数据部分是可选的。在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部。

如果一方没有数据要发送,也使用没有任何数据的首部来确认收到的数据。

在处理超时的许多情况中,也会发送不带任何数据的报文段。