web-dev-qa-db-ja.com

TCP:サーバーは、クライアントから[SYN]を受信した直後に[RST、ACK]を送信します

Host_Aは、TCPを介してHost_Bにデータを送信しようとします。 Host_Bはポート8181でリッスンしています。Host_Aと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が[SYN]フラグをHost_Bに送信することを示しています。しかし、[SYN、ACK]の代わりに、Host_Bは接続をリセット/クローズする[RST、ACK]で応答します。この動作は常に観察されます。

どのような状況下でTCPリスナーが[SYN]に応答して[RST、ACK]を送信するのでしょうか?]

21
Riyaz

RST, ACKは、ポートが閉じていることを意味します。 Host_Bが正しいIP /インターフェイスでリッスンしていることを確認しますか?

また、ファイアウォールで-j REJECT --reject-with tcp-resetを確認します

33
Erik