Host_A пытается отправить некоторые данные в Host_B через TCP. 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 отправляет [RST, ACK] в ответ на [SYN]?