是否有任何 TCP 段的 SYN 位和 ACK 位都为 0?

网络工程 通讯协议
2021-07-20 02:47:18

所以我在某处读到没有这样的 TCP 段,SYN 和 ACK 都为 0 是不可能的,我想检查它是否正确

如果该段不是握手的第一段(在这种情况下 ACK=0 和 SYN=1),那么我们是否总是将 ACK 设置为 1?如果是这样,为什么?

如果有这样的 TCP 段,那么它是什么类型的段,是普通数据段还是...?

1个回答

正如你所说,握手是SYN,SYN/ACK,然后是ACK,所以握手中总是设置SYN和/或ACK。

握手之后,每个段都会从其他主机接收到 ACK 数据,因此 ACK 将始终被设置。

当连接关闭时,发送 FIN 并且这些也包含 ACK。

所以在正常的启动、数据传输和关闭序列下,总是设置ACK或SYN。

一个例外是 RST - 这些可以被发送以拒绝连接。在这种情况下,它不会确认发送方正在发送的任何内容,它只是想告诉发送方停止,因此在这种情况下,RST 可以在没有 ACK 的情况下发送(显然没有 SYN)。