Основы адресации в IP-сетях

Одной из главных проблем, которую нужно разрешить при объединении компьютеров в сеть, является проблема их адресации. К адресу узла сети и схеме его назначения можно предъявить несколько требований [19]:

1. Адрес должен уникально идентифицировать компьютер в сети любого масштаба.

2. Адрес должен иметь иерархическую структуру, удобную для построения больших сетей. Эту проблему хорошо иллюстрируют международные почтовые адреса, которые позволяют почтовой службе, организующей доставку писем между странами, пользоваться только названием страны адресата и не учитывать название его города, а тем более улицы. В больших сетях, состоящих из многих тысяч узлов, отсутствие иерархии адреса может привести к крупным издержкам: конечным узлам и коммуникационному оборудованию придется оперировать с таблицами адресов, состоящими из тысяч записей.

3. Адрес должен быть удобен для пользователей сети, а это значит, что он должен иметь символьное представление и, по возможности, смысловую нагрузку.

4. Адрес должен иметь по возможности компактное представление, чтобы не перегружать память коммуникационной аппаратуры – сетевых адаптеров, коммутаторов, маршрутизаторов и т. п.

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

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

В настоящее время известны следующие системы адресации:

1) составные числовые адреса;

2) аппаратные адреса;

3) символьные адреса.

В данном параграфе мы подробно разберем достоинства первой системы адресации (остальные системы будут рассмотрены в следующем параграфе).

Составные числовые адреса предназначены для однозначной адресации компьютера в сети любого масштаба, состоящей из подсетей. В адресах такого типа поддерживается двухуровневая иерархия, адрес делится на старшую часть – номер сети – и младшую – номер узла. Такое деление позволяет передавать сообщения между сетями только на основании номера сети, а номер узла используется только после доставки сообщения в нужную сеть; точно так же, как название улицы рассматривается почтальоном только после того, как письмо доставлено в нужный город. Типичные представители адресов этого типа – IP-адреса. Аналогично протоколам существуют адреса IPv4 и IPv6.

2.3.1 Адресация IPv4

Адреса IPv4 при выражении в десятичной системе используют точечное десятичное представление и принимают форму n.n.n.n, в которой n для каждого значения неизменно находится в диапазоне от 0 до 255. Так, IP-адрес крупнейшего российского почтового сервера в сети Интернет www.mail.ru имеет вид 194.67.57.26. Существуют некоторые ограничения на использование чисел: первое число в IP-адресе должно находиться в диапазоне от 1 до 223, а последнее – от 1 до 254, два числа в середине IP-адреса могут находиться в диапазоне от 0 до 255. Каждое из четырех чисел состоит из 8 бит и в стандартной терминологии IP-адресов называется октетом (octet). Следовательно, каждый из октетов представляет собой восьмизначное двоичное число, а IP-адрес целиком – тридцатидвухбитовую комбинацию нулей и единиц. Например, IP-адрес 128.10.2.30 имеет представление в двоичном формате: 10000000.00001010.00000010.00011110.

Запись адреса не предусматривает специального разграничительного знака между номером сети и номером узла. Вместе с тем при передаче пакета по сети часто возникает необходимость разделить адрес на эти две части. Так, маршрутизация, как правило, осуществляется на основании номера сети, поэтому каждый маршрутизатор, получая пакет, должен прочитать в соответст­вующем поле заголовок адрес назначения и выделить из него номер сети. Существует несколько подходов для определения, какая часть из 32 бит, отведенных под IP-адрес, относится к номеру сети (сетевая часть адреса), а какая – к номеру узла (хостовая часть адреса). Мы рассмотрим два основных подхода для адресации с помощью IPv4 [31]:

1) упрощенный подход;

2) классовый подход.

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

При упрощенном подходе используется двухуровневая адресация, так как выделяется фиксированная граница для разделения адреса на сетевую и хостовую часть, то есть адрес компьютера состоит только из двух частей: сетевой и хостовой. Все 32-х-битовое поле адреса заранее делится на две части не обязательно равной, но фиксированной длины, в одной из которых всегда будет разме­щаться номер сети, а в другой – номер узла. Маска подсети принимает только 2 значения: либо 0, либо 255, которые устанавливаются в следующем порядке: 255 устанавливается под октетами, описывающими адрес сети (постоянная часть), а 0 устанавливается под октетами, описывающими адрес узла (переменная часть). Приведем пример двухуровневой архитектуры. Например, IP-адреса 128.10.2.30 и 128.10.3.30 имеют следующее представление в двоичном формате:

10000000.00001010.00000010.00011110,

10000000.00001010.00000011.00011110.

Так как у указанных IP-адресов изменяются последние два октета, то маска подсети будет выглядеть так: 255.255.0.0, а в двоичном виде выглядит – 11111111.11111111.00000000.00000000. Сопоставление адресов и маски подсети представлено в табл. 2.4.

Таблица 2.4 – Деление IP-адреса в соответствии с двухуровневой архитектурой

  1 октет 2 октет 3 октет 4 октет
Адрес 1 10000000. 00001010. 00000010.  
Адрес 2 10000000. 00001010. 00000011.  
Маска подсети 11111111. 11111111. 00000000. 00000000
Деление адреса Адрес сети Адрес узла

Приведем подобные примеры для разных видов сетей.

1. Для адресов 128.230.240.118 и 128.230.240.170 и маски подсети 255.255.255.0 запись адресов выглядит следующим образом:

128.230.240.118,

128.230.240.170,

255.255.255.0.

Судя по маске подсети, адресом сети (ID subnet) будут являться первые три октета (128.230.240.0), а адресом узла – последний. Все компьютеры, которые будут иметь такую же постоянную часть сетевого адреса, смогут обмениваться данными, то есть находиться в одной подсети. Если же компьютер будет иметь адрес с иной постоянной частью, то он будет находиться в другой подсети и «видеть» указанные компьютеры не сможет. В итоге мы получили сеть, состоящую из 254 компьютеров (последний октет может изменяться от 1 до 254). Так как первый октет может меняться от 1 до 223, второй и третий – от 0 до 255, а последний – от 1 до 254, то для указанной маски подсети можно организовать 14614528 (223х256х256=14614528) сетей по 254 компьютера в каждой.

2. Для адресов 128.230.240.118, 128.230.240.170 и 128.230.90.17 и маски подсети 255.255.0.0 запись адресов выглядит следующим образом:

128.230.240.118,

128.230.240.170,

128.230.90.17,

255.255.0.0.

Судя по маске подсети, адресом сети будут являться первые два октета (128.230.0.0), а адресом узла – последние два. В итоге мы получили сеть, состоящую из 65024 (256х254=65024) компьютеров. По аналогии с примером 1, приходим к следующему выводу: для указанной маски подсети можно организовать 57088 (223х256=57088) сетей по 65024 компьютера в каждой.

3. Для адресов 128.230.240.118, 128.230.240.170, 128.230.90.17 и 128.1.9.7 и маски подсети 255.0.0.0 запись адресов выглядит следующим образом:

128.230.240.118,

128.230.240.170,

128.230.90.17,

128.1.9.7,

255.0.0.0.

Судя по маске подсети, адресом сети будет являться первый октет (128.0.0.0), а адресом узла – последние три. В итоге мы получили сеть, состоящую из 16646144 (256х256х254=16646144) компьютеров. По аналогии с примерами 1 и 2, приходим к следующему выводу: для указанной маски подсети можно организовать 223 сети по 16646144 компьютеров в каждой.

Представленные примеры могут иметь табличный вид (табл. 2.5).

Таблица 2.5 – Сетевая и хостовая часть IP-адреса при упрощенном подходе

Маска подсети Вид адреса Макс. кол-во сетей Макс. кол-во узлов в сети
255.255.255.0 a.a.a.b    
255.255.0.0 a.a.b.b    
255.0.0.0 a.b.b.b    
a – сетевая часть адреса; b – хостовая часть адреса

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

Классовый подход. Наиболее распространенный и охватывающий все функциональные возможности IP-адресации способ решения данной проблемы заключается в использовании классов адресов. Вводится пять классов адресов: А, В, С, D, Е. Три из них – А, В и С – используются для адресации сетей, а два – D и Е – имеют специ­альное назначение. Для каждого класса сетевых адресов определено собствен­ное положение границы между номером сети и номером узла.

В указанном подходе большую роль играет двоичная арифметика (в данном пособии не будут рассматриваться азы двоичной арифметики, так как предполагается, что студент владеет переводом чисел из двоичной системы в десятичную и наоборот) [9]. В табл. 2.6 и 2.7 приведены значения, необходимые для проведения расчетов сетевых адресов и масок подсети.

Таблица 2.6 – Основные числа в двоичном и десятичном видах
для сетевой и хостовой частей

Хостовая часть Сетевая часть
Десятичный вид Двоичный вид Десятичный вид Двоичный вид
20-1 =   00000000   00000000
21-1 =   00000001   10000000
22-1 =   00000011   11000000
23-1 =   00000111   11100000
24-1 =   00001111   11110000
25-1 =   00011111   11111000
26-1 =   00111111   11111100
27-1 =   01111111   11111110
28-1 =   11111111   11111111

К классу А относится адрес, в котором старший бит имеет значение 0. В адре­сах класса А под идентификатор сети отводится 1 байт (1-й октет), а остальные 3 байта интерпретируются как номер узла в сети. Сети, все IP-адреса которых имеют значение первого байта в диапазоне от 1 (00000001) до 126 (01111110), назы­ваются сетями класса А. Значение 0 (00000000) первого байта не использует­ся, а значение 127 (01111111) зарезервировано для специальных целей (об этом будет сказано далее). Сетей класса А сравнительно немного, зато количество узлов в них огромно ( см. табл. 2.5).

К классу В относятся все адреса, старшие два бита которых имеют значе­ние 10. В адресах класса В под номер сети и под номер узла отводится по два байта. Сети, значения первых двух байтов адресов которых находятся в диа­пазоне от 128.0. (10000000.00000000)до 191.255 (10111111.11111111),назы­ваются сетями класса В. Сетей класса В больше, чем сетей класса А, а размеры их меньше (см. табл. 2.5).

К классу С относятся все адреса, старшие три бита которых имеют значе­ние 110. В адресах класса С под номер сети отводится 3 байта, а под номер узла – 1 байт. Сети, старшие три байта которых находятся в диапазоне от 192.0.0 (11000000.00000000.00000000) до 223.255 (11011111.11111111.11111111), называются сетями класса С. Сети класса С наиболее распространены и имеют наименьшее максимальное число узлов (см. табл. 2.5).

Если адрес начинается с последовательности 1110, то он является адресом класса D и обозначает особый групповой адрес (multicast address). Адреса классов А, В и С используются для идентификации отдельных сетевых интерфейсов, то есть являются индивидуальными адресами (unicast address), тогда как групповой адрес идентифицирует группу сетевых интерфейсов, ко­торые в общем случае могут принадлежать разным сетям. Интерфейс, входя­щий в группу, получает, наряду с обычным индивидуальным IP-адресом, еще один групповой адрес. Если при отправке пакета в качестве адреса назначе­ния указан адрес класса D, то такой пакет должен быть доставлен всем узлам, которые входят в группу.

Таблица 2.7 – Сводная таблица зависимостей чисел, используемых в адресации IPv4

Десятичная система Двоичная система Десятичная система Двоичная система Десятичная система Двоичная система Десятичная система Двоичная система
  00000000   01000000   10000000   11000000
  00000001   01000001   10000001   11000001
  00000010   01000010   10000010   11000010
  00000011   01000011   10000011   11000011
  00000100   01000100   10000100   11000100
  00000101   01000101   10000101   11000101
  00000110   01000110   10000110   11000110
  00000111   01000111   10000111   11000111
  00001000   01001000   10001000   11001000
  00001001   01001001   10001001   11001001
  00001010   01001010   10001010   11001010
  00001011   01001011   10001011   11001011
  00001100   01001100   10001100   11001100
  00001101   01001101   10001101   11001101
  00001110   01001110   10001110   11001110
  00001111   01001111   10001111   11001111
  00010000   01010000   10010000   11010000
  00010001   01010001   10010001   11010001
  00010010   01010010   10010010   11010010
  00010011   01010011   10010011   11010011
  00010100   01010100   10010100   11010100
  00010101   01010101   10010101   11010101
  00010110   01010110   10010110   11010110
  00010111   01010111   10010111   11010111
  00011000   01011000   10011000   11011000
  00011001   01011001   10011001   11011001
  00011010   01011010   10011010   11011010
  00011011   01011011   10011011   11011011
  00011100   01011100   10011100   11011100
  00011101   01011101   10011101   11011101
  00011110   01011110   10011110   11011110
  00011111   01011111   10011111   11011111
  00100000   01100000   10100000   11100000
  00100001   01100001   10100001   11100001
  00100010   01100010   10100010   11100010
  00100011   01100011   10100011   11100011
  00100100   01100100   10100100   11100100
  00100101   01100101   10100101   11100101
  00100110   01100110   10100110   11100110
  00100111   01100111   10100111   11100111
  00101000   01101000   10101000   11101000
  00101001   01101001   10101001   11101001
  00101010   01101010   10101010   11101010
  00101011   01101011   10101011   11101011
  00101100   01101100   10101100   11101100
  00101101   01101101   10101101   11101101
  00101110   01101110   10101110   11101110
  00101111   01101111   10101111   11101111
  00110000   01110000   10110000   11110000
  00110001   01110001   10110001   11110001
  00110010   01110010   10110010   11110010
  00110011   01110011   10110011   11110011
  00110100   01110100   10110100   11110100
  00110101   01110101   10110101   11110101
  00110110   01110110   10110110   11110110
  00110111   01110111   10110111   11110111
  00111000   01111000   10111000   11111000
  00111001   01111001   10111001   11111001
  00111010   01111010   10111010   11111010
  00111011   01111011   10111011   11111011
  00111100   01111100   10111100   11111100
  00111101   01111101   10111101   11111101
  00111110   01111110   10111110   11111110
  00111111   01111111   10111111   11111111

Если адрес начинается с последовательности 11110, то это значит, что данный адрес относится к классу Е. Адреса этого класса зарезервированы для буду­щих применений (табл. 2.8).

Таблица 2.8 – Классы IP-адресов

Класс Первые биты Маска подсети Диапазон адресов Особые адреса
А   255.0.0.0 1.0.0.0 – 126.0.0.0 10.0.0.0 – 10.255.255.255
В   255.255.0.0 128.0.0.0 – 191.255.0.0 172.16.0.0 – 172.31.255.255
С   255.255.255.0 192.0.0.0 – 223.255.255.0 192.168.0.0 – 192.168.255.255
D   224.0.0.0 – 239.255.255.255
E   240.0.0.0 – 247.255.255.255

Как уже отмечалось выше, адресация IPv4 используется и в локальных сетях, и в сети Интернет. Именно с этим фактором связано выделение у классов А, В и С особых адресов, которые специально закреплены для использования в локальных сетях, то есть в сети Интернет нет ни одного узла, который бы имел адрес, попадающий в указанные диапазоны. Следовательно, для использования в локальных сетях выделены диапазоны адресов одной сети класса А, 16 последовательных сетей класса В и 256 последовательных сетей класса С. Именно поэтому уже классическим стали адреса локальной сети, которые начинаются с 192.168.х.х.

Отдельного упоминания заслуживает IP-адрес, первый октет которого равен 127. Этот адрес яв­ляется внутренним адресом стека протоколов компьютера. Он используется для тестирования программ, а также для организации работы клиентской и серверной частей приложения, установленных на одном компьютере. Обе программные части данного приложения спроектированы в расчете на то, что они будут обмениваться сообщениями по сети. Если использовать реальный адрес ком­пьютера, на котором они установлены, то это приводит к избыточным переда­чам пакетов в сеть. Экономичным решением является применение внутреннего адреса 127.0.0.0. В IP-сети запрещается присваивать сетевым интерфейсам IP-адреса, начинающиеся со 127. Когда программа посылает данные по IP-адресу 127.х.х.х, то данные не передаются в сеть, а возвращаются модулям верхнего уровня того же компьютера как только что принятые. Маршрут перемещения данных образует «петлю», поэтому этот адрес называется адресом обратной петли (loopback). Классическим примером такого адреса является 127.0.0.1 [1].

Также необходимо отметить Групповые адреса (multicast), относящиеся к классу D, которые предназначены для эконо­мичного распространения в Интернете или большой корпоративной сети аудио- или видеопрограмм, сразу адресованных большой аудитории слушателей или зрителей. Если групповой адрес помещен в поле адреса назначения IP-пакета, то данный пакет должен быть доставлен сразу нескольким узлам, которые образу­ют группу с номером, указанным в поле адреса. Один и тот же узел может вхо­дить в несколько групп. В общем случае члены группы могут распределяться по различным сетям, находящимся друг от друга на произвольно большом расстоянии. Групповой адрес не делится на номера сети и узла и обрабатывается маршрутизатором особым образом.

В TCP/IP существуют ограничения при назначении IP-адресов, а именно: номе­ра сетей и номера узлов не могут состоять из одних двоичных нулей или единиц. Поэтому некоторые IP-адреса интерпретируются особым образом:

1) если IP-адрес состоит только из двоичных нулей, то он называется неопре­деленным адресом и обозначает адрес того узла, который генерировал этот пакет (в редких случаях такой адрес может быть использован только отправителем);

2) если в номере сети стоят только нули, то по умолчанию считается, что узел назначения принадлежит той же самой сети, что и узел, который отправил пакет (такой адрес тоже может быть использован только в качестве ад­реса отправителя);

3) если все двоичные разряды IP-адреса равны 1, то пакет с данным адресом на­значения должен рассылаться всем узлам, находящимся в той же сети, что и источник этого пакета (такой адрес называется ограниченным широковеща­тельным (limited broadcast), и ограниченность в данном случае означает, что пакет не выйдет за границы данной сети ни при каких условиях);

4) если в адресе назначения в разрядах, соответствующих номеру узла, стоят только единицы, то пакет, имеющий данный адрес, рассылается всем узлам сети, номер которой указан в адресе назначения. Например, пакет с адресом 192.190.21.255 будет направлен всем узлам сети 192.190.21.0. Такой тип адре­са называется широковещательным (broadcast).

Классовый подход имеет определенную специфику адресации и характеризуется не наличием классов, которые имеются и в упрощенном подходе, а основным его отличием является введение в данную систему адресации трехуровневой архитектуры. Здесь в адресе компьютера можно выделить три составляющих: адрес сети, адрес подсети и адрес узла.

Маска подсети может принимать несколько значений: 0, 128, 192, 224, 240, 248, 252, 254, 255 (см. табл. 2.6). Число 255 устанавливается под октетами, описывающими адрес сети (постоянная часть) и определяет класс сети, а 0 – под октетами, описывающими адрес узла (переменная часть). Остальные из указанных чисел определяют номер подсети, который может стоять либо в конце маски подсети, либо посередине – между числами 255 и 0. Приведем примеры масок подсети в трехуровневой архитектуре адресов (табл. 2.9).

Таблица 2.9 – Примеры деления IP-адреса в соответствии с трехуровневой архитектурой

Класс сети 1-й октет 2-й октет 3-й октет 4-й октет
С        
         
x y z
C        
         
x y z
B        
         
x y z
B        
         
x y z
A        
         
x y z
A        
         
x y z
A        
         
x y z
x – адрес сети; y – адрес подсети; z – адрес узла.
                   

Приведем пример расчета маски подсети в соответствии со следующими данными:

В средней школе №200 должны иметься 12 сетей класса С (компьютерные классы, администрация, бухгалтерия и т.д.), в каждой из которых могут находиться максимум 13 компьютеров.

Смысл разбиения на подсети – это ограничение обмена информацией между компьютерами, находящихся в разных подсетях. Необходимо произвольно дать сети определенный адрес. Например, так как сеть для школы №200 локальная, адрес сети может выглядеть следующим образом: 192.168.200.х, с маской подсети класса С 255.255.255.y, где х – номера узлов, разбитых в соответствии с заданием, а у – значение 4-го октета, позволяющего решать поставленную задачу, которая решается в 3 этапа.

1 этап. Расчет маски подсети.

Число 12 лежит между числами 8 (23) и 16 (24). Берем большее число, то есть в нашем расчете число подсетей будет равно 16, но в 16 подсетях можно распределить 12 исходных, а вот в 8 – нет. Следовательно, нужна 4-х-разрядная маска подсети. Отсчитываем 4 старших разряда в последнем октете и получаем двоичное число 11110000, что соответствует числу 240 (см. табл. 2.6). В итоге получается маска подсети 255.255.255.240.

Таблица 2.10 – Подсети для маски 255.255.255.240

ID подсети Диапазон адресов Адрес для широковещания
первый адрес последний адрес
  192.168.200.0 192.168.200.1 192.168.200.14 192.168.200.15
  192.168.200.16 192.168.200.17 192.168.200.30 192.168.200.31
  192.168.200.32 192.168.200.33 192.168.200.46 192.168.200.47
  192.168.200.48 192.168.200.49 192.168.200.62 192.168.200.63
  192.168.200.64 192.168.200.65 192.168.200.78 192.168.200.79
  192.168.200.80 192.168.200.81 192.168.200.94 192.168.200.95
  192.168.200.96 192.168.200.97 192.168.200.110 192.168.200.111
  192.168.200.112 192.168.200.113 192.168.200.126 192.168.200.127
  192.168.200.128 192.168.200.129 192.168.200.142 192.168.200.143
  192.168.200.144 192.168.200.145 192.168.200.158 192.168.200.159
  192.168.200.160 192.168.200.161 192.168.200.174 192.168.200.175
  192.168.200.176 192.168.200.177 192.168.200.190 192.168.200.191
  192.168.200.192 192.168.200.193 192.168.200.206 192.168.200.207
  192.168.200.208 192.168.200.209 192.168.200.222 192.168.200.223
  192.168.200.224 192.168.200.225 192.168.200.238 192.168.200.239
  192.168.200.240 192.168.200.241 192.168.200.254 192.168.200.255

2 этап. Проверка количества узлов.

В числе 240 последние 4 разряда равны 0, значит, с их помощью можно представить хостовую часть адреса: 24=16 адресов (возможные варианты с 0 по 15 представлены в таблице 10). Как отмечалось выше, первый и последний адрес (0000 и 1111) отбрасываем, так как адрес узла не может заканчиваться на все нули, а все единицы в адресе используются для широковещания в подсети. Итого имеем 16–2=14 адресов, которые вполне можно адресовать 13 компьютерам, а значит, с помощью разработанной маски подсети можно выполнить поставленное задание.

Итак, разработанная нами маска подсети 255.255.255.240 может создать максимально 16 подсетей по 14 компьютеров в каждой, то есть задание выполнено (см. табл. 2.10). Если же в каждой подсети необходимо более 14 хостов, то рассчитанная маска подсети не сможет обеспечить желаемого результата.

Таблица 2.11 – Адреса подсетей и для широковещания с маской 255.255.255.240

ID подсети Адрес для широковещания
десятичный вид двоичный вид десятичный вид двоичный вид
  192.168.200.0 х.х.х.00000000 192.168.200.15 х.х.х.00001111
  192.168.200.16 х.х.х.00010000 192.168.200.31 х.х.х.00011111
  192.168.200.32 х.х.х.00100000 192.168.200.47 х.х.х.00101111
  192.168.200.48 х.х.х.00110000 192.168.200.63 х.х.х.00111111
  192.168.200.64 х.х.х.01000000 192.168.200.79 х.х.х.01001111
  192.168.200.80 х.х.х.01010000 192.168.200.95 х.х.х.01011111
  192.168.200.96 х.х.х.01100000 192.168.200.111 х.х.х.01101111
  192.168.200.112 х.х.х.01110000 192.168.200.127 х.х.х.01111111
  192.168.200.128 х.х.х.10000000 192.168.200.143 х.х.х.10001111
  192.168.200.144 х.х.х.10010000 192.168.200.159 х.х.х.10011111
  192.168.200.160 х.х.х.10100000 192.168.200.175 х.х.х.10101111
  192.168.200.176 х.х.х.10110000 192.168.200.191 х.х.х.10111111
  192.168.200.192 х.х.х.11000000 192.168.200.207 х.х.х.11001111
  192.168.200.208 х.х.х.11010000 192.168.200.223 х.х.х.11011111
  192.168.200.224 х.х.х.11100000 192.168.200.239 х.х.х.11101111
  192.168.200.240 х.х.х.11110000 192.168.200.255 х.х.х.11111111
маска 255.255.255.240 y.y.y.11110000 255.255.255.240 y.y.y.11110000
х.х.х. – сетевая часть адреса в двоичном виде:11000000.10101000.11001000; y.y.y – маска подсети класса С в двоичном виде:11111111.11111111.11111111

ID-подсети является как бы адресом всей подсети, но в адресном пространстве не участвует, так как хостовая часть адреса равна 0; аналогична ситуация с адресом для широковещания (сообщения для всех компьютеров в подсети), в которой хостовая часть адреса равна 1 (табл. 2.11).

3 этап. Проверка подсетей.

После осуществления расчетов необходимо провести проверку того, что созданные нами подсети действительно таковыми являются, то есть компьютеры из одной подсети могут обмениваться информацией между собой, а с компьютерами из других подсетей – нет.

Таблица 2.12 – Умножение IP-адресов и маски подсети 255.255.255.240

Номер подсети IP-адрес Умножение в двоичном виде
  192.168.200.35 11000000.10101000.11001000.00100011 11111111.11111111.11111111.11110000 11000000.10101000.11001000.00100000
  192.168.200.44 11000000.10101000.11001000.00101100 11111111.11111111.11111111.11110000 11000000.10101000.11001000.00100000
  192.168.200.193 11000000.10101000.11001000.11000001 11111111.11111111.11111111.11110000 11000000.10101000.11001000.11000000
  192.168.200.200 11000000.10101000.11001000.11001000 11111111.11111111.11111111.11110000 11000000.10101000.11001000.11000000
  192.168.200.150 11000000.10101000.11001000.10010110 11111111.11111111.11111111.11110000 11000000.10101000.11001000.10010000
  192.168.200.254 11000000.10101000.11001000.11111110 11111111.11111111.11111111.11110000 11000000.10101000.11001000.11110000

Существует правило [15]: если IP-адрес №1 побитово умножить на маску подсети и получится последовательность, аналогичная получившейся при умножении IP-адреса №2 на эту же маску подсети, то такие компьютеры находятся в одной подсети.

И соответственно, правило обратное: если IP-адрес №1 побитово умножить на маску подсети и получится последовательность, отличная от получившейся при умножении IP-адреса №2 на эту же маску подсети, то такие компьютеры находятся в разных подсетях (под побитовым умножением понимается умножение одноразрядных битов адреса и маски подсети с учетом законов умножения двоичной арифметики).

Операция умножения в двоичной арифметике заключается в следующем [9]: любое двоичное число, умноженное на 0, в итоге дает 0, а любое двоичное число, умноженное на 1, в итоге дает это число.

Для проверки возьмем 6 адресов из таблицы 2.10: 2 адреса из третьей подсети, 2 адреса из тринадцатой подсети и по 1 адресу из десятой и шестнадцатой сетей. Пусть это будут представленные в таблице 2.12 адреса.

Из данной таблицы видно, что все полученные последовательности отличаются только последним октетом, соответствующим числу 240 и что IP-адреса с номерами 1 и 2 находятся в одной подсети, с номерами 3 и 4 – в другой подсети, а 5 и 6 находятся в разных подсетях и по отношению к друг другу, и по отношению к предыдущим парам IP-адресов.

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

По данным организации ICANN (Internet Corporation for Assigned Names and Numbers (www.icann.org)), которая занимается распределением адресов крупным провайдерам по всему миру, адресное пространство IPv4 исчерпает себя в мае 2010 года.

Основным отличием IPv6 является гораздо большее адресное пространство, что добавляет большую гибкость при распределении адресов. Адресное пространство IPv6 по-настоящему огромно. IPv6 поддерживает 2128 (примерно 3,4x1038 адресов), то есть на каждого из 6,5 миллиардов жителей Земли приходится по 5x1028 (около 295) адресов. Это примерно 252 адресов для каждой звезды в известной нам Вселенной [14].

2.3.2 Адресация IPv6

Главным отличием IPv6 от IPv4 является длина сетевых адресов. IPv6 -адреса имеют длину128 битов (16 байт), в то время как IPv4 -адреса – всего 32 бита (4 байта). Следовательно, адресное пространство IPv4 содержит около 4 млрд адресов, IPv6 имеет 3,4 × 1038 уникальных адресов.

Как правило, адрес IPv6 состоит из двух логических частей: 64-битного префикса подсети и 64-битного адреса узла, который либо автоматически генерируется на основе MAC-адреса, либо устанавливается вручную [24].

Адреса IPv6 обычно записываются в виде восьми групп по четыре шестнадцатеричные цифры, где каждая группа разделяется двоеточием (:). Например, 2001:0db8:85a3:08d3:1319:8a2e:0370:7334 является IPv6 -адресом. Следовательно, каждая из групп может изменяться: в шестнадцатиричном виде – от 0000 до FFFF, в десятичном – от 0 до 65536, а в двоичном – от 0000000000000000 до 1111111111111111. В итоге рассмотренный выше адрес имеет следующее представление:

1) 2001:0db8:85a3:08d3:1319:8a2e:0370:7334 – в шестнадцатеричном виде;

2) 8193:3512:34211:2259:4889:35374:880:29492 – в десятичном виде;

3) 10000000000001:110110111000:1000010110100011:100011010011:
1001100011001:1000101000101110:1101110000:111001100110100 – в двоичном виде.

Из представленного примера видно, что шестнадцатиричная запись является самой компактной, и становится ясно, откуда берется такое огромное адресное пространство, так как каждая из представленных групп может иметь 216 вариантов, а в целом, адресное пространство покрывается 2128 адресов.

Если одна или несколько из четырех групп цифр – нули (0000), они могут быть опущены и заменены двумя двоеточиями (::). Например, 2001:0db8:0000:0000:0000:0000:1428:57ab может быть сокращен до 2001:0db8::1428:57ab. Согласно этому правилу любое число последовательных 0000-групп может быть сокращено до двух двоеточий. Ведущие нули в группе могут быть опущены (например::1 для localhost). Таким образом, запись следующих адресов идентична [28]:

1) 2001:0db8:0000:0000:0000:0000:1428:57ab;

2) 2001:0db8:0000:0000:0000::1428:57ab;

3) 2001:0db8:0:0:0:0:1428:57ab;

4) 2001:0db8:0:0::1428:57ab;

5) 2001:0db8::1428:57ab;

6) 2001:db8::1428:57ab.

Адрес с двумя двойными двоеточиями является недействительным, поскольку создает двусмысленность в интерпретации, и порождается большое количество противоположных вариантов. Например, сократив адрес IPv6 2001:0000:0000:FFD3:0000:0000:0000:57ab до 2001::FFD3::57ab, мы получим возможные комбинации:

1) 2001:0000:0000:0000:0000:FFD3:0000:57ab;

2) 2001:0000:FFD3:0000:0000:0000:0000:57ab и т.д.

Чтобы облегчить внедрение протокола IPv6 и обеспечить возможность существования обеих версий протоколов IP, проблемная группа проектирования Интернет установила два типа IPv6-адресов, содержащих IPv4-адреса. Они называются IPv4-совместимыми адресами (IPv4-compatible address) и IPv4-преобразованными адресами (IP-mapped address). Первые 80 бит обоих типов состоят только из нулей. Последние 32 бита каждого из них содержат IPv4-адрес, который можно представить способом, обычным для адресов протокола IPv4 (четыре десятичных числа, разделенные точками). Непосредственно предшествующие IPv4-адресу 16 бит устанавливаются по-разному, что позволяет установить различие между этими двумя типами адресов. В IPv4-совместимом адресе протокола IPv6 эти 16 бит состоят только из нулей (0х0000), а в IPv4-преобразованном адресе протокола IPv6 – только из единиц (0хFFFF), то есть IPv4 адрес 12.34.56.78 в IPv4-совместимой адресации IPv6 будет выглядеть::12.34.56.78, а в IPv4-преобразованной адресации –::ffff:c22:384e [11].

Узлы, туннелирующие IPv6-пакеты через IPv4-маршрутизаторы, используют IPv4-совместимые адреса. Они называются двухстековыми узлами и понимают обе версии протокола IP. IPv6-узлы, взаимодействующие с IPv4-узлами, которые не понимают протокол IPv6, используют IPv4-преобразованные адреса.

Несмотря на то что адрес имеет шестнадцатеричный вид, расчет адреса сети и хоста также осуществляется в двоичном виде, но уже с использованием технологии бесклассовой междоменной маршрутизации CIDR (Classes Inter-Domain Routing), которая была разработана для выдачи IPv4-адресов в Интернете с целью увеличения адресного пространства. Суть технологии CIDR сводится к следующему: так как маска сети представляет собой непрерывный ряд единиц, то смысл записи ее в десятичном виде отсутствует, а значит, можно изобразить только количество единиц. Так, адрес 192.168.200.35 с маской подсети 255.255.255.240 в записи технологии CIDR выглядит следующим образом: 192.168.200.35 /28. Число 28 (из 32 максимальных) показывает, сколько единиц в маске подсети отводится на маску подсети, и называется префиксом. Ситуация в IPv6 аналогичная, только, как отмечалось выше, 8 шестнадцатизначных чисел могут быть представлены 128 двоичными знаками, а соотвественно, префикс IPv6 может быть до 128. Например, 2001:0db8:1234::/48 обозначает сеть с адресами от 2001:0db8:1234:: до 2001:0db8:1234:ffff:ffff:ffff:ffff:ffff [32].

Подобно адресам IPv4, есть ряд специальных адресов, которые имеют особое значение в IPv6:

1)::/128 – адрес со всеми нулями является неопределенным адресом и будет использоваться только в программном обеспечении;

2)::1/128 – адрес внутренней петли («loopback») localhost. Если узел посылает пакеты на этот адрес, IPv6 стек циклично возвращает эти пакеты обратно тому же узлу (соответствует 127.0.0.1 в IPv4);

3) ff00::/8 – многоадресный префикс применяется в широковещании.

Отдельно следует отметить случаи употребления IPv6 в качестве адресной строки URL ( Uniform Resource Locator ), используемой в браузерах. Сложность заключается в следующем: через двоеточие в адресной строке обозначается порт. Например, набранная строка 192.68.1.1:80 означает, что пользователь хочет подключиться к 80 порту (http-порт) компьютера с указанным адресом. Поэтому принято решение в качестве URL использовать IPv6 в квадратных скобках [IPv6]:80. Например, строка в браузере может иметь следующий вид: https://[2001:db8:85a3:8d3:1319:8a2e:370:7344]:443/.

Таким образом, по состоянию на май 2008 года на IPv6 приходится незначительная доля от используемых адресов в публично доступных сегментах Интернет. Пока все еще доминирует протокол IPv4. Скорость (и приблизительная дата) развертывания IPv6 определяется, в первую очередь, скоростью исчерпания адресного пространства IPv4, работу которого хотят продлить как можно дольше (Приложение Б). Так, с уществуют методы по увеличению объема IPv4-адресов, позволяющие использовать области адресного пространства IPv4, которые ранее были непригодны по техническим причинам. Например, существует возможность утилизации неиспользуемого адресного пространства, реорганизации хостов и маршрутизаторов, но это все искусственно затягивает повсеместное использование IPv6.

2.4 Проблема установления соответствия между адресами
различных типов

Помимо рассмотренных составных числовых адресов, большую роль играют аппаратные и символьные адреса.

Аппаратные (hardware) адреса предназначены для работы на канальном уровне (уровне сетевой технологии). Типичным представителем такого адреса является адрес сетевого адаптера локальной сети. Этот адрес обычно используется только сетевым оборудованием, поэтому его стараются сделать по возможности компактным. При задании аппаратных адресов обычно не требуется выполнение ручной работы, так как они либо встраиваются в аппаратуру компанией-изготовителем, либо генерируются автоматически при каждом новом запуске оборудования, причем уникальность адреса в пределах сети обеспечивает оборудование [19]. Аппаратные адреса имеют ряд других названий: локальные адреса, физические адреса, МАС-адреса. МАС-адреса, закрепленные за каждой сетевой картой, являются уникальными и представляют собой 6-байтовый адрес, который для простоты написания состоит из шести двухзначных шестнадцатиричных чисел, разделенных знаком «тире» (пример такого адреса: 00-18-F3-4A-A1-55). МАС-адреса имеют определенную иерахичность: первые три байта указывают на изготовителя сетевой карты, оставшиеся три байта служат для маркировки каждого устройства самим изготовителем, за счет чего достигается уникальность и неповторяемость адресов сетевых карт различных производителей [17]. Для того чтобы узнать MAC-адрес компьютера под управлением сетевой операционной системы Microsoft, необходимо в командном режиме ввести команду ipconfig /all.

Символьные адреса, или имена. Эти адреса предназначены для запоминания людьми и поэтому обычно несут смысловую нагрузку. Символьные адреса легко используются в небольших и крупных сетях. Так, в одноранговых сетях символьные имена компьютеров обычно являются плоскими (NetBIOS-имя) [4]: computer1, user7, comp513-12. Одноранговые компьютеры объединяются по смыслу в рабочие группы в зависимости от места употребления (Class15, Korpus2, Office356 и т. д.). В доменных сетях используется Полное доменное имя (Fully Qualified Domain Name, FQDN) компьютера для однозначной идентификации объектов в пространстве доменных имен [3]. Полное доменное имя образуется в соответствии с соглашениями о доменных именах. В рамках службы каталога Active Directory механизм полных доменных имен используется для идентификации доменов и принадлежащих им компьютеров. Применительно к компьютеру полное доменное имя состоит из имени компьютера и имени домена. Например, если в сети имеется контроллер домена sham.local и клиентский компьютер с именем admin, входящий в этот домен, то полное доменное имя этого компьютера будет выглядеть так: admin.sham.local. В сети Интернет имена строятся по этому же принципу, только используются государственные (например, ru, uk, kz) или родовые (например, com, edu, net) домены вместо локальных (local) [39]. Управление символьными адресами в сетевых операционных системах Microsoft осуществляется следующим образом: Мой Компьютер → Свойства → Имя компьютера.

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

       
   
 


Рис. 2.10 – Соответствие адресов различных типов
в одноранговых и доменных сетях

Никакой зависимости между адресами различных типов не существует. Например, единственный способ установления со­ответствия для адресов MAC и IP – ведение таблиц. В результате конфигурирования сети каждый ин­терфейс знает свои IP-адрес и локальный адрес, что можно рассматривать как таблицу, состоящую из одной строки. Проблема состоит в том, как организовать обмен имеющейся информацией между узлами сети.

Для определения локального адреса по IP-адресу используется протокол разре­шения адресов ARP (Address Resolution Protocol). Протокол разрешения адре­сов реализуется различным образом в зависимости от того, работает ли в данной сети протокол локальной сети с возможностью широковещания или же какой-либо из протоколов глобальной сети, которые, как правило, не поддерживают широковещательный доступ [10].

Рассмотрим работу протокола ARP в локальных сетях с широковещанием.

Допустим, существует локальная сеть Ethernet1, соcтоящая из n-го количества компьютеров. Каждый сете­вой интерфейс имеет IP-адрес и МАС-адрес. Пусть в какой-то момент IP-модуль компьютера 1 (протоколы IP1 и MAC1) направляет пакет компьютеру 2 (протоколы IP2 и MAC2). Протокол IP1 определил IP-адрес компьютера 2. Теперь, прежде чем упаковать па­кет в кадры Ethernet и направить компьютеру 2, необходимо определить со­ответствующий МАС-адрес. Для решения этой задачи протокол IP1 «обращается» к протоколу ARP1. Протокол ARP поддерживает на каждом интерфейсе сетевого адаптера отдельную ARP-таблицу, в которой в ходе функ­ционирования сети накапливается информация о соответствии между IP-адресами и МАС-адресами других интерфейсов данной сети. Первоначально, при включении компьютера в сеть, все его ARP-таблицы пусты.

На первом шаге происходит передача от протокола IP1 протоколу ARP1 сообщения с запросом МАС-адреса для компьютера с указанным IP2.

Работа протокола ARP начинается с просмотра ARP-таблицы соответствую­щего интерфейса. Предположим, что среди содержащихся в ней записей от­сутствует запрашиваемый IP-адрес.

В этом случае исходящий IP-пакет, для которого оказалось невозможным оп­ределить локальный адрес из ARP-таблицы, запоминается в буфере, а прото­кол ARP формирует ARP-запрос,вкладывает его в кадр протокола Ethernet и широковещательно рассылает.

Все интерфейсы сети Ethernet1 получают ARP-запрос и направляют его «сво­ему» протоколу ARP. ARP сравнивает указанный в запросе адрес IP2 с IP-ад­ресом интерфейса, на который поступил этот запрос. Протокол ARP, констатирующий совпадение, формирует ARP-ответ.

В ARP-ответе компьютер 2 указывает локальный адрес МАС2 своего интер­фейса и отправляет его запрашивающему узлу, используя его локальный адрес. Широковещательный ответ в этом случае не требуется, так как формат ARP-запроса предусматривает поля локального и се­тевого адресов отправителя.

На рис. 2.11 показан кадр Ethernet с вложенным в него ARP-сообщением. ARP-запросы и ARP-ответы имеют один и тот же формат [12].

Рисунок 2.11Инкапсуляция ARP-сообщения в кадр Ethernet

В табл. 2.13 в качестве при­мера приведены значения полей реального ARP-запроса, переданного по сети Ethernet1.

Таблица 2.13 – Пример ARP-запроса

Поле Значение
Тип сети 1 (0x1)
Тип протокола 2048 (0x800)
Длина локального адреса 6 (0x6)
Длина сетевого адреса 4 (0x4)
Операция 1 (0x1)
Локальный адрес отправителя 008048ЕВ7Е60
Сетевой адрес отправителя 194.85.135.75
Локальный (искомый) адрес получателя  
Сетевой адрес получателя 194.85.135.65

В поле Тип сети для сетей Ethernet указывается значение 1. Поле Тип протоко­ла позволяет использовать протокол ARP не только с протоколом IP, но и с дру­гими сетевыми протоколами. Для IP значение этого поля равно 0x800. Длина локального адреса для протокола Ethernet равна 6 байт, а Длина сетевого адреса (IPv4) – 4 байта. В поле Операция для ARP-запросов указывается значение 1, для ARP-ответов – значение 2.

Из этого запроса видно, что в сети Ethernet узел с IP-адресом 194.85.135.75 пы­тается определить, какой МАС-адрес имеет другой узел той же сети, сетевой ад­рес которого 194.85.135.65. Поле искомого локального адреса заполнено нулями.

Ответ присылает узел, опознавший свой IP-адрес. Если в сети нет машины с ис­комым IP-адресом, то ARP-ответа не будет: протокол IP уничтожает IP-пакеты, направляемые по этому адресу. В табл. 2.14 показаны значения полей ARP-отве­та, который мог бы поступить на приведенный в таблице 2.13 ARP-запрос.

Таблица 2.14 –


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow