Домой  

Как выбрать IP-адреса для вашей сети

Терри Л. Джеффресс

Чтоб настроить свою интрасеть, вам необходимо соответствующим образом сконфигурировать каждый хост (этим термином обозначается любой узел в сети TCP/IP), снабдив его IP-адресом и маской подсети. Их значения можно задавать либо вручную, либо автоматически с помощью сервера DHCP (Dynamic Host Configuration Protocol – протокол динамической настройки конфигурации хоста). (Подробнее о серверах DHCP см. в статье «Преобразование сети IPX в интрасеть».)

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

Один хост – один адрес

Каждый хост в вашей сети должен иметь собственный IP-адрес, и если вы собираетесь соединить свою сеть с Internet, то вам придется позаботиться о том, чтобы ваши хосты имели уникальные адреса в сети Internet. Регулированием процесса присвоения IP-адресов занимается комитет IANA (Internet Assigned Numbers Authority); это обеспечивает уникальность всех назначаемых адресов.

На ранних этапах развития Internet за получением уникальных IP-адресов необходимо было обращаться непосредственно в IANA. Поскольку сейчас количество пользователей Internet сильно возросло, IANA передает блоки адресов провайдерам услуг Internet, чтобы те выделяли IP-адреса своим клиентам.

Основная форма IP-адреса

Обычно IP-адреса записываются в виде последовательности, состоящей из четырех десятичных чисел от 0 до 225, разделенных точками. Типичный IP-адрес выглядит так: 198.168.45.249.

Каждое из четырех десятичных чисел, выраженное в двоичном виде, будет представлено 8-разрядным числом, которое называется октетом. Например, первое из десятичных чисел в нашем примере IP-адреса (198) в двоичной форме будет выглядеть как 11000110. Полный же IP-адрес (четыре октета) будет представлять собою 32-разрядное двоичное число. Таким образом, полное двоичное представление адреса 198.168.45.249 будет иметь вид 11000110.10101000.00101101.11111001. Использование 32-разрядных двоичных чисел позволяет создавать 4 294 967 296 уникальных IP-адресов – более чем достаточно для любой частной интрасети (хотя сеть Internet скоро может начать испытывать нехватку уникальных адресов).

Каждый IP-адрес разделяется по умолчанию на номер сети и номер хоста. Номер сети IP аналогичен номеру сети IPX. Подобно тому, как каждый сегмент ЛВС в сети IPX должен иметь свой уникальный номер сети IPX, каждый сегмент ЛВС в сети TCP/IP должен иметь свой уникальный номер сети IP.

Расшифровка двоичных чисел в IP-адресах была бы проще, если бы число разрядов, используемых для представления номера сети и номера хоста, было бы всегда одним и тем же. Однако число разрядов, используемых для представления каждого из этих номеров, меняется в зависимости от того, к какому классу (A, B или С) принадлежит данный адрес. Номер сети может быть представлен первыми 8, 16 или 24 разрядами, а номер хоста – последними 24, 16 или 8 разрядами.

Классы адресов, номера сетей и номера хостов

Значение первого октета в IP-адресе определяет, к какому классу (A, B или С) относится данный адрес. Эта величина определяет также и число разрядов в адресе, которые используются для обозначения номера сети и номера хоста.

Если значение первого октета в IP-адресе находится в диапазоне от 1 до 126, то адрес принадлежит к классу А. В этом случае первый октет (8 разрядов) обозначает номер сети, а последние три октета (24 разряда) обозначают номер хоста. Например, IP-адрес 102.56.187.5 обозначает сеть с номером 102 и хост с номером 56.187.5.

Если значение первого октета в IP-адресе находится в диапазоне от 128 до 191, то адрес относится к классу B. В этом случае первые два октета (16 разрядов) указывают номер сети, а последние два октета (16 разрядов) указывают номер хоста. Например, IP-адрес 154.2.91.240 обозначает сеть с номером 154.2 и хост с номером 91.240.

Наконец, если значение первого октета в IP-адресе находится в диапазоне от 192 до 223, то адрес принадлежит к классу С. В этом случае первые три октета (24 разряда) обозначают номер сети, а последний октет обозначает номер хоста. IP-адреса со значениями первых октетов, равными 0, 127 и 224-255 зарезервированы для случаев, речь о которых пойдет в следующем разделе (см. рис. 1).

Поскольку в IP-адресе класса А для обозначения номера сети используется только первый октет и его значение должно находиться в диапазоне от 1 до 126, то в каждой сети может существовать не более 126 сетей класса А (см. рис. 1).

  Первый октет        
 Класс  От  До  Октетов в номере сети  Октетов в номере хоcта  Возможное число сетей  Возможное число хостов в одной сети
   0  0  Зарезервировано
 A  1  126  1  3  126  16,777,214
   127  127  Зарезервировано
 B  128  191  2  2  16,384  65,534
 C  192  223  3  1 2,097,152 254
224 255  Зарезервировано

Рис. 1. Классы IP-адресов


Зарезервированные номера хостов

Хотя число разрядов, используемых для обозначения номера хоста, в зависимости от класса адреса может составлять 8, 16 или 24, два номера хоста всегда остаются зарезервированными:

Эти зарезервированные номера хостов имеют специальное назначение. IP-адрес с нулевым номером хоста используется для адресации ко всей сети. Например, в сети класса С с номером 199.60.32 IP-адрес 199.60.32.0 обозначает сеть в целом.

Если все разряды в номере хоста в IP-адресе заполнены единицами, то широковещательное сообщение будет разослано всем хостам в этой сети. Предположим, например, что один из хостов в сети класса С с сетевым адресом 199.60.32.0 собирается направить сообщение всем остальным хостам, находящимся в той же сети. В этом случае сообщение должно быть передано на адрес 199.60.32.255.

Вычтя резервные адреса хостов в сетях класса А, получим, что к этому классу может принадлежать 16 777 214 хостов с уникальными номерами (см. рис. 1).

Назначение адресов: рекомендации и требования

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

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

Избыток хостов портит дело. На выручку приходят подсети

Хотя вы должны присвоить каждому сегменту ЛВС собственный сетевой номер, использовать все имеющиеся в сети IP-адреса было бы нереально. Например, чтобы использовать все 16 миллионов IP-адресов, возможных в сети класса А, пришлось бы поместить все эти адреса в один сегмент ЛВС.

Даже если бы создание такой сети было физически возможным, то один только объем сетевого трафика в ней сделал бы эту сеть неработоспособной. Даже в сетях класса С, позволяющих иметь 254 хоста, помещать их все в один сегмент было бы неразумно. Чтобы обойти требование "один сегмент – один сетевой номер", правила назначения IP-адресов допускают объединение хостов в подсети.

Предположим для примера, что сети моего предприятия выделен сетевой адрес класса В 134.234.0.0. В сети этого класса возможно наличие 65 534 хостов с различными номерами, и этого более чем достаточно для присвоения уникального IP-адреса каждому из них. Предположим, однако, что моя сеть состоит из трех сегментов ЛВС, соединенных через маршрутизатор, как показано на рис. 2. И хотя моей сети присвоен всего один адрес класса В (134.234.0.0), изменение конфигурации сети с целью подключения всех хостов к одному сегменту – вариант неприемлемый. Проблему можно разрешить, создав внутри сетевого адреса 134.234.0.0 подсети и присвоив каждому сегменту ЛВС различные номера подсетей.

Рис. 2. Для этой сети потребуется либо три уникальных сетевых номера, либо один сетевой номер, разделенный на подсети.

Создание подсетей с помощью масок

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

Чтобы указать, как именно разделяются разряды, выделенные по умолчанию для номера хоста, нужно использовать маску подсети – 32-разрядное число, которое имеет такой же вид, как и IP-адрес (но не совпадает с ним). Маска подсети указывает, сколько разрядов из номера хоста используется для обозначения номера подсети, а сколько – для обозначения нового (меньшего) номера хоста.

Каждый класс IP-адресов (А, В и С) имеет свою маску подсети, используемую по умолчанию. Например, для адреса класса С по умолчанию используется маска подсети 255.255.255.0.

В такой маске разряды во всех позициях, которые используются в IP-адресе для задания номера сети, заполняются единицами. Разряды же во всех позициях, которые используются для задания номера хоста, заполняются нулями. Например, для адреса класса С первые три октета используются для номера сети. В этом случае в используемой по умолчанию маске подсети первые три октета заполняются единицами (см. рис. 3).

  Десятичный Двоичный
 Класс A    
 Адрес  102.56.187.5  01100110.00111000.10111011.00000101
 Маска подсети  255.0.0.0  11111111.00000000.00000000.00000000
 Класс B    
 Адрес  134.234.0.5  10000110.11101010.00000000.00000101
Маска подсети  255.255.0.0  11111111.11111111.00000000.00000000
 Класс C    
 Адрес  199.60.32.12  11000111.00111100.00100000.00001100
Маска подсети  255.255.255.0  11111111.11111111.11111111.00000000

Рис. 3. Двоичная и десятичная формы адресов, принадлежащих к классам А, В и C, и используемые по умолчанию маски подсетей для каждого класса адресов.

Если все 8 разрядов последнего октета подсети класса С заполнены нулями, то все 8 разрядов в последнем октете соответствующего IP-адреса должны быть использованы для номера хоста: это означает, что подсетей нет. В каждом классе адресов используемая по умолчанию маска подсети всегда означает, что подсетей нет. (Для адреса класса А такая маска имеет вид 255.0.0.0, для адреса класса В используемая по умолчанию маска имеет вид 255.255.0.0). На рис. 3 приведены в десятичной и двоичной форме примеры IP-адресов всех трех классов и маски подсетей, используемые по умолчанию для каждого класса адресов.

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

Предположим, например, что вы хотите использовать три разряда в номере хоста в адресе класса С (три старших разряда последнего октета) в качестве номера подсети. Тогда вы должны заполнить единицами три старших разряда последнего октета в маске подсети. Оставшиеся пять разрядов октета будут обозначать номер хоста; значения в этих разрядах нужно оставить равными нулю. Двоичная запись последнего октета маски подсети будет иметь вид 11100000 (или 224 в десятичной форме). На рис. 4 приведен полный вид маски подсети для адреса класса С в двоичном и десятичном видах.

Рис. 4. В данной маске подсети, соответствующей адресу класса С, три старших разряда в последнем октете заполнены единицами. Это означает, что указанные разряды будут использованы в качестве номера подсети.

С помощью маски подсети вы можете назначать хостам IP-адреса и создавать подсети, указывая различные значения номеров подсети в IP-адресах различных хостов.

Развернутый пример

Предположим, что мы хотим назначить IP-адреса хостам в трех сегментах ЛВС, изображенных на рис. 2, но в нашем распоряжении имеется только один адрес класса В. Нам понадобятся как минимум три подсети – по одной на каждый из трех сегментов ЛВС. Однако поскольку в будущем число сегментов ЛВС может увеличиться до 12, нам сразу же стоит позаботиться о том, чтобы формат адреса подсети позволял присвоить 12 различных адресов подсетей.

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

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

Рис. 5. Определение IP-адреса при наличии подсетей.

Если 4 из 16 разрядов используемого по умолчанию номера хоста будут задавать номер подсети, то останется еще 12 разрядов для указания собственно номера хоста. Эти 12 разрядов позволят задать 4096 уникальных номеров хостов в каждой подсети.

Для того чтобы определить полное число возможных IP-адресов, нам нужно умножить возможное число подсетей (14) на возможное число хостов в каждой подсети (4096), что даст 57 344 IP-адреса. Это на 8190 IP-адресов меньше, чем в единой сети класса В, не имеющей подсетей. Иными словами, за удобство использования подсетей приходится расплачиваться потерей некоторого количества IP-адресов. На рис. 6 показаны IP-адреса, возможные в сети класса С, в которой используются трехразрядные номера подсетей. Как можно видеть, при этом многие IP-адреса перестают существовать.

 Подсеть  От IP-адреса   До IP-адреса  Всего адресов в диапазоне
 1  192.150.148.33  192.150.148.62  30
 2  192.150.148.65  192.150.148.94  30
 3  192.150.148.97  192.150.148.126  30
 4  192.150.148.129  192.150.148.158  30
 5  192.150.148.161  192.150.148.190  30
 6  192.150.148.193  192.150.148.222  30

Рис. 6. Если маска подсети 255.255.255.224 используется для того, чтобы разделить сеть 192.150.148.0 класса C на подсети, то полное число возможных адресов уменьшается с 254 до 180.

Теперь допустим, что мы захотели присвоить серверу, изображенному на рис. 2, номер хоста 14 в подсети с номером 3. На рис. 5 показана процедура присвоения серверу реального IP-адреса. Мы должны начать с базового номера сети (134.234) и установить необходимые значения во всех разрядах двух последних октетов. Сначала необходимо указать номер подсети, используя для этого 4 старших разряда в третьем октете (для подсети с номером 3 мы должны записать в двоичном виде 0011). Затем надо указать номер хоста, используя последние 4 разряда третьего октета и все 8 разрядов последнего октета (для хоста с номером 14 мы должны записать в двоичном виде 0000 0000 1110). Если теперь мы возьмем получившийся двоичный номер и выразим значения каждого из его октетов по отдельности в десятичном виде, то получим IP-адрес сервера (134.234.48.14).

Внутренние и уникальные IP-адреса

Какие IP-адреса использовать, если ваш провайдер услуг Internet не назначил вам никакого адреса? Если вы уверены, что никогда в будущем не станете подключать свою сеть к Internet, то можете использовать любые IP-адреса, соблюдая правила их назначения, о которых шла речь выше. Для простоты советуем вам использовать адреса класса С: в этом случае вам не придется вычислять значение маски подсети и вычислять адрес для каждого хоста.

Назначайте каждому сегменту ЛВС его собственный сетевой номер класса С. В этом случае вы сможете назначить каждому хосту полный IP-адрес простым добавлением десятичного номера хоста вслед за десятичным номером сети. Если все сегменты ЛВС имеют собственные сетевые номера класса С, то в каждом сегменте можно создать по 254 номера хостов. Однако если имеется хотя бы небольшая вероятность того, что когда-либо в будущем ваша сеть может быть подключена к Internet, не следует использовать такие IP-адреса, которые могут привести к конфликту с другими адресами в Internet. Чтобы избежать таких конфликтов, нужно либо попросить провайдера услуг Internet предоставить вам унифицированные IP-адреса, либо использовать IP-адреса, зарезервированные для частных сетей.

Более предпочтительно использовать уникальные IP-адреса, предоставленные провайдером. В этом случае вы можете быть уверены, что после того, как вы подключите свою сеть к Internet, ни один из ваших IP-адресов не будет иметь двойника во всей сети Internet. Многие провайдеры услуг Internet предоставляют организациям IP-адреса, даже если те имеют лишь коммутируемый доступ в сеть через модем. Однако некоторые провайдеры не предоставляют IP-адресов, если ваша сеть изначально не подключена к Internet. Но даже в случае, если провайдер и готов предоставить вам IP-адреса, вам, возможно, придется оплатить эту услугу. И все же, использование IP-адресов, являющихся уникальными в Internet, – это наилучший вариант, поскольку, когда вы подключитесь к Internet, вам, скоре всего, не придется перенастраивать конфигурацию хостов, а процедура установки шлюза между вашей сетью и сетью вашего провайдера тоже окажется несложной.

Другим способом избежать конфликтов IP-адресов в системе Internet является использование адресов, зарезервированных для частных сетей. Для этой цели комитет IANA зарезервировал несколько блоков IP-адресов (см. рис. 7). Вы можете выбрать адрес класса А, В или С, причем в последнем случае количество возможных адресов сетей составляет 256.

 Класс  От IP-адреса  До IP-адреса  Всего адресов в диапазоне
 A  10.0.0.0  10.255.255.255  16,777,216
 B  172.16.0.0  172.16.255.255  65,536
 C  192.168.0.0  192.168.255.255  65,536

Рис. 7. IP-адреса, зарезервированные для частных сетей TCP/IP.

Хосты в Internet не должны иметь IP-адресов с номерами из зарезервированных блоков. Поэтому, если в будущем вы подключите свою сеть к Internet, то даже если трафик с одного из хостов в вашей сети и попадет каким-либо образом в Internet, конфликта между адресами произойти не должно. Более того, сообщения с зарезервированных IP-адресов не передаются через Internet, поскольку маршрутизаторы в Internet запрограммированы так, чтобы не транслировать сообщения, направляемые с зарезервированных адресов или на них. На самом деле, ваш собственный шлюз в Internet должен препятствовать такому обмену. Поэтому, когда вы подключаете свою сеть к Internet, использование зарезервированных адресов для ваших хостов, скорее всего, не породит никаких конфликтов.

Недостаток использования IP-адресов, зарезервированных для частных сетей, состоит в том, что если вы подключаете свою сеть к Internet, то вам придется заново настроить конфигурацию хостов, соединяемых с Internet. Вы должны будете либо присвоить каждому такому хосту уникальный IP-адрес, либо настроить соединяющий шлюз в качестве промежуточного таким образом, чтобы он преобразовывал зарезервированные IP-адреса в уникальные IP-адреса, которые используются в Internet и которые выделил вам провайдер. (Более подробную информацию об IP-адресах, зарезервированных для частных сетей, можно найти в спецификации RFC1918 по адресу http://ds.internic.net/rfc/rfc1918.txt.)(П.Т.: В настоящий момент данная ссылка не работает. Мне удалось найти этот документ по адресу http://www.faqs.org/rfcs/rfc1918.html. Или попробуйте поискать с помощью своей любимой поисковой системы. Например, Google или на сайте RFC.net)

Терри Л. Джеффресс (Terry L. Jeffress) – сотрудник агентства Niche Associates, которое занимается написанием и редактированием технических статей.

Copyright © 1998-2004 Paul Tatarenko
Пишите : На деревню, Паше
Last updated: 17.10.04 20:53:58