Связь хост-устройства с точки зрения маски подсети и маршрутизации - PullRequest
2 голосов
/ 20 декабря 2011

Допустим, у меня есть хост-компьютер с двумя адаптерами Ethernet:

  1. Сетевой адаптер - подключен к локальной сети, автоматически получает IP-адрес.

  2. Адаптер устройства - с IP-адресом 192.168.10.1, маской подсети 255.255.255.0.

У меня также есть аппаратное устройство, подключенное к адаптеру устройства, оно работает как сервер TCP / IP и настроено с использованием IPадрес 192.168.10.2, маска подсети 255.255.255.0.

У меня есть следующее тупое правило для установления связи хост-устройства: установите обе маски подсети на 255.255.255.0 и определите IP-адреса, которые отличаются только последним компонентом.Это нормально, это работает.

Теперь я читаю всю теорию о связи TCP / IP (www.tcpipguide.com).Как мой случай можно описать с точки зрения сети, подсети, маски, маршрутизации и т. Д.?Например, хост-программа отправляет дейтаграмму UDP на 192.168.10.2, порт 1500. Как эта дейтаграмма отправляется на устройство?Какие решения приняты, какие сетевые компоненты участвуют в доставке дейтаграммы?

1 Ответ

1 голос
/ 20 декабря 2011

сетевая маска может рассматриваться как битовая маска для IP-адреса.

, если (address1 & netmask) == (address2 & netmask), то 2 IP-адреса рассматриваются в одной подсети. (это выражение можно записать разными способами ...)

маска сети - это только способ «виртуального» разделения сети: маска сети не является частью заголовка ip,и не передается по проводам.никто не знает маску сети устройства в сети, кроме самого устройства.он используется внутри стека tcp устройства для принятия некоторых базовых решений по маршрутизации.обратите внимание, что существуют другие способы определения подсети, которые могут не включать маску сети, но достигают того же результата: группировать несколько устройств в «виртуальную» сеть.

маршрутизатор, к которому подключено устройство, может даже иметь другое определение маски сети для этого же устройства: это не имеет значения, если маршрутизатор правильно маршрутизирует пакеты.маска сети используется в основном для автоматического вычисления некоторых известных адресов: например, широковещательный адрес, используемый для широковещательных пакетов udp, вычисляется из ip-адреса устройства и его маски сети.

в вашем конкретном случае :

физический маршрутизатор отсутствует, но ваш компьютер является маршрутизатором (он маршрутизирует пакеты внутри различных сетевых интерфейсов).ваш компьютер содержит таблицу маршрутизации, в которой указывается, какой исходящий интерфейс должен использовать конкретный пакет (в Windows попробуйте route print, в Linux - в качестве пользователя root, попробуйте route).

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

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

...