Мой адрес — не дом и не улица #3: свойства IP

 | 19.01

Мой Компьютер, №25 (529), 10.11.2008

Маски подсети

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

  • Кто вообще выдумал отдать половину всего адресного пространства под адреса класса A, из которых можно создать только 126 сетей? И кроме того, ни один администратор в здравом уме даже подумать не посмеет о создании сети, содержащей несколько миллионов хостов. Да что там несколько миллионов хостов, даже тысяча хостов для одной сети — это что-то из ряда вон выходящее.
  • Если вам нужно создать сеть, состоящую не более чем из 300 хостов, вам придется использовать адреса класса B. Опять-таки адресное пространство используется нерационально — нужна сеть только из 300 хостов, а вам предлагают сеть из 64 000 хостов.
  • То же самое относится и к адресам класса C. Например, вам нужно объединить между собой два маршрутизатора. Чтобы это сделать, необходимо создать между ними сеть, состоящую только из двух хостов. Итак, вам нужна сеть из двух хостов, а вам предлагают сеть класса C, которая может состоять из 254 хостов.

В общем, компьютерное сообщество опять начало поиски возможных решений проблемы. Требовалось такое решение, которое не только раз и навсегда устранило бы основную проблему деления адресного пространства (нерациональное использование), но и было бы совместимо с используемым в данный момент классовым методом. И такое решение было найдено. В 1985 году новое решение было одобрено в RFC950 и получило название маски подсети.

Маска подсети не заменяет классовый метод адресации, а лишь дополняет его. На данный момент маску подсети поддерживают все современные операционные системы. Естественно, к этому числу относится и Windows Vista (если мне не изменяет память, маску подсети поддерживала еще Windows 2000).

Маска подсети — это 32-битное число, аналогичное по своей структуре IP-адресу. Сначала в маске подсети указываются единицы, а потом указываются нули. Сколько бит в маске подсети равно 1, столько бит IP-адреса будет использоваться для определения номера сети. Оставшиеся биты в IP-адресе будут использоваться для определения номера хоста. В качестве примера посмотрите на маску подсети, которая могла бы использоваться для определения IP-адресов, относящихся к тому или иному классу:

  • Класс A: 11111111.00000000.00000000.00000000, или 255.0.0.0;
  • Класс B: 11111111.11111111.00000000.00000000, или 255.255.0.0;
  • Класс C: 11111111.11111111.11111111.00000000, или 255.255.255.0.

Пример: разбиение адреса сети

В качестве примера давайте попробуем решить такую задачку. Допустим, нам дали адрес сети класса A, например, 77.0.0.0. Неважно, как мы получили такой адрес, ценящийся на вес золота, но все-таки. У нас есть один адрес сети, но вот проблема — сетей-то у нас как минимум 5, каждая из которых состоит не более чем из 1000 узлов. На покупку еще 4-х адресов сети денег нет L, поэтому придется обойтись только имеющейся. Для решения подобных задач и предназначена технология маски подсети.

Итак, актив:

  • адрес сети 77.0.0.0.
  • маска подсети для этого адреса 11111111.00000000.00000000.0000000.

Нам нужно разделить сеть 77.0.0.0 на 5 отдельных подсетей. Чтобы сделать это, необходимо расширить количество битов

IP-адреса, которые будут отвечать за определение номера сети. В нашем случае необходимо 3 дополнительных бита — с их помощью можно создать 8 подсетей (2 в 3 степени), чего вполне хватит для требующихся нам 5 подсетей, и еще останется место для расширения количества подсетей.

Добавив к номеру сети три дополнительных бита, мы получим следующую маску подсети: 11111111.11100000.00000000.00000000, или 255.224.0.0. C помощью такой маски подсети можно разбить один адрес сети на 5 подсетей — например, следующих:

x.010xxxxx.x.x = 77.64.0.0;

x.100xxxxx.x.x = 77.128.0.0;

x.101xxxxx.x.x = 77.160.0.0;

x.110xxxxx.x.x = 77.192.0.0;

x.111xxxxx.x.x = 77.224.0.0;

Однако как обстоят дела с хостами? Хватит ли нам того количества хостов, которое может использоваться в созданных адресах сети? Если нам нужно не более 1000 хостов в одной сети, то, конечно, хватит. Ведь под номер хоста отводится целых 21 бит, т.е. в наших сетях может быть более 2 000 000 хостов.

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

01001101.10100000.0.0

11111111.11100000.0.0

Итак, для определения номера хоста в нашем адресе сети используется только 5 бит второго байта. То есть, первый, второй и последний адреса в нашей сети будут следующими:

Первый: 01001101.10100000.0.00000001, или 77.160.0.1

Второй: 01001101.10100000.0.00000010, или 77.160.0.2

Последний: 01001101.10111111.11111111.11111110, или 77.191.255.254

То есть, наша первая сеть может состоять из следующих хостов:

77.160.0.1

77.160.0.2

77.161.0.1

77.161.0.2

77.161.1.1

77.161.2.1

77.191.255.254

Аналогично определяются адреса хостов и для остальных сетей.

Маску подсети мы нашли. Возможные адреса хостов при использовании данной маски мы также нашли. Теперь осталось только сконфигурировать операционную систему Windows Vista для того, чтобы она стала использовать нашу маску подсети.

Для этого отобразите диалог Центр управления сетями и общим доступом (например, с помощью одноименного пункта контекстного меню значка сети в области уведомлений), после чего нажмите на ссылку Управление сетевыми подключениями, расположенную в левой панели диалога. Перед вами отобразится диалог Сетевые подключения, содержащий перечень сетевых адаптеров, модемов и др. сетевого оборудования, установленного на вашем компьютере. Выберите сетевой адаптер, для которого вы хотите указать новый IP-адрес, и в его контекстном меню выберите пункт Свойства. Перед вами появится диалог свойств выбранного адаптера, на вкладке Сеть которого есть список компонентов, которые используются подключением. В этом списке выделите пункт Протокол Интернета версии 4 (TCP/IP) и нажмите кнопку Свойства. Вы увидите диалог свойств (рис. 1), в котором нужно установить переключатель в положение Использовать следующий IP-адрес, после чего в поле IP-адрес ввести найденный нами IP-адрес, который будет присвоен данному компьютеру (ну, например, 77.160.0.1), а в поле Маска подсети — найденную нами маску (255.224.0.0).

Пример: определение сведений по IP и маске подсети

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

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

Итак, операционная система знает свой IP-адрес, свою маску сети и адрес своей сети. Об удаленном же компьютере она знает только одно — его IP-адрес. Этого явно недостаточно для того, чтобы начать взаимодействие. Как минимум, операционной системе еще нужно узнать адрес сети, в которую входит удаленный компьютер. Чтобы это сделать, операционная система выполняет умножение по модулю два IP-адреса удаленного компьютера на свою маску подсети. Если в результате этого умножения получится значение, аналогичное адресу сети локального компьютера, значит локальный и удаленный компьютер находятся в одной и той же сети. А следовательно, для них используется одна и та же маска подсети.

Parad0x,

Robo User
Web-droid editor

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *