Предположим, что в одной сети существуют два шлюза. Если я правильно понимаю, таблица IP-маршрутизации на компьютере отправителя определяет, какие пакеты маршрутизируются через какой шлюз.
Таблицы IP-маршрутизации содержат IP-адрес шлюза.
Как этот IP-адрес шлюза используется при отправке IP-пакетов?
TL; DR: адрес шлюза хранится только в кадре Ethernet, который содержит этот пакет TCP / IP.
Трафик server-> switch-> router, а также server-> switch-> server traffic - вот где IP-адресация фактически не играет никакой значимой роли. Это мир базового протокола, скорее всего, Ethernet. Итак, это мир, основанный на MAC-адресации.
Таким образом, вам нужно только разрешить заблуждение, что шлюз по умолчанию - это IP-адрес. Это вроде как ... при запуске ... но этот параметр IP шлюза только нужно было сделать одну вещь, а именно спросить: у кого здесь есть 192.168.1.1? Ответ приходит, что это шлюз MAC 88: 99: aa: bb: cc: dd: ee: ff. (Это запрос / ответ ARP, транслятор между двумя мирами.) Пакет идет к этому MAC-адресу на уровне Ethernet, несмотря на то, что он может иметь другое место назначения на уровне IP.
Таким образом, пакет помечается для перехода к выбранному шлюзу путем кодирования его в поле «MAC-адрес назначения» кадра Ethernet. Поле определяет, какой шлюз в этой сети получит его, если есть несколько шлюзов. («Рамка» - это нижележащая капсула, в которой находится пакет или его часть.)
Заголовок IP-дейтаграммы содержит только адресную информацию источника и получателя. В зависимости от пункта назначения маршрутизатор должен знать, куда пересылать пакет дальше, и эта информация сохраняется в таблице маршрутизации.
Может быть статический маршрут информация об адресе или его подсети и шлюз по умолчанию используется для отдыха. Обычно это происходит в локальной сети: там может быть статическая маршрутизация в другие локальные сети и шлюз по умолчанию для остальных, то есть в Интернет. В случае нескольких шлюзы по умолчанию т.е. маршруты к 0.0.0.0
или ::
, активный выбирается своим Предпочтение или Метрическая стоимость.
Ситуация усложняется, когда между пунктами назначения существует несколько маршрутов, например между поставщиками услуг Интернета на уровне Интернета. Существует несколько способов обмена информацией между маршрутизаторами: Протокол маршрутной информации (ПОКОЙСЯ С МИРОМ), Сначала откройте кратчайший путь (OSPF) и Протокол пограничного шлюза (BGP). Независимо от того, как эта информация передается, таблица маршрутизации знает следующий переход, а IP-пакет знает только его конечный пункт назначения.
Краткий и простой ответ: он не кодируется в пакете или является целевым адресом Ethernet, в зависимости от того, как вы на него смотрите. Стек IP / Ethernet проверяет, какой шлюз обрабатывает IP-адрес назначения, отправляет ARP-запрос для IP-адреса шлюза, чтобы получить его MAC-адрес, а затем отправляет пакет на MAC-адрес шлюза. Затем шлюз пересылает пакет и снова делает то же самое. Это предполагает сеть Ethernet.
Думаю, я ответил на ваш вопрос. Однажды я подумал о том же. Ваш вопрос также можно интерпретировать как то, как хост, учитывая конкретную таблицу маршрутизации, решает, на какой шлюз отправить исходящий пакет.
Одна из возможностей состоит в том, что сеть сконфигурирована с использованием протокола резервирования на первом этапе (FRHP), такого как VRRP или HSRP. У FHRP есть адрес виртуального шлюза, который используют хосты, и трафик, отправляемый на виртуальный адрес, перехватывается одним из физических маршрутизаторов, который затем пересылает трафик. Если первичный маршрутизатор выходит из строя, вторичный маршрутизатор может определить это и взять на себя пересылку пакетов.
В любом случае пакеты не определяют путь, по которому они идут. Каждый пакет пересылается индивидуально и независимо от любых других пакетов на основе информации в таблице маршрутизации маршрутизатора, и пакеты в один и тот же пункт назначения из одного и того же источника могут идти по разным путям, если таблица маршрутизации изменяется.
Маршрутизаторы изучают маршруты тремя способами:
Конечно, одна деталь, на которую обращают внимание, - совпадает ли маршрут. Если я отправляю на 192.0.2.55/24 и для трафика доступен маршрут до 10.55.0.0/16, то этот маршрут игнорируется, потому что он не применяется.
Следующим критерием, на который обычно обращают внимание, является наличие приоритета более конкретных маршрутов над более общими маршрутами. Под «конкретным» маршрутом я подразумеваю более мелкие подсети. Другими словами, большие числа при использовании нотации / CIDR и большие маски подсети при использовании нотации «маска подсети». Другими словами, сети назначения с меньшим количеством возможных адресов.
Таким образом, «шлюз по умолчанию», также известный как «шлюз последней инстанции», обычно указывает пункт назначения для всего трафика в сеть 0.0.0.0/0. Любой маршрут для меньшей сети будет «более конкретным», чем этот, и будет иметь приоритет. Итак, 192.0.2.0/24 будет иметь больший приоритет.
В-третьих, маршруты обычно имеют другое поле, называемое «метрикой», или иногда другое имя, например «приоритет». Если у вас есть несколько сетей одинакового размера, это может оказать влияние.
Эти «метрические» значения могут быть созданы автоматически (например, таким образом более высокоскоростная сеть используется для большей части трафика), но могут быть скорректированы вручную.
Где информация о шлюзе будет закодирована в отправленных IP-пакетах?
IP-пакеты не содержат никакой информации о маршрутизации, за исключением указания IP-адреса назначения. Детали маршрутизации определяются оборудованием, которое обрабатывает маршрутизацию по пути, и такие детали обычно не помещаются в IP-пакет. (Следовательно, оборудование не ищет такие детали, поскольку их там нет. Поскольку оборудование не ищет такую информацию, было бы бессмысленно пытаться включить такую информацию.)
RFC 791 стр.11 показывает таблицу в стиле "ASCII ART" информации, которая содержится в IP-пакете. После этой таблицы в этом документе показаны подробности (например, раздел «Параметры» описан на странице 15).