TCP:服务器收到客户端的[SYN]后立即发送[RST, ACK]
Host_A 尝试通过 TCP 向 Host_B 发送一些数据。 Host_B 正在侦听端口 8181。Host_A 和 Host_B 都在侦听端口 8181。 Host_B 是 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 向 Host_B 发送 [SYN] 标志以建立连接。但 Host_B 不是用 [SYN, ACK] 响应而是使用 [RST, ACK] 来重置/关闭连接。这种行为总是被观察到。
我想知道在什么情况下 TCP 侦听器会发送 [RST,ACK] 来响应 [SYN]?
Host_A tries to send some data to Host_B over TCP. Host_B is listening on port 8181. Both Host_A & Host_B are Linux boxes (Red Hat Enterprise). The TCP layer is implemented using Java NIO API.
Whatever Host_A sends, Host_B is unable to receive. Sniffing the data on wire using WireShark resulted in the following log:
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
The logs show that Host_A sends a [SYN] flag to Host_B in order to establish connection. But instead of [SYN, ACK] Host_B responds with an [RST, ACK] which resets/closes the connection. This behavior is observed always.
I am wondering under what circumstance does a TCP listener sends [RST,ACK] in response to a [SYN]?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
RST, ACK
表示端口已关闭。您确定 Host_B 正在侦听正确的 IP/接口吗?另请检查您的防火墙是否有 -j REJECT --reject-with tcp-reset
RST, ACK
means the port is closed. You sure Host_B is listening on the right IP/interface?Also check your firewall for a -j REJECT --reject-with tcp-reset
这发生在我身上,因为我没有在服务器 c++ 程序中将
sockaddr_in.sin_family
设置为AF_INET
。It happened to me because I did not set
sockaddr_in.sin_family
toAF_INET
, in the server c++ program.