![当 tcp 数据包无法完成三次握手时会发生什么?](https://linux22.com/image/580350/%E5%BD%93%20tcp%20%E6%95%B0%E6%8D%AE%E5%8C%85%E6%97%A0%E6%B3%95%E5%AE%8C%E6%88%90%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B%E6%97%B6%E4%BC%9A%E5%8F%91%E7%94%9F%E4%BB%80%E4%B9%88%EF%BC%9F.png)
虚拟专用服务器的防火墙。
我正在研究如何防止 FIN 扫描,这让我开始思考后果。
很多人都在使用这条规则:
-p tcp --tcp 标志 FIN、SYN、RST、PSH、ACK、URG FIN -j DROP
因此,当有人向我发送带有 FIN = 1 的数据包时,我无法发送 FIN/ACK。
这似乎不太可能,但这是否意味着我建立的连接不会停止?
这是如何工作的?我的连接是否保持活动状态?如果是,持续多长时间?
当有人关闭浏览器时,这实际上是如何工作的?它向我的服务器发送 FIN,我的服务器回复 FIN/ACK ...但浏览器无法接收,对吗?谁收到了数据包,它发往哪里?
那么如果……远程机器向我的服务器发送一个 SYN,我的回复是 SYN/ACK,假设我没有收到 ACK,那么我的服务器要等待多长时间?
未完成的三次握手有名字吗?谢谢。
答案1
未完成的三次握手有什么名字吗
这被称为半开联系。
因此,当有人向我发送带有 FIN = 1 的数据包时,我无法发送 FIN/ACK。这似乎不太可能,但这是否意味着我建立的连接不会停止?这是如何工作的?我的连接是否保持活动状态?如果是,持续多长时间?
它最终会超时。另请参阅 TIME_WAIT 状态。