当客户端不响应 TCP 中使用的三向握手的 SYN-ACK 段(第二步)时(在服务器上)会发生什么

网络工程 通讯协议
2021-07-31 10:25:18

读后为什么我们需要 3 次握手?为什么不只是2路?我知道我们需要 ACK 否则服务器不知道客户端是否收到过 SYN,客户端收到它很重要。一旦该 ACK 通过,现在服务器知道它可以向客户端发送数据包。它还知道客户端知道这一点,因此它可以立即开始发送数据。握手完成。我们有一个很好的渠道。

但我想知道客户端是否永远不会发送最终的 ACK 段(第三步)。那什么服务器呢?是内存不足还是其他原因,因为据我所知,当客户端向服务器发送 SYN 段时,服务器会保留内存以保存状态信息?如果没有来自客户端的 ACK,服务器将如何处理此状态信息?

1个回答

如果没有收到最终的 ack,服务器将定期重新传输同步确认并最终超时并放弃连接条目。

这确实会消耗一些 RAM,并且是 DoS 攻击的对象。但是,有可用的操作系统缓解措施 - 在 linux minisocks 中用于减少占用空间,在某个时间点之后,您可以转换到在此期间不需要任何服务器端状态的 syncookies。(但它们有缺点)。