关于 TCP 标志组合

关于 TCP 标志组合
  1. TCP FIN 数据包中,ACK 标志始终被设置吗?

  2. 在 TCP 拆除阶段,通常会有 4 个数据包:FIN/ACK、ACK、FIN/ACK、ACK。这些数据包中是否有可能不是由 TCP 对等方发送的?

  3. 当有有效载荷时,据我所知,可以设置 PSH、ACK、FIN 等标志。设置 FIN 时,也会设置 PSH 和 ACK。当有数据有效载荷时,还有其他标志可以设置吗?

  4. 当设置 RST 时,ACK 是否始终设置?还有其他可以设置的标志吗?

答案1

TCP Xmas 攻击除了使用 FIN 和 PSH 外,还使用 ​​URG。不同的操作系统在接收此类数据包时会做出不同的反应,因此它用于操作系统指纹识别。显然,它可能会导致某些 IP 堆栈崩溃。

还值得注意的是,存在仅基于设置无效标志组合的洪水攻击。 https://www.isi.edu/~mirkovic/bench/attacks.html

根据标准,您的问题可能没有具体的答案。RFC-793,除了必须设置 ACK(但不能设置 SYN)以及与已建立的连接相对应的 SYN 和 ACK 值之外,FIN 数据包中似乎没有关于其他标志的任何细节。如果不满足这些最低标准(或堆栈确定标志组合无效),则数据包将被丢弃。

所有标准在实现方面都有未定义的方面,TCP 也不例外。一些堆栈会因 URG+FIN+PSH 而崩溃,而另一些则不会,而那些保持运行的堆栈的响应则不同,这证明了这一点。

相关内容