В отличие от глобальных хостов Интернета, требующих уникальных IP-адресов, для частных хостов, не подключенных к сети Интернет, можно использовать любые адреса при условии их уникальности в рамках частной сети. Однако поскольку множество частных сетей существует параллельно с публичными сетями, захват «первых попавшихся» адресов категорически не рекомендуется.
В 1994 году сообщество IETF опубликовало документ RFC 1597, в котором утверждалось, что многие организации, использующие TCP/IP и IP-адресацию, не подключены к Интернету. Вслед за RFC 1597 был опубликован документ RFC 1918, в котором предлагалось выделить блок доступного пространства IP-адресов для частных сетей. Частные сети, в которых протокол IP необходим для поддержки приложений, но нет необходимости в подключении к Интернету, могут просто использовать адреса из выделенного диапазона для частного применения.
Для частного, внутреннего использования было выделено три блока IP-адресов (одна сеть класса А, 16 сетей класса В и 256 сетей класса С). Адреса из этого диапазона не подлежат маршрутизации в магистральной сети Интернет (см. рисунок 6). Маршрутизаторы Интернета настроены на отбрасывание пакетов с частными адресами.
При адресации во внутренней, не публичной сети эти частные адреса могут использоваться вместо общедоступных адресов.
Если сеть, использующая частные адреса, должна подключаться к Интернету, необходимо преобразовать частные адреса в адреса общего пользования. Таким процессом преобразования является NAT. Сетевым устройством, осуществляющим преобразование NAT, как правило, служит маршрутизатор.
Рис.6 Диапазоны частных IP-адресов
Из рассмотренного ранее материала известно, что для взаимодействия с использование протокола Internet Protocol необходимо, чтобы IP адреса были назначены каждому сетевом интерфейсу узла и каждому сетевому интерфейсу маршрутизатора. При этом необходимо придерживаться следующих обязательных правил:
• Адреса не должны дублироваться: IP адрес – уникальный идентификатор узла или порта маршрутизатора
• Если узлы и порты маршрутизаторов находятся в одной канальной сети, то они должны иметь такие IP адреса, которые принадлежать одной IP сети
• Если узлы и порты маршрутизаторов находятся в разных канальных сетях, то они должны иметь такие IP адреса, которые принадлежать разным IP сетям
Первое правило – очевидно. Рассмотрим подробнее второе и третье правило.
Когда узел передает данные другому узлу, он не знает, в одной канальной сети он с ним находится или в разных сетях. Единственное, что знает отправитель пакета о получателе, это его IP адрес, кроме того, отправитель пакета знает свой IP адрес. Из своего адреса отправитель может узнать номер своей сети, пользуясь техникой классов, из IP адреса получателя отправитель может узнать номер его сети: если они совпадают – значит два узла в одной IP сети, значит можно передавать кадр канального уровня непосредственно получателю, иначе его необходимо передавать маршрутизатору.
Если два узла будут находиться в разных канальных сетях, но иметь адреса из одной IP сети, то отправитель подумает, что получатель с ним в одной канальной сети, пошлет ему кадр канального уровня, который, очевидно не будет получен.
И обратное если отправитель и получатель находятся в одной канальной сети, но их IP адреса заданы таким образом, что отправитель думает, что они в разных канальных сетях, то вместо передачи кадра непосредственно получателю, кадр будет передан маршрутизатору, что в худшем случае приведет к невозможности доставки IP пакета.
То же касается и маршрутизаторов: из канальных адресов узлов не следует ничего об их принадлежности к той или иной сети, лишь IP адреса позволяют маршрутизаторам делать выводы о составе КАНАЛЬНЫХ сетей, и соответственно IP адреса должны быть назначены таким образом, чтобы отражать, кто из узлов принадлежит какой канальной сети.
Рассмотрим пример назначения IP адресов в небольшой сети, используя указанные выше правила:
Пусть у нас есть небольшое предприятие, имеющее офис в центре города и подразделение на окраине. Очевидно, что построить одну канальную сеть, охватывающую все узлы предприятия невозможно, для решения задачи нам потребуется привлечение средств третьего уровня. В главном офисе сеть разделена на две сети Ethernet, так как того требует политика безопасности, сеть склада состоит из единственной сети Ethernet. В офисе и на складе установлены маршрутизаторы, которые связаны между собой арендованным каналом. Задача – адресовать эту сеть. Нам понадобиться присвоить адреса всем узлам и портам маршрутизаторов данной составной сети в соответствии с рассмотренной выше стратегией.
В качестве адресов сетей нужно выбрать адреса класса C, так как все наши сети имеют размер меньше 254 узлов. Обратите внимание – использование адресного пространства в данном случае не является рациональным, так как три наши сети содержат всего по четыре узла (+порт маршрутизатора), но более мелких IP сетей в классовой , нежели размером 254 узла не существует. Впрочем, при добавлении новых узлов в наши сети у нас не будет проблем с присвоением IP адресов новым узлам. И еще одни нюанс -глобальная связь между маршрутизаторами – это тоже сеть и тоже нуждается в адресации, но в ней по определению два узла, однако она тоже потребляет сеть класса С.
Итак, результатом назначение адресов стали четыре сети класса С, присвоим им соответствующие номера 201.1.1.0, 201.1.2.0, 201.1.3.0 и 201.1.4.0.
Пусть сеть на коммутаторе Switch1 получает номер 201.1.1.0. В этой сети необходимо присвоить 5 адресов: порту маршрутизатора и четырем узлам.
Впредь договоримся присваивать портам маршрутизаторов младшие адреса узлов (это не является обязательным условием - просто обычная договоренность для удобства).
Т.е. присвоим порту маршрутизатора Router1, который подключен к коммутатору Switch1 адрес 201.1.1.1. Узлам можно присвоить адреса:
• 1: 201.1.1.10
• 2: 201.1.1.11
• 3: 201.1.1.12
• 4: 201.1.1.13
Пусть сеть на коммутаторе Switch2 получает номер 201.1.2.0. И в этой сети необходимо присвоить 5 адресов: порту маршрутизатора и четырем узлам. Присвоим порту маршрутизатора Router2, который подключен к коммутатору Switch2 адрес 201.1.2.1. Тогда узлам можно присвоить адреса:
• 5: 201.1.2.10
• 6: 201.1.2.11
• 7: 201.1.2.12
• 8: 201.1.2.13
Пусть сеть на коммутаторе Switch3 получает номер 201.1.3.0. И в этой сети необходимо присвоить 5 адресов: порту маршрутизатора и четырем узлам. Присвоим порту маршрутизатора Router2, который подключен к коммутатору Switch3 адрес 201.1.3.1. Тогда узлам можно присвоить адреса:
• 9: 201.1.3.10
• 10: 201.1.3.11
• 11: 201.1.3.12
• 12: 201.1.4.13
Глобальной сети между маршрутизаторами Router1 и Router2 присвоим номер сети 201.1.4.0. Порт маршрутизатора Router1 в этой сети получит адрес 201.1.4.1, порт маршрутизатора Router2 в этой сети получит номер 201.1.4.2.
Таким образом, вся составная сеть адресована. Рассмотренный выше набор правил является базовым для присвоения адресов в сети любого масштаба и схемы подключения канального уровня. В случае несоблюдения указанных рекомендаций, работа сетевого уровня может быть нарушена вследствие различий логики протокола IP и логики используемой администратором при назначении адресов.
Например, в случае присвоения хостам лежащим в разных канальных широковещательных сегментах адресов IP лежащих в одной сети – работа сетевого уровня по объединению указанных хостов нарушиться. Исправить ситуацию, в этом случае можно двумя путями: назначить адреса в соответствии с рекомендациями или дополнить таблицу маршрутизации на каждом из хостов + таблицу на маршрутизаторе (но это уже из области особых ситуаций).
Из рассмотренного выше примера следуют недостатки классовой техники (RFC791) назначения IP адресов. Сформулируем основные из этих недостатков:
• Небольшие сети (20-100 машин) потребляют идентификатор класса C, который позволяет адресовать до 254 узлов
• Умеренно большие сети (300-500 машин) потребляют идентификатор класса B так как им не хватает размера сетей класса А, а сети класса В позволяют адресовать до 65534 узлов
• Глобальные сети точка-точка (2 узла) потребляют идентификатор класса C, так как более мелких сетей классовая техника все равно не позволяет
• Потребность в сетях класса В сомнительна – такого числа узлов обычно не используют в одной сети
• Потребность в сетях класса А сомнительна – такого числа узлов никогда не используют в одной сети
• Слишком большая доля адресного пространства используется для гигантских сетей класса A (половина)
• Пусть у компании есть идентификатор сети любого класса и одна сеть из некоторого небольшого количества узлов. При необходимости создать еще несколько сетей, соединив их маршрутизаторами, это не возможно сделать без применения дополнительных номеров сетей, так как одна большая IP сеть некоторого класса не может быть использована как несколько мелких.
Все эти недостатки приводят к одному и тому же – нерациональному использованию адресного пространства, неэффективному расходованию адресов. Все эти недостатки были бы не принципиальны, если бы адресное пространство IP было бы весьма избыточным. Однако, как уже говорилось, это не так, напротив, IP адресов не слишком уж и много (около 4 млрд.).
Но при этом нужно вычесть 256 млн. адресов класса D, 256 млн. адресов класса E, 32 млн. адресов в сетях 0.0.0.0 и 127.0.0.1, так что адресов, которые можно присваивать узлам оказывается около 3,5 млрд.
Это число не так уж и мало, однако неэкономичное классовое распределение адресов значительно истощило доступное адресное пространство, возникла потребность в более гибком способе адресации, впрочем, таком, который бы можно было использовать, совместно с существующей классовой технологией, не переделывая работающие сети полностью. И такое решение было предложено в RFC917 (октябрь 1984) и в RFC950 (август 1985, статус: стандарт). Эти RFC описывали принципы создания подсетей – деления классовых сетей на более мелкие части с целью более гибкого использования адресного пространства. Указанные действия осуществляются с использованием масок IP адресов.