Маршрутизация пакетов и поставка

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

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

Из-за этого проекта, когда два узла должны связаться через локальную физическую сеть, отправляющий узел должен знать адрес канального уровня узла получения, прежде чем это сможет начать отправлять пакеты. Для предоставления той информации специфичные для аппаратных средств части операционной системы используют различный, означает преобразовывать между логическим адресом (таким как IP-адрес) и физическим адресом (таким как MAC-адрес Ethernet). Механизм для выполнения этого преобразования зависит от типа сети:

Когда два узла должны связаться через большее расстояние, однако, эти протоколы не достаточны по двум причинам:

Таким образом пакеты ARP ограничиваются физической локальной сетью и интернет-маршрутизацией использования, чтобы определить, как отправить пакеты в удаленные машины. Более в частности маршрутизатор является типом инфраструктурного устройства, знающего, как отправить данные от одного диапазона IP-адресов к другому диапазону.

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

Поскольку топология сети сложна и регулярно изменение, сетевая производительность также сложна и регулярно изменяется. Например, если Вам подключили ноутбук к маршрутизатору Wi-Fi и двум настольным компьютерам, подключенным Ethernet, коммуникация между этими двумя настольными компьютерами быстрее, чем коммуникация между ноутбуком и настольными компьютерами. Оба локальных соединения, вероятно, быстрее, чем соединение с любым сайтом в общедоступном Интернете. И скорость, на которой Вы связываетесь с одним сайтом, может быть намного быстрее или медленнее, чем другой сайт просто, потому что соединение проходит через различные маршрутизаторы, кабели, и т.д.

Подробные данные маршрутизации отличаются в зависимости от того, используете ли Вы IPv4 или IPv6.

Маршрутизация IPv4

Адрес IPv4 состоит из 32-разрядного числа, разделенного на часть узла и часть сети. Часть узла однозначно определяет данный узел в данной физической сети. Часть сети идентифицирует сеть, с которой подключен узел.

В зависимости от того, как определенный блок IP-адресов был разделен его владельцем, часть сети может быть всего 8 битов, или столь же большой как 30 битов.

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

Большинство узлов принимает это решение с помощью довольно простого алгоритма:

Чтобы представлять, насколько большой часть сети, узел использует сетевую маску. Сетевая маска является 32-разрядным значением, в котором 1 бит указывает, что эквивалентный бит в IP-адресе находится в части сети, и 0 битов указывают, что соответствующий бит находится в части узла. Сетевая маска обычно пишется в том же формате как IP-адрес. Например, если у Вас есть 28-разрядная часть сети, сетевая маска 255.255.255.240. Таблица 5-1 показывает как IP-адрес для developer.apple.com может анализироваться в часть сети и часть узла на основе сетевой маски в качестве примера.

Таблица 5-1  сетевой адрес IPv4 и (пример) сетевая маска для developer.apple.com

Часть сети

Часть узла

IP-адрес

17.

254.

2.

129

IP-адрес

(в двоичном файле)

00010001

11111110

00000010

10000001

Сетевая маска

255.

0.

0.

0

Сетевая маска

(в двоичном файле)

11111111

00000000

00000000

00000000

Поскольку часть сети и часть узла всегда непрерывны (на практике), эта сетевая маска часто сокращается к единственному числу, представляющему число 1 бита в сетевой маске, которой обычно предшествует наклонная черта. Таким образом вышеупомянутая сеть с 28-разрядной частью сети иногда упоминается как a /28 сеть, примером в Таблице 5-1 является a /8 сеть, и т.д. В теории можно создать сеть с любой произвольной комбинацией нулей и в сетевой маске, но нет никакой гарантии, что все операционные системы или программное обеспечение управления сетью будут правильно поддерживать такую нестандартную конфигурацию.

Учитывая определенное значение для части сети, допустимый диапазон IP-адресов, доступных для использования в части узла, упоминается как подсеть или netblock. Подсеть могла бы, например, использовать 24 бита для части сети, оставляя 8 битов для части узла. Это дает Вам блок 256 IP-адресов для работы с.

Однако не все те 256 IP-адресов фактически доступны. В любой данной подсети существует три специальных зарезервированные IP-адреса: широковещательный адрес, сетевой адрес и адрес маршрутизатора.

Кроме того, IPv4 резервирует определенные адреса для определенного использования. Проект позволяет Вам распознавать определенные типы адресов путем поиска определенных образцов в старших битах, как упомянуто ниже:

Тип адреса

Маска IPv4

Неуказанный адрес

Используемый для указания отсутствия адреса. Может не быть присвоен никакому узлу.

0.0.0.0

Петлевой адрес

Адрес, позволяющий узлу соединяться назад с собой (localhost).

127.0.0.1

Групповой адрес

Адрес раньше отправлял пакеты в любую заинтересованную сторону.

224.0.0.0/4

Локальный для ссылки индивидуальный адрес

Адрес, который никогда не должен направляться.

169.254.0.0/16

Локальный для сайта индивидуальный адрес

Адрес, который должен быть направлен только на территории клиента.

10.0.0.0/8

172.16.0.0/12

192.168.0.0/16

Маршрутизация IPv6

Адрес IPv6 разделен на следующие части:

Таблица 5-2  структура адреса IPv6

Часть сети

Часть узла

Глобальный префикс маршрутизации

n биты

Подсеть ID

64-n биты

Интерфейсный ID

64 бита

В понятии маршрутизация IPv6 подобна маршрутизации IPv4. Однако нет никаких зарезервированных широковещательных или сетевых адресов. Вместо этого локальное для специальной ссылки “все узлы” группа многоадресной передачи (ff02::1) обеспечивает схожую функциональность. Точно так же нет никаких непостоянно измеренных подсетей; часть на интерфейс всегда - 64 бита.

IPv6 резервирует определенные адреса для определенного использования. Проект позволяет Вам распознавать определенные типы адресов путем поиска определенных образцов в старших битах, как упомянуто ниже:

Тип адреса

Маска IPv6

Комбинация двоичных разрядов маски

Неуказанный адрес

Используемый для указания отсутствия адреса. Может не быть присвоен никакому узлу.

::/128

00000000....00000000

Петлевой адрес

Адрес, позволяющий узлу соединяться назад с собой (localhost).

::1/128

00000000....00000001

Групповой адрес

Адрес раньше отправлял пакеты в любую заинтересованную сторону.

FF00::/8

11111111

Локальный для ссылки индивидуальный адрес

Адрес, который никогда не должен направляться.

FE80::/10

11111110 10

Локальный для сайта индивидуальный адрес

Адрес, который должен быть направлен только на территории клиента.

FEC0::/10

11111110 11

Все другие образцы адреса, как предполагается, являются глобально routable индивидуальными адресами.

Брандмауэры и преобразование сетевых адресов

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

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

Брандмауэры обычно привыкли к:

Преобразование сетевых адресов заслуживает дальнейшего объяснения. NAT обычно используется, чтобы заставить трафик из каждой машины на одной стороне брандмауэра, казаться, произошел из различного IP-адреса. Это может служить различным целям в зависимости от того, как это сконфигурировано:

Некоторые брандмауэры подмены также поддерживают протоколы, позволяющие приложениям, работающим на узлах во временных целевых правилах NAT запроса брандмауэра так, чтобы вне узлов мог временно достигнуть их. Два наиболее распространенных протокола для поддержки этого являются портом преобразования сетевых адресов, отображающим протокол (NAT-PMP), и устройство интернет-шлюза (IGD) стандартизировало протокол управления устройствами (часть Универсального стандарта Plug and Play или UPnP).

В OS X и iOS, Добрый день предоставляет встроенную поддержку для создания отображений порта через брандмауэры, поддерживающие NAT-PMP или UPnP. Службы распространились, использование, глобальное Добрый день, автоматически отображаются. Для служб, распространенных другими способами, можно вызвать DNSServiceNATPortMappingCreate создать отображение, и DNSServiceRefDeallocate уничтожать отображение. Эти отображения также разъединяются автоматически, когда процесс, создавший выходы отображений.