Одной из главных проблем, которую нужно разрешить при объединении компьютеров в сеть, является проблема их адресации. К адресу узла сети и схеме его назначения можно предъявить несколько требований [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 –