eu quero entender o fluxo que acontece quando digitamos alguma URL no navegador e como depurar se algo não está funcionando usando comandos do Linux
Responder1
[Eu] quero entender o fluxo que acontece quando digitamos alguma URL no navegador
Veja por exemplo
- MeuJornada de uma solicitação da Web
- de FrankQuais são as etapas detalhadas do modelo OSI envolvidas na conexão a um site?
e como depurar
As ferramentas mais úteis são provavelmente
tcpdump
.nslookup
ou seus equivalentes mais modernoshost
edig
.wget
oucurl
. Leia suas páginas de manual para descobrir opções úteis como--server-response
,--debug
,--verbose
,--no-dns-cache
Você precisa entender primeiro a resolução de nomes locais, porque existem serviços de nomes que podem ser usados antes do DNS (por exemplo, arquivos de hosts locais e também em algumas configurações raras, outros serviços de rede, como NBNS, YP, etc.). eu começaria lendoman resolv.conf
Responder2
O sistema Linux vem com uma série de bibliotecas de sistema, incluindo uma implementação de sys/sockets.h
programas para C que implementa oAPI de soquetes BerkeleyePOSIXpadrões. A especificação POSIX inclui a definição de ummétodochamado getaddrinfo()
que retorna o endereço IP do host para um programa que precisa dele. Cada tempo de execução de programação (por exemploPitão,perl,php, etc) implementa suas próprias interfaces pelas quais eles chamamgetaddrinfo()mas a maioria deles realmente usa o método do kernel para processar uma solicitação de DNS.
Uma conexão de soquetes envolve várias chamadas de método, incluindo socket(), bind(), connect(), etc.aquisobre como essas chamadas são coordenadas para criar uma conexão de rede.
A solução de problemas de resolução de DNS no cliente se resume ao servidor e ao cache. O servidor responderá com o endereço que conhece para o destino, mas se não for o endereço desejado por qualquer motivo (geolocalização, lista negra, etc.), você poderá alterar os servidores para um que tenha o endereço desejado. Se você estiver se conectando a um servidor com o endereço desejado, mas ainda assim obtiver um resultado ruim, isso pode ser causado por uma resposta em cache no seu host ou upstream em um roteador ou proxy de cache.