2011-12-20 3 views
2

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

  1. адаптер LAN - подключен к локальной сети, получает 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

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

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

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

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

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

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

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

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

+0

Спасибо. Я хочу применить эту теорию к моему конкретному случаю, описанному в вопросе. Где здесь роутер? Почему этот пакет не отправляется в ЛВС и отправляется на устройство? Мне нужно понять, как работает весь механизм подсети в этом конкретном случае. –

+0

@AlexFarber: Я дополнял свой ответ, пытаясь ответить на ваши вопросы. однако, я боюсь, что слишком много вещей, находящихся под капотом, объясняется в этом упрощенном ответе. –

+0

Отлично, спасибо! Надеюсь, вы также ответите на этот вопрос: http://stackoverflow.com/questions/8576759/understanding-of-host-route-table –

Смежные вопросы