3

Я пытаюсь понять, что происходит, когда я отправляю пакет, используя сокет на транспортном уровне. Все ли пакеты, которые покидают мой компьютер, сначала отправляются в географическое местоположение, указанное моим провайдером? Тогда передается ли мой пакет туннелями, принадлежащими моему провайдеру, пока он не попадет в один, связанный напрямую с сервером происхождения? На каком этапе он достигает DNS? Если домен не преобразуется в IP, пока он не покинет мой дом, как мой маршрутизатор узнает, что он содержит пакеты, предназначенные для передачи по локальной сети?

Извините, если я звучу наивно, я просто читаю спецификацию HTTP RFC и пытаюсь связать символы на экране с реальными событиями. Все предположения, которые я делаю, являются выводами без каких-либо оснований для реального понимания. Простой язык будет предпочтительным, метафоры будут выдающимися :)

4 ответа4

3

Это больше вопрос транспортного уровня. Детали могут быть объяснены немного больше, понимая модель OSI. Я делаю это различие, потому что модель OSI имеет physical layer , поэтому, когда вы спрашиваете «... на физическом уровне», эти слова имеют особое значение в сетевых технологиях, о которых вы, возможно, не знаете, и могут привести к некоторому путаница, если вы задали этот вопрос, скажем, сетевому администратору.

Короткий ответ на ваш вопрос заключается в том, что он покидает ваш дом и проходит через ряд маршрутизаторов (сначала у вас дома, затем у вашего провайдера, а затем у других в сетях), наконец, прибывая к месту назначения. Это практически все маршрутизаторы между вами и вашим пунктом назначения, например серия остановок по доставке пакета UPS, позволяющая вашему пакету "приблизиться" к месту назначения, по одному шагу (или "прыжку") за раз. То, какие именно маршрутизаторы обрабатывают и помогают доставить данный пакет, определяется по мере его передачи и может изменяться в любое время. Следует также сказать, что значение "сближения вашего пакета с каждым переходом" - это просто лучшее из того, что не обязательно гарантировано - TCP просто пытается быть настолько эффективным, насколько это возможно во время передачи.

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

Поэтому я указываю вам большое и довольно подробное (не предполагающее никаких знаний) объяснение TCP как серии Security Now! эпизоды, которые я бы порекомендовал как отличное введение и обзор по теме:

Эти эпизоды начинаются с объяснения того, как работает TCP, а затем с некоторыми проблемами, проблемами и возможными будущими изменениями / уточнениями, которые могут потребоваться. Все три эпизода вместе - это хорошие 3-5 часов для прослушивания, но я бы сказал, что это то, что нужно, чтобы действительно ответить на ваш вопрос несколько глубже. Слушайте столько (или мало), сколько считаете интересным.

2

DNS в основном участвует в ответе на что-то вроде gethostbyname (то есть, нахождение числового адреса, который идет с данным именем хоста). В некоторых случаях собственный стек IP вашего компьютера будет отвечать на такие вопросы, не обращаясь к DNS, обычно получая адрес из локального файла HOSTS. Это было распространено в свое время, но уже давно стало относительно редким (файлы HOSTS по-прежнему используются для тестирования, а также используются некоторыми вредоносными программами для перенаправления некоторых запросов на компьютер по выбору автора вредоносного ПО).

Когда вы отправляете на этот адрес, стек IP вашего компьютера определит, куда его отправлять. Сначала он использует маску подсети, чтобы выяснить, является ли адрес "локальным" или нет. Если он локальный, он будет использовать ARP, чтобы найти MAC-адрес Ethernet (или любой другой, но в настоящее время в основном Ethernet), на который нужно отправить пакет. Если адрес не локальный, он отправит его на адрес шлюза по умолчанию.

Предполагая, что это не локально, шлюз по умолчанию обычно будет вашим маршрутизатором. Ваш маршрутизатор отправит его на маршрутизатор интернет-провайдера, который затем отправит его другому и другому, пока не доберется туда, куда должен идти. Существует несколько протоколов (RIP, RIPv2 и т.д.) Для маршрутизаторов, которые сообщают друг другу, как доставлять пакеты из одного места в другое. Для типичного домашнего маршрутизатора все просто: все, что не является локальным, отправляется в одно место. Для более крупного маршрутизатора у интернет-провайдера все немного сложнее - у него часто будет несколько других мест, где он мог бы отправить ваш пакет. RIP (и друзья) дают достаточно информации, чтобы выбрать "правильный" (т. Е. Тот, который, вероятно, лучший выбор).

Если вы хотите увидеть, куда отправляются ваши пакеты, большинство систем предоставляют программу с именем tracert которая будет отслеживать маршрут от вашего компьютера до другого, который вы укажете.

Я вижу, что @normalocity уже опубликовал ответ. Хотя я бы остерегался одной вещи: он упоминает, что маршрутизатор приближает ваш пакет к месту назначения. Это правда, но только в виртуальном, а не физическом смысле. Например, в свое время я использовал tracert, чтобы проследить маршрут от моей машины до машины в центре города, примерно в 5 милях или около того. Хотя обе машины были в Колорадо-Спрингс, штат Колорадо, мои пакеты были направлены в Денвер, а затем в Сан-Хосе, прежде чем вернуться и добраться до другой достаточно локальной машины.

1

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

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

HTTP: поэтому, когда вы вводите www.foo.com в браузере,

  1. Ваша ОС преобразует www.foo.com в IP-адрес, связавшись с известным IP-адресом DNS-сервера.
  2. Подключается к IP-адресу www.foo.com через TCP-порт 80 и отправляет HTTP-запрос

Маршрутизация: то, как пакет достигает другого IP-адреса, является IP-маршрутизацией. Прочитайте о сетях с коммутацией пакетов, чтобы понять хоп-маршрутизацию. HTTP (TCP) и DNS-трафик маршрутизируются одинаково (маршрутизаторы не заботятся о полезной нагрузке). Просто места назначения будут другими.

0

Как работает маршрутизация

  • Получить или сгенерировать пакет, получить IP-адрес назначения
  • Просмотрите каждую запись в информационной базе пересылки (FIB) (т. Е. Таблицу маршрутов) и найдите наиболее конкретную запись, которая соответствует. более конкретный здесь означает высшее обозначение подсети CIDR. то есть запись FIB 192.168.2.1/28 будет выбрана вместо 192.168.2.1/24, если оба существуют.
  • Если в FIB есть две точные записи, выбирается запись с более низкой метрикой.
  • Если мы находим запись, которая соответствует, получите IP-адрес шлюза этой записи и отправьте пакет на этот IP.
  • Не нашли ни одного? Отправьте пакет на IP-адрес, который является шлюзом по умолчанию.
  • Более одного шлюза по умолчанию? Округлите их, или используйте первый и продолжайте использовать, пока мы не обнаружим, что он не работает, затем используйте второй (аварийное переключение)
  • Нет шлюза по умолчанию? Отбросить пакет

Обратите внимание, что:

  • Если пакет предназначен для чего-то в той же подсети, нет необходимости маршрутизировать. Таким образом, если ваш компьютер на 192.168.2.1/24 отправляет пакет на 192.168.2.2/24, он не будет отправлять его через шлюз по умолчанию или через любой маршрутизатор вообще.
  • Любой интерфейс дает нам свободный маршрут путем прямого подключения. Поэтому, если у вас есть интерфейс, настроенный на 192.168.2.1/24 (т. Е. Маска подсети 255.255.255.0), вы получите свободный маршрут.
  • Localhost напрямую связан с целями этого.
  • Если вы запускаете такие вещи, как RIP, OSPF, BGP, они могут обновить ваш FIB.

Маршрутизаторы операторского класса вашего интернет-провайдера имеют FIB, и процесс такой же. Переход от маршрутизатора к маршрутизатору, проходящий через тот же процесс, пока не будет достигнут пункт назначения или пакет не будет отброшен. Как правило, чем выше вы поднимаетесь, тем больше будет FIB, и будет больше маршрутов из таких вещей, как BGP и тому подобное.

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