1

Я хочу понять, что происходит, когда мы вводим какой-то URL в браузер и как отлаживать, если что-то не работает с помощью команд Linux

2 ответа2

2

Система Linux поставляется с рядом системных библиотек, включая реализацию sys/sockets.h для программ на C, которая реализует стандарты Berkeley Sockets API и POSIX . Спецификация POSIX включает определение метода, называемого getaddrinfo() который возвращает IP-адрес хоста программе, которая нуждается в этом. Каждая среда программирования (например, Python, perl, php и т.д.) Реализует свои собственные интерфейсы, с помощью которых они вызывают getaddrinfo (), но большинство из них фактически используют метод ядра для фактической обработки запроса DNS.

Соединение с сокетами включает в себя несколько вызовов методов, включая socket(), bind(), connect() и т.д. Смотрите мой ответ здесь о том, как эти вызовы координируются для создания сетевого соединения.

Устранение неполадок при разрешении DNS на стороне клиента сводится к серверу и кешу. Сервер ответит адресом, который он знает для получателя, но если это не тот адрес, который вы хотите по какой-либо причине (геолокация, внесение в черный список и т.д.), Вы можете изменить серверы на тот, который имеет нужный вам адрес. Если вы подключаетесь к серверу с нужным адресом, но все еще получаете неверный результат, это может быть вызвано кэшированным ответом на вашем хосте или восходящим потоком на маршрутизаторе или прокси-сервере кэширования.

2

[Я] хочу понять, что происходит, когда мы вводим какой-то URL в браузер

Смотри например

и как отлаживать

Наиболее полезные инструменты, вероятно,

  • tcpdump .
  • nslookup или его более современные аналоги host and dig .
  • wget или curl . Прочитайте их справочные страницы, чтобы узнать полезные опции, такие как
    • --server-response ,
    • --debug ,
    • --verbose ,
    • --no-dns-cache

Сначала вам нужно понять локальное разрешение имен, поскольку существуют службы имен, которые могут использоваться до DNS (например, локальные файлы хостов, а также в некоторых редких настройках, другие сетевые службы, такие как NBNS, YP и т.д.). Я бы начал с чтения man resolv.conf

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .