📜  TCP 标志

📅  最后修改于: 2021-09-28 09:52:27             🧑  作者: Mango

在 TCP 连接中,标志用于指示连接的特定状态或提供一些额外的有用信息,例如故障排除目的或处理对特定连接的控制。最常用的标志是“SYN”、“ACK”和“FIN” 。每个标志对应 1 位信息。

标志类型:

  • 同步 (SYN) –用于连接建立阶段的第一步或两台主机之间的 3 次握手过程。只有来自发送方和接收方的第一个数据包才应该设置此标志。这用于同步序列号,即告诉另一端他们应该接受哪个序列号。
  • 确认 (ACK) –用于确认主机成功接收的数据包。如果确认号字段包含有效的确认号,则设置该标志。
    在下图中,接收方在连接建立的第二步中发送 ACK = 1 和 SYN = 1,以告诉发送方它收到了初始数据包。
  • Finish (FIN) –用于请求连接终止,即当发送方没有更多数据时,它请求连接终止。这是发送方发送的最后一个数据包。它释放保留的资源并优雅地终止连接。
  • 重置 (RST) –如果 RST 发送方觉得 TCP 连接有问题或会话不应该存在,则用于终止连接。当数据包被发送到不期望它的特定主机时,它可以从接收方发送。

完成 (FIN) v/s 重置 (RST) –

  • 推送 (PSH) –默认情况下,传输层会等待一段时间,以便应用层发送足够的等于最大分段大小的数据,以便在网络上传输的数据包数量最小化,这对于某些应用程序(如交互式应用程序(聊天))而言是不希望的。类似地,接收端的传输层会缓存数据包,如果满足某些标准,则将其传输到应用层。

    这个问题可以通过使用 PSH 来解决。传输层设置 PSH = 1,并在收到应用层的信号后立即将段发送到网络层。接收器传输层,看到 PSH = 1 立即将数据转发到应用层。
    通常,它告诉接收器在接收到这些数据包时对其进行处理,而不是缓冲它们。

  • 紧急 (URG) –带有 URG = 1 标志的段内的数据会立即转发到应用层,即使有更多数据要提供给应用层。它用于通知接收方在处理所有其他数据包之前处理紧急数据包。当收到所有已知的紧急数据时,将通知接收方。

推送 (PSH) v/s 紧急 (URG) –