Как маршрутизатор отслеживает соединения? Когда вы отправляете HTTP-запрос, он отправляется на маршрутизатор, который затем отправляется на другой маршрутизатор и т.д. Через Интернет; но тогда как он узнает, чтобы перейти на сервер, это порт, перенаправленный на балансировщик нагрузки? Наконец, когда пакет возвращается, как он знает, что он возвращается на компьютер, потому что пакет был отправлен обратно на маршрутизатор, а не на компьютер? Можно ли установить соединение с компьютером, управляемым маршрутизатором, снаружи этого маршрутизатора, т.е. вы можете направить пакет на компьютер, не подключенный напрямую к Интернету?
6 ответов
Маршрутизаторы соединяют сети через шлюзы или интерфейсы, проще говоря:
Do I know where this packet should go?
yes - is it one of mine?
yes - send to appropriate interface.
no - send on to next gateway
no - return a packet saying unreachable
Ваш домашний маршрутизатор будет работать с программным обеспечением для отслеживания подключений - он будет хранить список подключений, с которыми машины в вашей сети общались в Интернете. Таким образом он будет знать адреса и порты для возврата ответов.
Пакеты TCP имеют специальное поле, которое может содержать адрес исходного компьютера. Маршрутизатор использует нечто, называемое маскарадингом, для вставки своего обратного адреса, и машина назначения также включает его. Это может сэкономить немного работы на трекере подключений, но также выявить внутренние IP-адреса для удаленного сервера.
Возврат пакетов UDP, с другой стороны, зависит от модуля отслеживания соединений маршрутизатора, чтобы возвращать ответы на исходную машину. Это была трудная проблема, которую нужно было решить несколько лет назад.
Новые входящие соединения не будут иметь записей в трекере соединений, поэтому маршрутизатор не будет знать, куда его отправлять, если не будут даны конкретные инструкции по пересылке для этого типа пакета, и вы найдете во всех маршрутизаторах способ например, укажите, какой компьютер в вашей сети будет получать новые запросы на порт 80.
TCP является сложным и удивительным протоколом, управляемым состоянием, пакеты не должны проходить по одним и тем же маршрутам, могут разбиваться на более мелкие части, выходить из строя с исправлением ошибок, требующим повторной отправки отдельных пакетов, и поток данных может повторно собирались с приложениями на обоих концах, не осознавая каких-либо трудностей, если только они не слишком велики, чтобы влиять на производительность. Многие доктора наук были получены благодаря этому!
Я пытаюсь ответить на этот старый вопрос в надежде помочь кому-то искать что-то подобное. Кроме того, пожалуйста, дайте мне знать, если я сделал какие-либо ошибки.
Для передачи информации с вашего компьютера на веб-сервер в Интернете существует множество различных компонентов, устройств и алгоритмов, но мы сосредоточимся на сетевых алгоритмах, которые делают это возможным.
Я считаю, что в основном есть две интернет-технологии, которые играют самую большую роль в обеспечении потока информации между вашим компьютером и веб-сервером в Интернете. Протокол маршрутизации и NAT.
Мы сосредоточимся на IP-пакете, так как он является единицей данных, над которой работают протокол маршрутизации и NAT.
- Когда IP-пакет, отправленный вашим браузером на Интернет-сервер, достигает домашнего маршрутизатора, он проверяется, и его исходный IP-адрес изменяется с IP-адреса локальной сети исходного отправителя на публичный IP-адрес домашнего маршрутизатора, а затем направляется к месту назначения IP. Этот перевод записан в таблице соединений. Это работа NAT.
- Если пункт назначения является частью сети общего IP-адреса маршрутизатора, он отправляется на этот IP-адрес, иначе он будет сопоставлен с таблицей маршрутизации на соответствие. Если маршрутизатор не может его найти, он пересылает пакет на собственный шлюз по умолчанию. Этот процесс продолжается до тех пор, пока маршрутизатор не найдет совпадение. Это где протокол маршрутизации вступает в игру.
- Если маршрут не был найден, на исходный хост отправляется сообщение ICMP Destination Unreachable-Host Unreachable.
- Как только конечный хост найден, он принимает IP-пакеты, которые он декапсулирует, обрабатывает запрос, содержащийся в нем, и затем отправляет ответ. Ответ будет иметь в своем IP-адресе назначения IP-адрес исходного маршрутизатора.
- Ответ будет следовать тому же процессу, за которым следует запрос, пока он не достигнет отправителя. Обратите внимание, что когда пакеты проходят определенный маршрут к месту назначения, им НЕ обязательно нужно возвращаться по тому же маршруту.
- Как только он достигает IP-адреса назначения, маршрутизатор сопоставляет входящий трафик со своей таблицей соединений, выполняет обратную трансляцию и затем пересылает пакеты на соответствующий компьютер.
Так IP-пакеты передаются из браузера на целевой веб-сервер.
- Есть 4 соединения, потому что я думаю, что открытая страница использовала 4 разных запроса для создания страницы.
- Клиент, инициирующий соединение, может использовать любой доступный порт источника. Этот порт будет зарезервирован как временно используемый, пока обе машины не согласятся на закрытие соединения. IANA предлагает использовать диапазон от 49152 до 65535 для этих так называемых «эфемерных портов». Веб-серверы обычно работают на порте 80, порте по умолчанию для трафика HTTP, поэтому клиенты отправляют свои запросы на просмотр веб-страницы на этот порт.
- В домашнем роутере заплывание есть как снимок таблицы соединений роутера.
- На сервере SuperUser плавание - это снимок соединений, установленных с сервером.
Таблица соединений обеспечивает уникальность, главным образом используя комбинацию исходного IP-адреса, исходного порта, IP-адреса назначения и порта назначения. Очевидно, что наиболее важным фактором для определения уникальности является порт источника, поэтому в случае, если другой внутренний хост пытается использовать существующий порт источника, маршрутизатор меняет этот порт и отмечает, что он изменяется в таблице соединений.
Это должно ответить на все ваши вопросы, кроме этого: возможно ли установить соединение с компьютером, управляемым маршрутизатором, снаружи этого маршрутизатора, т.е. вы можете направить пакет на компьютер, не подключенный напрямую к Интернету?
Если вам известен порт NAT, используемый на маршрутизаторе для определенного IP-адреса в Интернете, и вы можете подделывать IP-пакеты и отправлять его на маршрутизатор, когда у маршрутизатора открыт порт NAT, то теоретически это должно быть возможно, но я уверен, что большинство из маршрутизаторов используют больше параметров для определения уникальности и подлинности IP-пакетов.
Я использовал следующие ссылки для построения моего ответа:
Чтобы понять маршрутизацию, сначала вы должны понимать модель OSI, а также понимать CIDR.
Это будет довольно просто:
Когда пакет покидает компьютер в стандартной домашней сети, компьютер знает, что это частная сеть, и понимает, что конечный пункт назначения находится за пределами сети из-за CIDR, и поэтому отправляет пакет на шлюз по умолчанию. Шлюз по умолчанию просматривает IP-адрес и отправляет его по цепочке маршрутизаторов, пока не достигнет целевой сети (на основе информации IP в заголовке пакета), после чего этот шлюз перенаправит его на нужный IP-адрес в сети (иногда это основано на на порт в деталях пакета, иногда просто IP, в зависимости от удаленного сервера / сети). Когда запрошенная информация отправляется обратно, ваш маршрутизатор знает, к какому компьютеру он идет, из-за порта, который был выбран для отметки сеанса, и он знает, какому частному IP принадлежит этот сеанс. В этом есть намного больше, но это довольно высокоуровневое объяснение, чтобы получить концепцию маршрутизации. Я уверен, что другие поправят меня или добавят к этому.
К чему это приводит для ответа на ваш вопрос, да, это возможно, вам нужно знать только публичный IP-адрес в конечной точке и порт, на котором должно быть установлено соединение. Маршрутизатор будет отвечать за то, чтобы знать, на какой компьютер перенаправить этот порт для доступа к серверу в частной сети (на основе правил NAT).
Вот основной обзор маршрутизации.
По сути, первое, что нужно понять, это то, что существуют различные уровни маршрутизаторов и маршрутизации.
Первый бит маршрутизации действительно выполняется вашим ПК и его таблицей маршрутизации. Часть таблицы маршрутизации включает пункт назначения 0.0.0.0, который является ловушкой для всего, что он не знает, как конкретно направить сам, поэтому он отправляет этот трафик на шлюз по умолчанию. Таблица маршрутизации отслеживает локальные сети, к которым она подключена, и для всего, о чем она не знает, она использует этот шлюз по умолчанию.
Далее ваш домашний маршрутизатор и кабельный модем. Оба схожи по природе в том, что они ОЧЕНЬ основные. Они действительно знают только о сетях, которые находятся по обе стороны от них. Они также используют таблицы маршрутизации, которые довольно просты, а также имеют одинаковый перехват всех маршрутов для всего, о чем они не знают, поэтому они могут передавать трафик.
Как только трафик попадает к вашему интернет-провайдеру и далее, вы попадаете в очень сложные маршрутизаторы, которые имеют много интерфейсов для нескольких маршрутов и имеют ОЧЕНЬ сложные таблицы маршрутизации. Эти маршрутизаторы могут стоить $ 500 000 и выше. Они в основном используют BGP (Border Gateway Protocol) для динамического обновления своих таблиц маршрутизации, чтобы они могли найти кратчайший маршрут, и, если определенный маршрутизатор на этом маршруте выходит из строя, они могут перенаправить трафик. Они регулярно общаются с другими маршрутизаторами, чтобы узнать, какие пути открыты, и обновляют свои таблицы маршрутизации на основе этого.
http://en.wikipedia.org/wiki/Border_Gateway_Protocol#Basic_update_processing
Что касается того, как трафик возвращается обратно, когда вы отправляете пакет данных, существует заголовок, который отслеживает, откуда он пришел и куда он направляется.
Я не уверен, что вы спрашивали в конце.
Я не уверен, правильно ли я это понимаю, но я выскажу свои лучшие предположения.Вы спросили: «Можно ли установить соединение с компьютером, управляемым маршрутизатором?«Я предполагаю, что вы имеете в виду удаленный доступ. Вы можете использовать что-то вроде VNC или удаленного рабочего стола или что-то подобное. Если вы говорите о двух компьютерах, подключенных через Интернет, то проверьте VPN. Если вы имеете в виду одно назначение ip от другого, то это будет соединение сервер / клиент, а через WAN это должно быть что-то вроде VPN.
Пакет TCP содержит информацию о назначении локальной сети внутри пакета.
Здесь вы говорите не о маршрутизации, а о трансляции сетевых адресов, выполняемой "брандмауэром" или маршрутизатором в сочетании с маршрутизацией. Маршрутизатор / межсетевой экран хранит таблицу состояний (сопоставление) адресов источника и назначения и портов сеансов, которые проходят через него. Обычная маршрутизация не выполняет этот перевод и не имеет состояния.