Подсети
Как было показано ранее, у всех хостов сети должен быть один и тот же номер сети. Это свойство IP-адресации может вызвать проблемы при росте сети. Понадобилось создание новой архитектуры.
Получить второй сетевой адрес довольно сложно, потому что сетевые адреса — ресурс дефицитный, к тому же в одном сетевом адресе адресного пространства достаточно для подключения более 60 000 хостов. Проблема заключается в следующем: правилом установлено, что адрес одного класса (А, В или С) относится только к одной сети, а не к набору ЛВС. С этим столкнулось множество организаций, в результате чего были произведены небольшие изменения в системе адресации.
Проблема решилась предоставлением сети возможности разделения на несколько частей с точки зрения внутренней организации.
Была изобретена альтернативная схема работы. Вместо одного адреса класса В с 14 битами для номера сети и 16 битами для номера хоста было предложено использовать несколько другой формат - формировать адрес подсети из нескольких битов.
Все, что нужно маршрутизатору для реализации подсети, это наложить маску подсети, показывающую разбиение адреса на номер сети, подсети и хоста. Маски подсетей также записываются в виде десятичных чисел, разделенных точками, с добавлением косой черты, за которой следует число битов номера сети и подсети. Например, маску подсети можно записать в виде 255.255.252.0. Альтернативная запись будет включать /22, показывая, что маска подсети занимает 22 бита.
За пределами сети разделение на подсети незаметно, поэтому нет нужды с появлением каждой подсети обращаться в ICANN или изменять какие-либо внешние базы данных.
Чтобы понять, как функционируют подсети, следует рассмотреть процесс обработки IP-пакетов маршрутизатором. У каждого маршрутизатора есть таблица, содержащая IP-адреса сетей (вида <сетъ, 0>) и IP-адреса хостов (вида <эта_сетъ, хост>). Адреса сетей позволяют получать доступ к удаленным сетям, а адреса хостов — обращаться к локальным хостам. С каждой таблицей связан сетевой интерфейс, применяющийся для получения доступа к пункту назначения, а также другая информация.
Когда IP-пакет прибывает на маршрутизатор, адрес получателя, указанный в пакете, ищется в таблице маршрутизации. Если пакет направляется в удаленную сеть, он пересылается следующему маршрутизатору по интерфейсу, указанному в таблице. Если пакет предназначен локальному хосту (например, в локальной сети маршрутизатора), он посылается напрямую адресату. Если номера сети, в которую посылается пакет, в таблице маршрутизатора нет, пакет пересылается маршрутизатору по умолчанию, с более подробными таблицами.
Такой алгоритм означает, что каждый маршрутизатор должен учитывать только другие сети и локальные хосты, а не пары <сетъ, хост>, что значительно уменьшает размер таблиц маршрутизатора.
При разбиении сети на подсети таблицы маршрутизации меняются - добавляются записи вида <эта_сетъ, подсеть, 0> и <эта_сетъ, эта_подсетъ, хост>. Таким образом, маршрутизатор вашей подсети знает, как получить доступ ко всем другим подсетям и как добраться до всех хостов своей подсети. Ему нет нужды знать детали адресации хостов в других подсетях. На самом деле, все, что для этого требуется от маршрутизатора, это выполнить двоичную операцию И над маской подсети, чтобы избавиться от номера хоста, а затем найти получившийся адрес в таблицах (после определения класса сети). Использование масок подсети переменной длины (Variable Length Subnet Mask - VLSM) позволяет более гибко разбивать адресное пространство. VLSM позволяет осуществлять дополнительное разбиение имеющихся подсетей на подсети. Это достигается за счёт увеличения поля номера подсети.