Host_A 试图通过 TCP 向 Host_B 发送一些数据。Host_B 在端口 8181 上进行监听。两台主机都是 Linux 系统 (Red Hat Enterprise)。TCP 层使用 Java NIO API 实现。
无论 Host_A 发送什么,Host_B 都无法接收。使用 WireShark 对数据进行嗅探,结果如下:
1) Host_A (33253) > Host_B (8181): [SYN] Seq=0 Win=5840 Len=0 MSS=1460 TSV=513413781 TSER=0 WS=7
2) Host_B (8181) > Host_A (33253): [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
日志显示,Host_A 发送了一个 [SYN] 标志给 Host_B,以建立连接。但是,Host_B 没有回复 [SYN, ACK],而是发回了 [RST, ACK],从而重置/关闭连接。这种行为总是被观察到。
我想知道在何种情况下 TCP 监听程序会对 [SYN] 发送 [RST, ACK] 响应?