所以我在某处读到没有这样的 TCP 段,SYN 和 ACK 都为 0 是不可能的,我想检查它是否正确
如果该段不是握手的第一段(在这种情况下 ACK=0 和 SYN=1),那么我们是否总是将 ACK 设置为 1?如果是这样,为什么?
如果有这样的 TCP 段,那么它是什么类型的段,是普通数据段还是...?
所以我在某处读到没有这样的 TCP 段,SYN 和 ACK 都为 0 是不可能的,我想检查它是否正确
如果该段不是握手的第一段(在这种情况下 ACK=0 和 SYN=1),那么我们是否总是将 ACK 设置为 1?如果是这样,为什么?
如果有这样的 TCP 段,那么它是什么类型的段,是普通数据段还是...?
正如你所说,握手是SYN,SYN/ACK,然后是ACK,所以握手中总是设置SYN和/或ACK。
握手之后,每个段都会从其他主机接收到 ACK 数据,因此 ACK 将始终被设置。
当连接关闭时,发送 FIN 并且这些也包含 ACK。
所以在正常的启动、数据传输和关闭序列下,总是设置ACK或SYN。
一个例外是 RST - 这些可以被发送以拒绝连接。在这种情况下,它不会确认发送方正在发送的任何内容,它只是想告诉发送方停止,因此在这种情况下,RST 可以在没有 ACK 的情况下发送(显然没有 SYN)。