Mi computadora envía el puerto icmp al servidor dns como inalcanzable
También encontré este problema hoy. Busqué la respuesta en línea y encontré tu pregunta. . Así que lo analicé yo mismo y me di a mí y a LZ una respuesta.
El motivo principal es:
Inicias una petición al servidor DNS, pero por alguna razón, cuando el DNS te responde, has cerrado el puerto, así que lo envías al servidor nuevamente. Se recibió un mensaje de puerto ICMP inalcanzable.
Este es el experimento que hice:
IP local: 10.184.155.63
DNS: 202.120.2.101
Cuando trabajo normalmente Cuando navego por Internet, ocasionalmente capturo paquetes ICMP que se comunican con DNS. Este es el análisis de Wireshark:
Además de indicar el encabezado Tipo:3, el paquete ICMP también tiene una carga útil adjunta que indica "Porque usted envió". Se envió un paquete UDP al puerto 52291, pero no abrí el 52291, así que lo rechacé".
Obviamente el servidor DNS no está lo suficientemente ocupado para enviarle paquetes UDP, obviamente porque ya ha enviado paquetes al servidor DNS antes.
Así que utilicé el filtro de Wireshark: udp.port == 52291
Obtén tres paquetes:
Mira atentamente la información del paquete. Las acciones respectivas son:<. /p>
p>
Esta máquina solicita la dirección IP de talk.google.com desde DNS
DNS responde con la dirección IP del nombre de dominio
Esta La máquina dice: Puerto inalcanzable, jajajaja. . .
La conclusión es que esta máquina cerró inmediatamente el puerto para enviar paquetes UDP después de enviar la solicitud DNS y el paquete UDP devuelto fue rechazado.
Pero ¿a qué se debe esto? Obviamente, la diferencia entre la solicitud y la respuesta es de solo 0,01 segundos, por lo que el navegador no tiene motivos para interrumpir la solicitud.
Esto está relacionado con el mecanismo de implementación de solicitudes DNS del sistema. Solicitará simultáneamente el registro AAAA y el registro A de un nombre de dominio (direcciones ipv6 e ipv4 respectivamente). Cierre inmediatamente los dos puertos UDP de consulta, de modo que los paquetes DNS que aparecen más tarde se informen con errores de puerto ICMP inalcanzable.
Usando nuevamente la comunicación ICMP como verificación:
El último texto verde sobre fondo negro es un paquete ICMP, y los demás son paquetes DNS.
Obviamente, ICMP rechazó la solicitud con ID 0x13ae (cuadro rojo).
Cuando fui a la Enciclopedia Baidu, el navegador envió dos solicitudes DNS al servidor casi simultáneamente (el primer y segundo paquete en la imagen), solicitando el registro AAAA y el registro A de baike.baidu.com respectivamente. .
Pero el registro AAAA recibió una respuesta rápidamente (el tercer elemento, cuadro verde, corresponde a la solicitud del registro AAAA), y el contenido de la respuesta fue CNAME (alias) bk.baidu.com y bk. n.shifen.com (Significa que baike.baidu.com que estás buscando es en realidad bk.baidu.com o bk.n.shifen.com)
Entonces la máquina solicitó inmediatamente bk.n .shifen.com nuevamente registro AAAA y registro A (Artículos 5 y 6)
Después de eso, se devuelve el registro A sobre baike.baidu.com Obviamente, hemos obtenido esta información del registro AAAA. Se puede decir que esta máquina está en Después de recibir la respuesta CNAME, ambos puertos de solicitud se cerraron, lo que provocó el error de que la respuesta DNS tardía no pudo acceder al puerto de destino.
Bien, después de escribir durante tanto tiempo, finalmente descubrí la razón por la cual los paquetes ICMP aparecen en las solicitudes DNS. Espero que LZ y otros que me seguirán puedan resolver el misterio en sus corazones~
.