Host_A intenta enviar datos a través de TCP Host_B. Host_B está escuchando en el puerto 8181. Tanto Host_A & Host_B son cajas de Linux (Red Hat Enterprise). La capa TCP se implementa utilizando la API Java NIO.TCP: El servidor envía [RST, ACK] inmediatamente después de recibir [SYN] del cliente
Cualquiera que sea Host_A envía, Host_B es incapaz de recibir. Oler los datos en el alambre usando WireShark resultó en el siguiente registro:
1) Host_A (33253)> Host_B (8181): [SYN] Seq = 0 Win = 5,840 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
Los registros muestran que Host_A envía una [ SYN] marca a Host_B para establecer la conexión. Pero en lugar de [SYN, ACK] Host_B responde con un [RST, ACK] que resetea/cierra la conexión. Este comportamiento se observa siempre.
Me pregunto bajo qué circunstancias puede un receptor TCP envía [RST, ACK] en respuesta a una [SYN]?
Gracias Erik. En realidad, el puerto no está cerrado. Pero descubrió que el puerto 8181 está vinculado a 127.0.0.1 en Host_B en lugar de a la IP real. Parece una mala configuración de/etc/hosts. ¿InetAddress.getByName() de Java prefiere el archivo de hosts a través de DNS? – Riyaz
Si el puerto no está vinculado al IP que le interesa, entonces está cerrado. Los puertos abiertos están representados por la tupla (dst_ip, puerto) e intenta conectarse a uno que no está vinculado. Además, las diversas implementaciones de resolución de direcciones deben comportarse en el orden especificado en '/ etc/nsswitch.conf'. –
Estoy teniendo el mismo problema. Estoy usando la herramienta gaviota, di configuración IP correcta en la configuración, pero siempre es vinculante en 127.0.0.1, ¿Qué debo hacer? – Subbu