Первый пакет, который будет отправлен при запуске просмотра

StackOverflow https://stackoverflow.com/questions/666864

Вопрос

Представьте себе пользователя, сидящего за компьютером, подключенным к Ethernet.У него открыт браузер.Он набирает "www.google.com" в адресной строке и нажимает ввод.

Теперь скажите мне, какой первый пакет появится в Ethernet.

Я нашел этот вопрос здесь: Вопросы для интервью по программированию сокетов и многопоточности

Поскольку я не специалист по сетевому взаимодействию, я хотел бы услышать ответ (я бы предположил, что это "Это зависит" ;) ).

С помощью такого инструмента, как Wireshark, я, очевидно, могу проверить поведение своих собственных компьютеров.Я хотел бы знать, являются ли пакеты, которые я вижу (напримерARP, DNS, VRRP) одинаковы в каждой конфигурации ethernet (зависит ли это от операционной системы?водитель?браузер даже :)?) и в каких условиях они появляются.Находясь на канальном уровне передачи данных, может быть, это даже зависит от физической сети (подключенной к концентратору / коммутатору / маршрутизатору)?

Это было полезно?

Решение

Ответы, в которых говорится об использовании ARP для поиска DNS-сервера, как правило, неверны.

В частности, разрешение IP-адресов для внесетевых IP-адресов является никогда выполняется с помощью ARP, и маршрутизатор не несет ответственности за ответ на такой ARP-запрос.

Маршрутизация вне сети выполняется клиент машина, знающая, какие IP-адреса находятся в локальных подсетях, к которым она подключена.Если запрошенный IP-адрес не является локальным, то клиентский компьютер обращается к своей таблице маршрутизации, чтобы узнать, на какой шлюз отправить пакет.

Следовательно, в большинстве случаев Первый отправленный пакет будет представлять собой ARP-запрос на поиск MAC-адреса шлюза по умолчанию, если его еще нет в ARP-кэше.

Только после этого он может отправить DNS-запрос через шлюз.В этом случае пакет отправляется с IP-адресом DNS-сервера в поле IP destination, но с MAC-адресом шлюза в пакете ethernet.

Другие советы

Вы всегда можете скачать проволочная колючка и взгляните сами.


Хотя бы для того, чтобы испортить веселье.

Предполагая, что IP-адрес хоста не кэширован, а MAC-адрес DNS-сервера не кэширован, первое, что будет отправлено, будет широковещательная рассылка ARP сообщение о попытке узнать MAC-адрес DNS-сервера (на который маршрутизатор ответит своим собственный адрес).

Далее имя хоста будет определено с помощью DNS.Затем возвращенный IP-адрес будет разрешен с помощью ARP (снова маршрутизатор ответит своим собственным адресом), и, наконец, HTTP-сообщение действительно будет отправлено.

На самом деле, это зависит от множества начальных условий, которые вы оставили неуказанными.

  1. Предполагая, что компьютер работает под управлением операционной системы, содержащей локальный распознаватель кэширования DNS (у меня есть), первое, что происходит перед отправкой любых пакетов, - это поиск IP-адреса в кэше.Это сложно, потому что "www.google.com" не является полным доменным именем, т.е.в нем отсутствует конечная точка, поэтому распознаватель DNS сначала примет все записи, уже имеющиеся в его кэше, которые соответствуют списку доменов поиска.Например, если в списке поисковых доменов указано "example.com.", за которым следует "yoyodyne.com.", то будут использоваться кэшированные ресурсы, соответствующие именам "www.google.com.example.com." "www.google.com.yoyodyne.com." и, наконец, "www.google.com.", если они доступны.Также обратите внимание:если веб-браузер является одним из наиболее популярных, а на ПК установлена достаточно современная операционная система, и хост имеет по крайней мере один сетевой интерфейс с присвоенным IPv6-адресом глобальной области действия (и хост находится в сети, где www.google.com имеет записи AAAA в своем DNS-горизонте), тогда удаленный адрес сервера может быть IPv6, а не IPv4.Это будет важно позже.

  2. Если удаленный адрес веб-сервера Google был локально кэширован в DNS, а кэш ARP / ND6 содержит запись для адреса IPv4 / IPv6 (соответственно) маршрутизатора по умолчанию, то первым переданным пакетом будет пакет TCP SYN, полученный с адреса интерфейса, подключенного к маршрутизатору, и предназначенный для кэшированного удаленного адреса IPv4 / IPv6.В качестве альтернативы, маршрутизатор по умолчанию может быть доступен по какому-либо туннелю уровня 2 или уровня 3, и в этом случае пакет SYN будет соответствующим образом инкапсулирован.

  3. Если удаленный адрес веб-сервера Google был нет локально кэшируется, тогда хосту сначала нужно будет последовательно запрашивать записи A и / или AAAA в списке поиска домена DNS, пока не будет получен положительный ответ.Если первый адрес сервера разрешения DNS в конфигурации преобразователя находится в одном из локальных диапазонов подсети IPv4 или в локально подключенном префиксе IPv6 с битом L = 1, установленным в объявлении маршрутизатора, и кэш ARP / ND6 уже содержит запись для соответствующего адреса, то первый пакет, который отправит хост, представляет собой прямой DNS-запрос либо для записи A, либо для записи AAAA, соответствующей первому полному доменному имени в списке поиска домена.В качестве альтернативы, если первый DNS-сервер не является адресуемым по ссылке, а маршрутизатор по умолчанию уже имеет запись в кэше ARP / ND6, то пакет DNS-запроса будет отправлен маршрутизатору по умолчанию для пересылки на DNS-сервер.

  4. В случае, если локальный DNS-сервер on-link или маршрутизатор по умолчанию (соответственно, как может быть в приведенном выше случае) не имеет записи в кэше ARP / ND6, тогда первый пакет, который отправит хост, является либо запросом ARP, либо запросом соседнего ICMP6 для соответствующего адреса.

О, но подождите...это еще ужаснее.Существуют хитроумные случаи, когда первым пакетом, отправляемым хостом, может быть запрос LLMNR, инициация IKE или...или...или...насколько тебя на самом деле все это волнует, бакару?

Это зависит

Все правильно понял.Например.содержит ли локальный DNS-кэш этот адрес?Если нет, то первым делом, скорее всего, будет поиск по DNS.

Если имени хоста нет ни в кэше DNS, ни в файле hosts, первый пакет отправится в DNS.

В противном случае первым пакетом будет HTTP GET.

Что ж, что бы вы ни пытались сделать, первое, что происходит, - это некоторые данные, связанные с протоколом Ethernet.Примечательно, что адаптеры Ethernet должны решить, доступна ли шина Ethernet (поэтому здесь происходит некоторое обнаружение столкновений).

Трудно ответить на ваш вопрос, потому что это во многом зависит от типа используемой вами сети Ethernet.Более подробную информацию о передаче данных по Ethernet можно найти здесь здесь и здесь

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top