Quiero entender el flujo que ocurre cuando escribimos una URL en el navegador y cómo depurar si algo no funciona usando los comandos de Linux.
Respuesta1
[Quiero] entender el flujo que ocurre cuando escribimos alguna URL en el navegador.
ver por ejemplo
- MiViaje de una solicitud web
- franco¿Cuáles son los pasos detallados del modelo OSI necesarios para conectarse a un sitio web?
y como depurar
Las herramientas más útiles probablemente sean
tcpdump
.nslookup
o sus equivalentes más modernoshost
ydig
.wget
ocurl
. Lea sus páginas de manual para descubrir opciones útiles como--server-response
,--debug
,--verbose
,--no-dns-cache
Sin embargo, primero debe comprender la resolución de nombres locales porque hay servicios de nombres que pueden usarse antes que DNS (por ejemplo, archivos de hosts locales y también, en algunas configuraciones poco comunes, otros servicios de red como NBNS, YP, etc.). empezaría leyendoman resolv.conf
Respuesta2
El sistema Linux se envía con una serie de bibliotecas del sistema, incluida una implementación de sys/sockets.h
programas C que implementa elAPI de enchufes BerkeleyyPOSIXestándares. La especificación POSIX incluye la definición de unmétodollamado getaddrinfo()
que devuelve la dirección IP del host a un programa que la necesita. Cada tiempo de ejecución de programación (p. ej.Pitón,perla,PHP, etc) implementa sus propias interfaces mediante las cuales llamanobteneraddrinfo()pero la mayoría de ellos en realidad utilizan el método del kernel para procesar una solicitud de DNS.
Una conexión de sockets implica una serie de llamadas a métodos, incluidos socket(), bind(), connect(), etc. Vea mi respuestaaquísobre cómo se coordinan esas llamadas para crear una conexión de red.
La solución de problemas de resolución de DNS en el lado del cliente simplemente se reduce al Servidor y la Caché. El servidor responderá con la dirección que conoce para el destino, pero si no es la dirección que desea por cualquier motivo (geolocalización, lista negra, etc.), puede cambiar de servidor a uno que tenga la dirección que desea. Si se está conectando a un servidor con la dirección que desea, pero aún obtiene un mal resultado, puede deberse a una respuesta almacenada en caché en su host o en un enrutador o proxy de almacenamiento en caché.