четверг, 12 марта 2009 г.

Методы адресации в IP-сетях ( часть 2 )



Что такое автономные сети, и что происходит, когда в сети обнаруживается два компьютера с одинаковыми IP-адресами. Класс B

10XXXXXX.XXXXXXXX.YYYYYYYY.YYYYYYYY Номер сети: 14 бит первого байта, то есть, в классе B может быть не более 16 000 с хвостиком сетей (2 в 14 степени). Номер хоста: 16 бит (примерно по 64 000 хостов в каждой сети). Диапазон: 128.0.0.0 - 191.255.0.0

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

Помимо адресов класса A классовый метод определяет адреса класса B. В этот класс входят все адреса, номер сети которых начинается с битов 10. При этом на определение номера сети отводится 2 первых байта IP-адреса. То есть, схематично IP-адрес класса B в двоичном виде можно представить так: 10XXXXXX.XXXXXXXX.YYYYYYYY.YYYYYYYY, где X является битом номера сети, а Y - битом номера хоста.

Диапазон IP-адресов класса B начинается адресом 128.0.0.0, и заканчивается адресом 191.255.0.0. Это естественно, ведь все адреса до адреса 128.0.0.0 относятся к классу A. Адреса же, которые идут после адреса 191.255.0.0, будут относиться к другим классам. Класс C

110XXXXX.XXXXXXXX.XXXXXXXX.YYYYYYYY Номер сети: 21 бит первого байта, то есть, в классе C может быть не более 2 000 000 с хвостиком сетей (2 в 21 степени). Номер хоста: 8 бит (по 256 хостов в каждой сети). Диапазон: 192.0.0.0 - 223.255.255.0

Итак, давайте подытожим сведения об общей доле адресов того или иного класса среди всех возможных IP-адресов. Половина всех возможных IP-адресов относится к классу A. Половина оставшихся IP-адресов относится к классу B (то есть, четверть всех адресов). Ну, а к классу C относится половина того, что осталось после выделения адресов для класса A и класса B (то есть, восьмая часть всех адресов).

Номер сети в адресах класса C должен начинаться с битов 110. При этом на определение номера сети отводится 3 первых байта IP-адреса. То есть, схематично IP-адрес класса C в двоичном виде можно представить так: 110XXXXX.XXXXXXXX.XXXXXXXX.YYYYYYYY.

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

Весь диапазон возможных IP-адресов следующий: 0.x.x.x - 255.x.x.x.

Под адреса класса A отводится первая половина всего диапазона IP-адресов (то есть, в числовом эквиваленте, 256-128 = 128): 0.y.y.y-127.y.y.y.

Под адреса класса B отводится половина оставшегося диапазона IP-адресов (то есть, в числовом эквиваленте, 256-128-64 = 64): 128.x.y.y-191.x.y.y.

Под адреса класса C отводится половина оставшегося диапазона IP-адресов (то есть, в числовом эквиваленте, 256-128-64-32 = 32): 192.x.x.y-223.x.x.y. Итак, диапазон адресов класса C следующий: 192.0.0.0 - 223.255.255.0.

Определение компьютеров с одинаковыми IP-адресами Следует понимать, что адреса классов A, B и C предназначены для идентификации отдельных компьютеров в сети. А значит, в сети не может существовать двух и более компьютеров, имеющих одинаковый IP-адрес. При возникновении такой ситуации все "лишние" компьютеры работать в сети не смогут. Сможет работать только самый первый компьютер с одинаковым IP-адресом.

Но давайте рассмотрим эту ситуацию на примере. Итак, вы включаете компьютер. Допустим, этому компьютеру присвоен IP-адрес, который также присвоен какому-либо другому компьютеру сети (причем, этот другой компьютер в данный момент подключен к сети).

Как только операционная система Windows вашего компьютера загрузилась, она отправляет в сеть специальный ARP-запрос, наподобие следующего: "все компьютеры сети, которые имеют указанный в запросе IP-адрес, пожалуйста, пришлите мне свои MAC-адреса!". В качестве запрашиваемого IP-адреса операционная система указывает свой собственный IP-адрес. То есть, если в сети есть компьютеры с таким же IP-адресом, они пришлют вашей операционной системе ответ на ARP-запрос, содержащий в себе их MAC-адрес. MAC-адреса других компьютеров вашей операционной системе ни к чему, но зато она сразу поймет, что в сети есть другой компьютер, которому присвоен тот же IP-адрес. Как только она это поймет, перед вами отобразится сообщение об ошибке, и ваш компьютер будет отключен от сети. Зато другой компьютер, который использовал ваш IP-адрес до того момента, как вы включили свой компьютер, и дальше сможет работать в сети.

Если на первый ARP-запрос ответа не пришло, операционная система Windows на всякий случай еще раз посылает такой же ARP-запрос. Вдруг ответ на первый ARP-запрос затерялся где-то в сети?

По умолчанию таким образом посылается 3 ARP-запроса. Однако с помощью параметра REG_DWORD типа ArpRetryCount ветви реестра HKLMSYSTEMCurrentControlSetServicesTcpipParameters вы можете самостоятельно указать максимальное количество ARP-запросов, которые будет посылать операционная система Windows.

Если же вы присвоите данному параметру значение 0, тогда операционная система Windows вообще не будет посылать ARP-запросы. То есть, она не будет проверять дублирование IP-адресов в сети, а сразу же к ней подключится и будет с ней работать (правда, в этом случае никто не будет гарантировать, что при вашей работе с сетью не будут возникать различные ошибки). И в этом нет ничего удивительного. Например, данное поведение присуще большинству операционных систем семейства Linux. Они также при подключении к сети не проверяют, есть ли в сети компьютеры, использующие тот же IP-адрес, что и вы.

А вот интересно, смогут ли в одной сети "корректно" работать два компьютера с одинаковыми IP-адресами? Вряд ли! Если в один момент времени эти компьютеры взаимодействуют (отправляют данные) с разными компьютерами сети, тогда все может быть сравнительно нормально. А вот если эти два компьютера вдруг вздумают одновременно взаимодействовать с одним и тем же компьютером сети, тогда начнутся различные ошибки. Также ошибки могут возникнуть в том случае, если какой-то компьютер захочет послать данные одному из компьютеров с одинаковым IP-адресом. Этот случай подобен игре "орел-решка". Ведь для того, чтобы послать данные компьютеру из сети, необходимо знать его MAC-адрес. А чтобы узнать MAC-адрес компьютера, посылается широковещательный ARP-запрос. И доподлинно неизвестно, какой из двух компьютеров с одинаковыми IP-адресами первым ответит на такой запрос (как и неизвестно, какому из компьютеров отправит данные станция - тому, который первым ответил на ARP-запрос, или тому, который ответил последним; это зависит от реализации стека TCP/IP). И, конечно, два компьютера с одинаковыми IP-адресами ни в коем случае не смогут взаимодействовать друг с другом. Класс D

1110XXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX Количество возможных групп: 256 000 000 с хвостиком. Диапазон: 224.0.0.0-239.255.255.255

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

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

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

1111XXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX Диапазон: 240.0.0.0 - 248.255.255.255

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

К классу E относится оставшаяся шестнадцатая часть всех возможных адресов протокола IP. Автономные сети

Адреса класса A, B и C содержат в себе ряд сетей, которые называются автономными сетями. К таким сетям относятся следующие сети:

* В классе А сеть 10.0.0.0; * В классе В 16 сетей с 172.16.0.0 по 172.31.0.0 (все эти адреса сетей можно записать с помощью одного адреса 172.16.0.0/12, однако такой способ записи адресов мы рассматривать не будем, хотя в нем нет ничего сложного: /); * В классе С 256 сетей с 192.168.0.0 по 192.168.255.0 (все эти адреса сетей можно записать с помощью одного адреса 192.168.0.0/16).

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

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

В целом классовый метод создания 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.

VLSM или Variable Length Subnet Mask (Маски подсети переменной длины) - это не что-то страшное, а лишь дополнение (или специальный метод использования) к технологии маски подсети. Дело в том, что не все администраторы понимают, что подсеть, полученная путем использования маски подсети, является такой же сетью, и к ней также можно дополнительно применять маску посети. То есть, имея один адрес сети, вы можете разделить его на набор сетей с разным количеством хостом, используя маски подсети разной длины. Чтобы напомнить об этом, и появился новый термин VLSM.

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

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

Итак, актив:

* адрес сети 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

Обратите внимание на последний адрес: 01001101.10111111.11111111.11111110. Как видите, в нем в номере хоста есть только один 0 (самый младший), все остальные биты установлены в единицу. Если мы установим и самый младший бит в единицу, то это уже будет не номер хоста, а широковещательный адрес в заданную сеть.

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

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-адреса удаленного компьютера на свою маску подсети. Если в результате этого умножения получится значение, аналогичное адресу сети локального компьютера, значит локальный и удаленный компьютер находятся в одной и той же сети. А следовательно, для них используется одна и та же маска подсети.

www.onestyle.com.ua

Методы адресации в IP-сетях ( часть 1 )

Комментариев нет:

Отправить комментарий