Ваш вопрос затрагивает сердце Интернета и само определение маршрутизации. В вашем примере Маршрутизатор D отправляет данные в Компьютер A на основе двух предпосылок:
- Было сказано отправить данные на компьютер А.
- Это уже обработанные данные с компьютера А.
Ваш сценарий предполагает первый вариант - маршрутизатор D хочет отправить на компьютер A. Но как он туда попадает? Это достигается за счет использования таблиц маршрутизации, которые совместно используются маршрутизаторами друг для друга.
Маршрутизатор C регулярно отправляет обновления всем маршрутизаторам, которые знают, включая маршрутизатор D, о том, что он «знает» сеть «192.168. *» (На самом деле - этого не произойдет, потому что эта сеть не маршрутизируется - она считается частной). игнорируйте это.) Итак, маршрутизатор D уже знает, что маршрутизатор C знает эту сеть.
Таким образом, когда данные предназначены для компьютера А, они в первую очередь адресуются сетью. Итак, Маршрутизатор D спрашивает: «Мне нужно найти сеть 192.168. *. Знаю ли я это? Нет. Знаю ли я кого-нибудь еще, кто знает? Да. Маршрутизатор C знает. Как добраться до маршрутизатора C? Через мой 2.2. 2.2 интерфейс. "
Маршрутизатор D затем отправляет данные на маршрутизатор C. Маршрутизатор C получает их и говорит: «О, у меня есть данные от маршрутизатора D, но это для сети 192.168. Я знаю эту сеть? Да, через мою сеть 192.168.1.1» И затем направляет это.
Еще предстоит проделать определенную работу по разрешению IP и MAC-адресации, но я рассматриваю маршрутизацию как таковую, а не ARP и локальные сети.
Вы заметите, что ваше первое предположение - удаленный маршрутизатор должен знать механизм маршрутизации - здесь не используется. Маршрутизатор D не заботится, использует ли маршрутизатор C EIGRP, RIP, RIPv2, OSPF или что-то еще. Все, что его волнует, это то, что он получил обновление. (Конечно, то , как он получил обновление, важно для обеспечения синхронизации между ними. Но опять же, это другая проблема.)
Ваше второе предположение - номер порта является фактором маршрутизации - также неверно. Маршрутизаторы (как правило) не нуждаются в информации о порте для принятия решений о маршрутизации. (Это немного изменилось из-за некоторых новых сетевых технологий и применяется в основном к брандмауэрам и прокси, но все же более широкое предположение все еще применяется к «истинным» маршрутизаторам.)
Продолжая ваш пример, маршрутизатор C будет пересылать данные на порт 1000 (в соответствии с вашим сценарием), поскольку на компьютере A может быть служба, ожидающая данные на этом конкретном порту. Но он знает об этом только потому, что маршрутизатор D отправил его на порт 1000. А маршрутизатор D отправляет его только на этот порт, потому что отправитель данных отправил его на маршрутизатор D на этот порт.
Я не понимаю, что вы включили программы bittorrent или P2P как отражение вопроса, который вы задаете. Те же объяснения применимы. Маршрутизаторы также могут быть настроены на запуск портов, который связывает конкретное устройство (или IP) с конкретным портом. Таким образом, когда трафик поступает в порт 1234, маршрутизаторы знают, как отправить данные на устройство ABCD. Обычно это связано с исходящим портом TCP. т.е. если я отправлю трафик через порт 7890, маршрутизатор узнает, что входящий трафик будет через порт 1234 и отправит его мне.
Но запуск порта не связан с (удаленными) решениями о маршрутизации - он относится к внутренней таблице MAC / IP, которую маршрутизатор использует для локальной сети.
Обновление / редактировать : для дальнейшего ответа и уточнения после вашего комментария. Маршрутизатор D знает компьютер A только по его IP-адресу (192.168.2.2). Но Маршрутизатор C знает Компьютер A по его IP-адресу и по MAC-адресу. MAC (Media Access Control) - это уникальный (обычно ...) 48-битный идентификатор, который определяется международным стандартом. Предполагается, что каждое устройство, подключенное к локальной сети (проводное и беспроводное), имеет уникальный MAC-адрес.
Маршрутизатор (Маршрутизатор C) связывает IP-адрес и MAC-адрес вместе в таблице (таблица MAC-адресов). Поэтому, когда трафик поступает в маршрутизатор C, и маршрутизатор понимает его «локально» для него, он выполняет поиск в таблице MAC-адресов. Затем маршрутизатор буквально изменяет информацию адресации кадра.
Он реконструирует (переписывает) информацию о назначении уровня 2, чтобы получить MAC-адрес назначения компьютера A, но сохраняет информацию об IP-адресе (уровень 3) одинаковой.
Если маршрут НЕ знает MAC-адрес. Или не имеет отношения IP-MAC в своей таблице, он делает что-то под названием ARP (протокол разрешения адресов), чтобы спросить: «Привет, все в этой сети. У вас есть этот MAC-адрес?» Или иногда - «Все, каков ваш MAC-адрес?»). Соответствующее устройство / устройства отвечает, и маршрутизатор создает свою таблицу IP-MAC.