Рассмотрим, что такое IР-адрес и маска подсети, чтобы выяснить, как оба этих параметра используются для определения локальных или удаленных IР-сетей, и на конкретных примерах ознакомиться с тем, как компьютеры и маршрутизаторы доставляют IР-пакеты из одной сети в другую.
Основы IР-адресации
Первым обязательным параметром в свойствах протокола ТСР/IР любого компьютера является его IР-адрес.
IР-адрес — это уникальная 32-разрядная последовательность двоичных цифр, с помощью которой компьютер однозначно идентифицируется в IР-сети.
Рассмотрим наиболее распространенную версию протокола IР - IPv4. Однако уже создана следующая версия протокола — IР версии 6 (IРv6), в которой IР-адрес представляется в виде 128-битной последовательности двоичных цифр. Эта версия протокола IР пока еще не получила широкого распространения, хотя и поддерживается многими современными маршрутизаторами и операционными системами.
Для удобства работы с IР-адресами 32-разрядную последовательность обычно разделяют на 4 части по 8 битов (на октеты), каждый октет переводят в десятичное число и при записи разделяют эти числа точками
Однако одного только IР-адреса компьютеру для работы в сети ТСР/IР недостаточно. Вторым обязательным параметром, без которого протокол ТСР/IР работать не будет, является маска подсети.
Маска подсети — это 32-разрядное число, состоящее из идущих вначале единиц, а затем — нулей, например (в десятичном представлении)
255.255.255.0 или 255.255.240.0.
Маска подсети играет исключительно важную роль в IР-адресации и маршрутизации. Чтобы понять значение этого параметра, вспомним, что сеть ARPANet строилась как набор соединенных друг с другом сетей. Для правильного взаимодействия в такой сложной сети каждый участник должен уметь определять, какие IР-адреса принадлежат его локальной сети, а какие — удаленным сетям.
Здесь и используется маска подсети, с помощью которой производится разделение любого IР-адреса на две части: идентификатор сети (Net ID) и идентификатор узла (Host ID).
Такое разделение делается очень просто: там, где в маске подсети стоят единицы, находится идентификатор сети, а где стоят нули — идентификатор узла.
Например, в IР-адресе 192.168.5.200 при использовании маски подсети 255.255.255.0 идентификатором сети будет число 192.168.5.0, а идентификатором узла — число 200. Стоит нам поменять маску подсети, скажем, на число 255.255.0.0, как и идентификатор узла, и идентификатор сети изменятся на 192.168.0.0 и 5.200, соответственно, и от этого, как мы дальше увидим, иначе будет вести себя компьютер при посылке IР-пакетов.
Правила назначения IР-адресов сетей и узлов
1) идентификатор сети не может содержать только двоичные нули или только единицы. Например, адрес 0.0.0.0 не может являться идентификатором сети;
2) идентификатор узла также не может содержать только двоичные нули или только единицы — такие адреса зарезервированы для специальных целей:
· все нули в идентификаторе узла означают, что этот адрес является адресом сети. Например, 192.168.5.0 является правильным адресом сети при использовании маски 255.255.255.0 и его нельзя использовать для адресации компьютеров,
· все единицы в идентификаторе узла означают, что этот адрес является адресом широковещания для данной сети. Например, 192.168.5.255 является адресом широковещания в сети 192.168.5.0 при использовании маски 255.255.255.0 и его нельзя использовать для адресации компьютеров;
3) идентификатор узла в пределах одной и той же подсети должен быть уникальным;
4) диапазон адресов от 127.0.0.1 до 127.255.255.254 нельзя использовать в качестве IР-адресов компьютеров. Вся сеть 127.0.0.0 по маске 255.0.0.0 зарезервирована под так называемый «адрес заглушки» (lоорbаск), используемый в IР для обращения компьютера к самому себе.
Это легко проверить: достаточно на любом компьютере с установленным протоколом ТСР/IР выполнить команду
PING 127.12.34.56
и, если протокол ТСР/IOР работает, вы увидите, как ваш компьютер будет отвечать на собственные запросы.
Классовая и бесклассовая IР-адресация
Первоначальная система IР-адресации в Интернете выглядела следующим образом. Все пространство возможных IР-адресов (а это более четырех миллиардов, точнее 4 294 967 296 адресов) было разбито на пять классов, причем принадлежность IР-адреса к определенному классу определялась по нескольким битам первого октета (см.табл.).
Классы адресов в первоначальной схеме IР-адресации
Класс
Первые
Возможные
Возможное число
Возможное число
биты в
значения
сетей
узлов в сети
октете
первого октета
А
1-126
В
128-191
С
192-223
D
224-239
Используется для многоадресной рассылки (я многоадресной
рассылки (multicast)
Е
240-254
Зарезервирован как экспериментальный
Заметим, что для адресации сетей и узлов использовались только классы А, В и С. Кроме того, для этих сетей были определены фиксированные маски подсети по умолчанию, равные, соответственно, 255.0.0.0, 255.255.0.0 и 255.255.255.0, которые не только жестко определяли диапазон возможных IР-адресов узлов в таких сетях, но и механизм маршрутизации.
Чтобы рассчитать максимально возможное количество узлов в любой IР-сети, достаточно знать, сколько битов содержится в идентификаторе узла, или, иначе, сколько нулей имеется в маске подсети. Это число используется в качестве показателя степени двойки, а затем из результата вычитается два зарезервированных адреса (сети и широковещания). Аналогичным способом легко вычислить и возможное количество сетей классов А, В или С, если учесть, что первые биты в октете уже зарезервированы, а в классе А нельзя использовать IР-адреса 0.0.0.0 и 127.0.0.0 для адресации сети.
Для получения нужного диапазона IР-адресов организациям предлагалось заполнить регистрационную форму, в которой следовало указать текущее число компьютеров и планируемый рост компьютерного парка в течение двух лет.
Первоначально данная схема хорошо работала, поскольку количество сетей было небольшим. Однако с развитием Интернета такой подход к распределению IР-адресов стал вызывать проблемы, особенно острые для сетей класса В. Действительно, организациям, в которых число компьютеров не превышало нескольких сотен (скажем, 500), приходилось регистрировать для себя целую сеть класса В. Поэтому количество доступных сетей класса В стало на глазах «таять», но при этом громадные диапазоны IР-адресов (в нашем примере — более 65000) пропадали зря.
Чтобы решить проблему, была разработана бесклассовая схема IР-адресации (Classless InterDomain Routing, CIDR), в которой не только отсутствует привязка IР-адреса к классу сети и маске подсети по умолчанию, но и допускается применение так называемых масок подсети с переменной длиной (Variable Length Subnet Mask, VLSM).
Например, если при выделении сети для организации с 500 компьютерами вместо фиксированной маски 255.255.0.0 использовать маску 255.255.254.0, то получившегося диапазона из 512 возможных IР-адресов будет вполне достаточно. Оставшиеся 65 тысяч адресов можно зарезервировать на будущее или раздать другим желающим подключиться к Интернету.
Этот подход позволил гораздо более эффективно выделять организациям нужные им диапазоны IР-адресов, и проблема с нехваткой IР-сетей и адресов стала менее острой.
IР-адреса для локальных сетей
Все используемые в Интернете адреса должны регистрироваться в ICANN (Internet Corporation for Assigned Names and Numbers), что гарантирует их уникальность в масштабе всей планеты. Такие адреса называют реальными, или публичными (public) IР-адресами.
Для локальных сетей, не подключенных к Интернету, регистрация IР-адресов, естественно, не требуется, так что, в принципе, здесь можно использовать любые возможные адреса. Однако, чтобы не допускать возможных конфликтов при последующем подключении такой сети к Интернету, RFC 1918 рекомендует применять в локальных сетях только следующие диапазоны так называемых частных (private) IР-адресов (в Интернете эти адреса не существуют и использовать их там нет возможности):
· 10.0.0.0 — 10.255.255.255;
· 172.16.0.0 — 172.31.255.255;
· 192.168.0.0 — 192.168.255.255.
Основы IР-маршрутизации
Как уже говорилось, чтобы правильно взаимодействовать с другими компьютерами и сетями, каждый компьютер определяет, какие IР-адреса принадлежат его локальной сети, а какие — удаленным сетям. Если выясняется, что IР-адрес компьютера назначения принадлежит локальной сети, пакет посылается непосредственно компьютеру назначения, если же это адрес удаленной сети, то пакет посылается по адресу основного шлюза.
Рассмотрим этот процесс подробнее. Возьмем компьютер со следующими параметрами протокола IР:
· IР-адрес — 192.168.5.200;
· маска подсети — 255.255.255.0;
· основной шлюз — 192.168.5.1.
При запуске протокола IР на компьютере выполняется операция логического «И» между его собственными IР-адресом и маской подсети, в результате которой все биты IР-адреса, соответствующие нулевым битам маски подсети, также становятся нулевыми:
· IР-адрес в 32-разрядном виде —
11000000 10101000 00000101 11001000;
· маска подсети —
11111111 11111111 11111111 00000000;
Получаем идентификатор сети —
11000000 10101000 00000101 00000000.
Эта простая операция позволяет компьютеру определить идентификатор собственной сети (в нашем примере — 192.168.5.0).
Теперь предположим, что компьютеру надо отправить IР-пакет по адресу 192.168.5.15. Чтобы решить, как это нужно сделать, компьютер выполняет операцию логического «И» с IР-адресом компьютера назначения и собственной маской подсети. Легко понять, что полученный в результате идентификатор сети назначения будет совпадать с идентификатором собственной сети компьютера-отправителя. Так наш компьютер определит, что компьютер назначения находится в одной с ним сети, и выполнит следующие операции:
· с помощью протокола ARP будет определен физический МАС-адрес, соответствующий IР-адресу компьютера назначения;
· с помощью протоколов канального и физического уровня по этому МАС-адресу будет послана нужная информация.
Теперь посмотрим, что изменится, если пакет надо отправить по адресу 192.168.10.20. Компьютер выполнит аналогичную процедуру определения идентификатора сети назначения. В результате будет получен адрес 192.168.10.0, не совпадающий с идентификатором сети компьютера-отправителя. Так будет установлено, что компьютер назначения находится в удаленной сети, и алгоритм действий компьютера-отправителя изменится:
· будет определен МАС-адрес не компьютера назначения, а маршрутизатора;
· с помощью протоколов канального и физического уровня по этому МАС-адресу на маршрутизатор будет послана нужная информация.
Несмотря на то, что IР-пакет в этом случае не доставляется непосредственно по назначению, протокол IР на компьютере-отправителе считает свою задачу выполненной. Дальнейшая судьба IР-пакета зависит от правильной настройки маршрутизаторов, объединяющих сети 192.168.5.0 и 192.168.10.0.
Пусть мы по ошибке указали для компьютера 192.168.5.200 маску подсети, равную 255.255.0.0. В этом случае при попытке послать пакет по адресу 192.168.10.20 наш компьютер посчитает, что компьютер назначения находится в его собственной сети (ведь идентификаторы сетей при такой маске совпадают!), и будет пытаться отправить пакет самостоятельно.
В итоге этот пакет не попадет в маршрутизатор и не будет доставлен по назначению.
Чтобы понять, как работают маршрутизаторы, давайте сначала проанализируем таблицу маршрутов, которую выстраивает при загрузке протокола IР обычный компьютер, например, с операционной системой Windows ХР.
Рис. 11.
Как нетрудно видеть, в таблице определено несколько маршрутов с разными параметрами. Читать каждую такую запись в таблице маршрутизации нужно следующим образом:
Чтобы доставить пакет в сеть с адресом из поля Сетевой адрес и маской из поля Маска сети, нужно с интерфейса с IР-адресом из поля Интерфейс послать пакет по IР-адресу из поля Адрес шлюза, а «стоимость» такой доставки будет равна числу из поля Метрика.
Отметим, что параметры Сетевой адрес и Маска сети вместе задают диапазон всех разрешенных в данной сети IР-адресов.
Например, 127.0.0.0 и 255.0.0.0, как мы уже говорили, означают любой IР-адрес от 127.0.0.1 до 127.255.255.254. Вспомним также, что IР-адрес 127.0.0.1 называется «адресом заглушки» — посланные по этому адресу пакеты должны обрабатываться самим компьютером. Кроме того, маска 255.255.255.255 означает сеть из одного IР-адреса, а комбинация 0.0.0.0 — любой неопределенный адрес или маску подсети.
Тогда первая строка в таблице маршрутизации означает в точности то, что делает компьютер при необходимости послать пакет в удаленную, т. е. неизвестную ему из таблицы маршрутизации, сеть — со своего интерфейса пакет посылается на IР-адрес маршрутизатора.
Вторая строка таблицы заставляет компьютер посылать самому себе (и отвечать на них) все пакеты, отправленные по любому IР-адресу из диапазона 127.0.0.1 — 127.255.255.254.
В третьей строке определено, как посылать пакеты компьютерам локальной сети (по адресам из диапазона 192.168.5.1 — 192.168.5.254). Здесь четко видно, что делать это должен сам компьютер — адресом шлюза является его собственный IР-адрес 192.168.5.200.
Аналогично (пятая, шестая и седьмая строки таблицы) нужно поступать и в случае, когда пакеты направляются по адресу рассылки подсети (192.168.5.255), по адресам многоадресной рассылки (224.0.0.0) или по адресу локальной широковещательной рассылки (255.255.255.255).
Четвертая же строка означает, что пакеты, посланные по IР-адресу 192.168.5.200 (обратите внимание на маску!), должны обрабатываться самим компьютером.
Несколько сложнее будет выглядеть таблица маршрутизации компьютера с двумя сетевыми адаптерами, который мы будем использовать в качестве маршрутизатора для объединения двух сегментов небольшой сети.
Рис. 12.
Рис. 13.
Объединение сети с помощью маршрутизатора и таблица маршрутизации компьютера
В этой таблице появилось несколько дополнительных строк, обозначающих маршруты в обе сети — 192.168.5.0 и 192.168.10.0. Заметим, что все такие маршруты будут выстроены компьютером автоматически.
Чтобы после этого наладить обмен IР-пакетами между сетями, нужно выполнить следующие действия:
· включить маршрутизацию на компьютере R1; это можно сделать, например, настроив службу маршрутизации и удаленного доступа, входящую в состав операционной системы;
· на всех компьютерах в сети N1 параметр Основной шлюз нужно установить равным IР-адресу интерфейса маршрутизатора, подключенного к этой сети, т.е. равным 192.168.5.1, а на компьютерах в сети N2 — равным 192.168.10.1.
Таким образом, маршрутизатор — это программно-аппаратное устройство с несколькими сетевыми интерфейсами, на котором работает служба маршрутизации.
Усложним нашу сеть, добавив в нее второй маршрутизатор и сеть N3 с адресом 192.168.15.0.
Рис. Сеть с двумя маршрутизаторам
В такой сети настройка маршрутизации усложняется. Проблема в том, что, хотя маршрутизатор R1 «знает», как посылать пакеты в сети N1 и N2, маршрута в сеть N3 у него нет. В свою очередь, у маршрутизатора R2 отсутствует маршрут в сеть N1. Значит, обмен IР-пакетами между сетями N1 и N3 будет невозможен.
Решить эту проблему в такой небольшой сети довольно просто — надо добавить нужные записи в таблицы маршрутизаторов R1 и R2. Для этого на маршрутизаторе R1 достаточно выполнить команду, предписывающую направлять все пакеты, предназначенные для сети 192.168.15.0, по адресу 192.168.10.254 (т.е. второму маршрутизатору, который уже сможет доставить эти пакеты по назначению; ключ Р здесь используется, чтобы сделать этот маршрут постоянным):
ROUTE -P ADD 192.168.15.0
MASK 255.255.255.0 192.168.10.254
В качестве IР-адреса маршрутизатора принято выбирать либо первый, либо последний из возможных в данной IР-сети адресов.
Аналогичная команда на маршрутизаторе R2 должна выглядеть так:
ROUTE -P ADD 192.168.5.0
MASK 255.255.255.0 192.168.10.1
После этого взаимодействие в нашей сети будет налажено.
В крупных сетях, содержащих большое количество соединенных друг с другом подсетей, вручную прописывать маршруты доставки пакетов на всех маршрутизаторах довольно утомительно. К тому же такие маршруты являются статическими, значит, при каждом изменении конфигурации сети нужно будет проделывать большую работу по перестройке системы IР-маршрутизации.
Чтобы избежать этого, достаточно настроить маршрутизаторы так, чтобы они обменивались друг с другом информацией о маршрутах. Для этого в локальных сетях используют такие протоколы, как RIP (Routing Information Protocol) и OSPF (Open Shortest Path First).
Протокол RIP проще в настройке, чем OSPF, однако для обмена информацией в нем применяются широковещательные сообщения, заметно нагружающие сеть. Поэтому RIP обычно используют в относительно небольших сетях. Протокол OSPF работает эффективнее, но сложнее настраивается, поэтому его использование рекомендуется для крупных корпоративных сетей.