Сколько битов в памяти нужно выделить для хранения ip адреса
IP-адрес представляет собой число размером 32 бита (или 4 байта), которое может быть записано в любой системе счисления (тут речь про адрес протокола IP version 4, в IPv6 он имеет размер 128 бит).
Например, адрес в десятичной системе 127.0.0.1 можно записать так:
Адрес делится на 4 октета, по 8 бит каждый, которые могут иметь значение от 0 (00000000) до 255 (11111111):
IP-адрес содержит в себе две основных части – адрес сети и адрес хоста в этой сети.
К примеру, адрес 77.120.120.20 представляет собой сеть 77.120.120.0, в которой находится хост с адресом 20.
Сети и маска сети
Помимо указания самого IP-адреса, на сетевом интерфейсе так же указывается его маска сети. Маска не передаётся в заголовках TCP/IP пакетов, но используется сетевой картой для определения дальнейшего маршрута пакета – если адрес назначения находится в одной сети с адресом отправителя – он будет отправлен напрямую, если же в отдельной сети – пакет будет передан маршрутизатору, согласно таблице маршрутизации пакетов.
Рассмотрим адрес 77.120.120.20 с маской 255.255.255.0.
В двоичном представлении этот адрес можно записать так:
Для первых трёх октетов в IP-адресе установлен (или “включён“) “бит маски” (иначе – “битовая маска“), следовательно – первые три октета адреса являются адресом сети, а последние 8 бит – адресом хоста.
Таким образом, адрес 77.120.120.20 с маской 255.255.255.0 является в сетью 77.120.120.0, которая является классом С (которая, в свою очередь, является подсетью сети 77.120.0.0 класса В, которая является подсетью сети 77.0.0.0, которая является сетью верхнего уровня – А, хотя с появлением CIDR (см. ниже) понятие “классы сети” фактически потеряло актуальность).
Что бы сократить запись о сети 77.120.120.0 с маской 255.255.255.0 – можно использовать сокращённую форму: 77.120.120.0/24.
“/24” называется “префикс сети“, и указывает на количество “битов маски“. Таким образом, из 32 бит адреса 24 указаны как адрес сети, а 8 – остаются для адресов хостов в этой сети.
Если взять, к примеру, сеть 77.120.120.0/28 – мы получим только 4 бита, выделенных для адресов, т.е. маска сети будет выглядеть как 11111111.11111111.11111111.11110000, или 255.255.255.240.
Такое описание сетей и подсетей называется “бесклассовой классификацией” (Classless Inter-Domain Routing – CIDR).
Использование CIDR даёт возможность отказаться от традиционного разбиения на сети различных классов (А, B, C и т.д.) , и создавать подсети необходимого размера.
К примеру, подсеть 77.120.120.0/28 (которую можно перевести в маску сети 11111111.11111111.11111111.11110000 в двоичном виде (4 последних бита “сброшены”)или 255.255.255.240 в десятичном) содержит 4 бита адресов хостов. В 4 бита можно “вместить” 2 4 адресов – 16. Из этих 16 стоит вычесть первый (сам адрес 77.120.120.0, так он является адресом самой сети) и последний (77.120.120.255, так как он является широковещательным, или broadcast, адресом сети, на который в теории должны отвечать все хосты сети), таким образом – из 16 адресов сети для хостов остаётся 14 адресов.
Маска подсети | Альтернативный формат записи | Последний октет (в двоичном виде) | Последний октет (в десятичном виде) |
255.255.255.0 | /24 | 0000 0000 | 0 |
255.255.255.128 | /25 | 1000 0000 | 128 |
255.255.255.192 | /26 | 1100 0000 | 192 |
255.255.255.224 | /27 | 1110 0000 | 224 |
255.255.255.240 | /28 | 1111 0000 | 240 |
255.255.255.248 | /29 | 1111 1000 | 248 |
255.255.255.252 | /30 | 1111 1100 | 252 |
Маска подсети | Размер идентификатора хоста | Максимальное количество хостов | ||
8 бит | 255.0.0.0 | 24 бит | 2 24 – 2 | 16777214 |
16 бит | 255.255.0.0 | 16 бит | 2 16 – 2 | 65534 |
24 бит | 255.255.255.0 | 8 бит | 2 8 – 2 | 254 |
29 бит | 255.255.255.248 | 3 бит | 2 3 – 2 | 6 |
Более полные таблицы сетей можно найти в статье Сети, подсети, классы подсетей. Таблица подсетей.
Разделение сети на подсети
Допустим, имеется сеть 77.120.120.0/24, или сеть 77.120.120.0 с маской 255.255.255.0 – из которой необходимо выделить две различные сети. Сеть 77.120.120.0/24 включает в себя адреса от 77.120.120.0 до 77.120.120.255.
Представим эту сеть и её маску в двоичном виде:
Займём на один бит больше в последнем октете маски сети – 11111111.11111111.11111111.10000000 (или 255.255.255.128 в десятичном виде). У нас осталось (32 бита IP-адреса – 7 бит под адреса хостов) = 25 бит – под маску. Следовательно, первая сеть в десятичном виде будет выглядеть как 77.120.120.0/25, и включает в себя адреса от 77.120.120.0 до 77.120.120.127 (7 бит под адреса: 2 7 = 128 адресов, включая первый адрес 0 – получаем 127 всего), а вторая сеть получит адреса от 77.120.120.128 до 77.120.120.255, или 77.120.120.128/25.
Ещё один способ рассчитать максимальное значение (последний адрес для сети): в 25-ти битной маске мы имеем 7 бит под адреса; следовательно – адрес первой сети в двоичном виде будет выглядеть так: 1001101.1111000.1111000.00000000 – где жирным выделен адрес сети, а курсивом – “свободные” биты под адреса хостов. Максимальное значение, которое можно вместить в семь бит – 01111111 = 127.
Для второй сети мы имеем вид 77.120.120.128, или 1001101.1111000.1111000.10000000, а максимальное значение последнего октета будет 11111111 = 255.
Бит — это единица компьютерной информации. Дискретная. Может принимать ровно два значения: ноль и единица.
Байт = 8 бит. Другими словами, байт состоит из восьми ячеек, каждая из которых может принимать ровно два разных значения: нулик или единичку. По основам комбинаторики такая конструкция может принимать 2 8 =256 значений. То есть, одним байтом можно закодировать 256 разных значений, от 0 до 255 включительно. При этом 0=[00000000], а 255=[11111111] (в угловых скобках — значение каждого из 8 бит в байте).
Число10 | Число2 |
---|---|
0 | 00000000 |
1 | 00000001 |
2 | 00000010 |
3 | 00000011 |
. | . |
254 | 11111110 |
255 | 11111111 |
Число10 — это число в привычном нам десятичном представлении. Иногда ещё говорят, что оно имеет основание 10.
Число2 — число в двоичном представлении, с основанием 2.
В IP-адресе (IPv4) — 4 байта, то есть 32 бита. В привычном нам написании типа 192.168.0.1 через точки указаны значения каждого байта в десятичной системе. Именно поэтому каждое из чисел в IP может принимать значения от 0 до 255 включительно, не больше и не меньше.
IP-адрес может быть записан одним десятичным числом. Например, рассмотрим адрес 192.168.0.1. Мы уже знаем, что каждое число, разделённое точками — это 1 байт, то есть 8 бит в компьютерном представлении. 192=[11000000], 168=[10101000], 0=[00000000], 1=[00000001]. Это означает, что весь данный IP-адрес в компьютере выглядит как 192.168.0.1=[11000000101010000000000000000001]. Если теперь перевести двоичное число в угловых скобках в десятичную систему, но не блоками по 8 бит, а всё сразу, то получим число 3232235521. То есть, IP-адрес 192.168.0.1 можно записать одним десятичным числом 3232235521.
Тип INT (целое число) в компьютере состоит тоже из четырёх байт (как правило). Причём он может быть как знаковым (включать в себя отрицательные числа), так и беззнаковым (только положительные числа).
В первом случае за знак числа отвечает первый из 32 бит, оставшийся 31 бит задаёт число по модулю. То есть, INT может принимать значения от -2 31 до 2 31 -1.
Во втором случае (UNSIGNED INT) используются все 32 бита и число может быть только положительным, от 0 до 2 32 -1 включительно.
Здесь речь идёт именно о беззнаковом целом, UNSIGNED INT.
Для многих является откровением, что вместо ping 192.168.0.1 можно написать ping 3232235521 и всё будет работать.
user@comp:~$ ping 3232235521 PING 3232235521 (192.168.0.1) 56(84) bytes of data. 64 bytes from 192.168.0.1: icmp_seq=1 ttl=62 time=0.557 ms 64 bytes from 192.168.0.1: icmp_seq=2 ttl=62 time=0.532 ms 64 bytes from 192.168.0.1: icmp_seq=3 ttl=62 time=0.602 ms 64 bytes from 192.168.0.1: icmp_seq=4 ttl=62 time=0.410 ms
Более того, ip-адрес — это изначально четырёхбайтовая структура, не привязанная к какому-либо представлению. Привычное нам представление из четырёх чисел, разделённых точками, сделано для более удобного восприятия человеком.
Маска подсети — это конструкция из 4 байт, которая служит для операций над IP-адресом. Эти операции не так очевидны в привычном нам десятичном представлении, но ст́оит записать адрес и маску в двоичном виде, как всё становится на свои места. Например, рассмотрим IP-адрес 192.168.0.1 с маской 255.255.255.0.
Для удобства разделим пробелами байты в двоичном представлении адресов.
Дальше применяются побитовые логические операции И, ИЛИ и НЕ, и на этом надо остановиться подробнее.
Допустим, у нас есть два бита (b): b1 и b2. К битам могут быть применены следующие логические операции:
Логическая операция И (&). Результат операции b = b1 & b2 равен 1 только в том случае, когда b1 = b2 = 1, в противном случае результат равен 0. Другими словами, результат логической операции И равен 1 только в том случае, когда И первый, И второй операнды равны 1.
Логическая операция ИЛИ (|). Результат операции b = b1 | b2 равен 1 в том случае, когда ИЛИ b1 = 1, ИЛИ b2 = 1, в противном случае результат равен 0. Другими словами, результат логической операции ИЛИ равен 1 в том случае, когда хотя бы один из операндов равен 1.
Логическая операция НЕ (!) - унарная, в отличии от бинарных операций И и ИЛИ. Это означает то, что она действует только на один-единственный элемент. Логическая операция НЕ меняет значение бита на противоположное, то есть, если b = 0, то !b = 1 и наоборот, если b = 1 то !b = 0.
Побитовые операции применяются к каждому биту в цепочке.
Вернёмся к IP-адресам.
В IP-адресе и маске по 32 бита. Для того, чтобы определить подсеть, над маской и адресом применяется побитовая операция И:
То есть, мы находимся в подсети 192.168.0.0.
Для того, чтобы определить адрес компьютера в пределах подсети, над маской применяется унарная побитовая операция НЕ, а затем над результатом и IP-адресом применяется побитовая операция И:
То есть, в подсети 192.168.0.0 адрес нашего компьютера - 1.
Как выяснилось, для идентификации компьютера в сети важен не только его адрес, но и маска.
Для того, чтобы понять какие адреса могут быть во всей подсети — нужен её адрес и маска. Например, в подсети 192.168.0.0 с маской 255.255.255.0 могут существовать адреса в диапазоне от 192.168.0.1 до 192.168.0.255. Маска — обязательное значение для описания подсети.
В укороченной записи наша подсеть описывается как 192.168.0.0/24. Откуда берётся число 24 в конце?
Вернёмся к двоичному представлению маски и IP-адреса.
24 — это количество единиц в начале маски (3 байта по 8 бит, 3 × 8 = 24). Укороченная запись возможна только тогда, когда маска выглядит как [блок_единиц][блок_нулей].
Например, подсеть 192.168.4.0/23 — это подсеть 192.168.4.0 с маской 255.255.254.0, в которой IP-адреса компьютеров могут принимать значения от 192.168.4.1 до 192.168.5.255 включительно.
Первые 23 бита определяют подсеть, последние 9 бит — адреса компьютеров в подсети.
Обычно людям непонятно откуда берётся пятёрка в третьем байте IP-адреса (вместо четвёрки). При написании в двоичном представлении — это очевидно.
IPv4 использует 32-битные адреса, ограничивающие адресное пространство 4 294 967 296 (2 32 ) возможными уникальными адресами. У каждого хоста и маршрутизатора в Интеренете есть IP-адрес. IP-адрес не имеет отношения к хосту. Он имеет отношение к сетевому интерфейсу, поэтому иногда хост или маршрутизатор могут иметь несколько IP-адресов.
IP-адреса имеют иерархическую организацию. Первая часть имеет переменную длину и задает сеть, а последняя указывает на хост.
Обычно IP-адреса записываются в виде 4 десятичных чисел, каждое в диапозоне от 0 до 255, разделенными точками (dot-decimal notation). Каждая часть представляет один байт адреса. Например, шестнадцатиричный адрес 80D00297 записывается как 128.208.2.151.
Префикс задается наименьшим IP-адресом в блоке и размером блока. Размер определяется числом битов в сетевой части, оставшиеся биты в части хоста могут варьироваться. Таким образом, размер является степенью двойки. Он записывается после префикса IP-адреса в виде слэша и длины сетевой части в битах. В предыдущем примере префикс содержит 2 8 адресов и поэтому для сетевой части отводится 24 бита. Записывается так: 128.208.2.0/24.
Также, сколько бит используется сетевым ID и сколько бит доступно для идентификации хостов (интерфейсов) в этой сети, определяется сетевыми классами.
Всего 3 класса IP-адресов:
- Класс A. IP сетевых адресов использует левые 8 бит (самый левый байт) для указания сети, оставшиеся 24 бита (оставшиеся три байта) для идентификации интерфейса хоста в этой сети. Адреса класса A всегда имеют самый левый бит самого левого байта нулевым, то есть значения от 0 до 127 для первого байта в десятичной нотации. Таким образом доступно максимум 128 адресов сетей класса A, каждый из которых может содержать до 33,554,430 интерфейсов. Однако сети 0.0.0.0 (известная как маршрут по умолчанию) и 127.0.0.0 (loop back сеть) имеют специальное назначение и не доступны для использования в качестве идентификаторов сети. Поэтому доступно только 126 адресов сетей класса A.
- Класс B. IP сетевых адресов использует левые 16 бит (два левых байта) для идентификации сети, оставшиеся 16 бит (последние два байта) указывают хостовые интерфейсы. Адрес класса B всегда имеет самые левые два бита установленными в 1 0. Таким образом для номера сети остается 14 бит, что дает 32767 доступных сетей класса B. Первый байт адреса сети класса B может принимать значения от 128 до 191, и каждая из таких сетей может иметь до 32,766 доступных интерфейсов.
- Класс C. IP сетевых адресов использует левые 24 бит (три левых байта) для идентификации сети, оставшиеся 8 бит (последний байт) указывает хостовый интерфейс. Адрес класса С всегда имеет самые левые три бита установленными в 1 1 0. Таким образом для номера сети остается 14 бит, что дает 4,194,303 доступных сетей класса B. Первый байт адреса сети класса B может принимать значения от 192 до 255, и каждая из таких сетей может иметь до 254 доступных интерфейсов. Однако сети класса C с первым байтом больше, чем 223, зарезервированы и не используются.
Существует также специальные адреса, которые зарезервированы для 'несвязанных' сетей - это сети, которые используют IP, но не подключены к Internet. Вот эти адреса:
- Одна сеть класса A: 10.0.0.0
- 16 сетей класса B: 172.16.0.0 - 172.31.0.0
- 256 сетей класса С: 192.168.0.0 - 192.168.255.0
IP адрес может означать одно из трех:
- Адрес IP сети (группа IP устройств, имеющих доступ к общей среде передаче - например, все устройства в сегменте Ethernet). Сетевой адрес всегда имеет биты интерфейса (хоста) адресного пространства установленными в 0 (если сеть не разбита на подсети - как мы еще увидим);
- Широковещательный адрес IP сети (адрес для 'разговора' со всеми устройствами в IP сети). Широковещательные адреса для сети всегда имеют интерфейсные (хостовые) биты адресного пространства установленными в 1 (если сеть не разбита на подсети - опять же, как мы вскоре увидим).
- Адрес интерфейса (например Ethernet-адаптер или PPP интерфейс хоста, маршрутизатора, сервера печать итд). Эти адреса могут иметь любые значения хостовых битов, исключая все нули или все единицы - чтобы не путать с адресами сетей и широковещательными адресами.
- Для сети класса A: (один байт под адрес сети, три байта под номер хоста)
- 10.0.0.0 сеть класса А, потому что все хостовые биты равны 0.
- 10.0.1.0 адрес хоста в этой сети
- 10.255.255.255 широковещательный адрес этой сети, поскольку все сетевые биты установлены в 1
- 172.17.0.0 сеть класса B
- 172.17.0.1 адрес хоста в этой сети
- 172.17.255.255 сетевой широковещательный адрес
- 192.168.3.0 адрес сети класса C
- 192.168.3.42 хостовый адрес в этой сеть
- 192.168.3.255 сетевой широковещательный адрес
Почти все доступные сетевые IP-адреса принадлежат классу C.
Длина префикса не выводится из IP-адреса, поэтому протоколу маршрутизации вынуждены передавать префиксы на маршрутизаторы. Иногда префиксы задаются с помощью указания длины.
То есть маска подсети определяет как будут локально интерпретироваться IP адреса в сегменте IP сети, что для нас весьма важно, поскольку определяет процесс разбивки на подсети.Стандартная маска подсети - все сетевые биты в адресе установлены в '1' и все хостовые биты установлены в '0'. Это означает, что стандартные маски подсети для трех классов сетей:
- A класс - маска подсети: 255.0.0.0
- B класс - маска подсети: 255.255.0.0
- C класс - маска подсети: 255.255.255.0
Выполненение операции И между маской и IP-адресом позволяет выделить сетевую часть.
О маске подсети нужно помнить три вещи:
- Маска подсети предназначена только для локальной интерпретации локальных IP адресов (где локальный значит - в том же сетевом сегменте);
- Маска подсети - не IP адрес - она используется для локальной модификации интерпретации IP адреса.
Изначально использовалась классовая адресация (INET), но со второй половины 90-х годов XX века она была вытеснена бесклассовой адресацией (CIDR), при которой количество адресов в сети определяется маской подсети.
Никто не знает точно, сколько всего сетей подключено к Интернету, но очевидно, что их много — возможно, порядка миллиона. Различные алгоритмы маршрутизации требуют, чтобы каждый маршрутизатор обменивался информацией о доступных ему адресах с другими маршрутизаторами. Чем больше размер таблицы, тем больше данных необходимо передавать и обрабатывать. С ростом размера таблицы время обработки растет как минимум линейно. Чем больше данных приходится передавать, тем выше вероятность потери (в лучшем случае временной) части информации по дороге, что может привести к нестабильности работы алгоритмов выбора маршрутов.
К счастью, способ уменьшить размер таблиц маршрутизации все же существует. Применим тот же принцип, что и при разбиении на подсети: маршрутизатор может узнавать о расположении IP-адресов по префиксам различной длины. Но вместо того чтобы разделять сеть на подсети, мы объединим несколько коротких префиксов в один длинный. Этот процесс называется агрегацией маршрута (route aggregation). Длинный префикс, полученный в результате, иногда называют суперсетью (supernet), в противоположность подсетям с разделением блоков адресов.
При агрегации IP-адреса содержатся в префиксах различной длины. Один и тот же IP-адрес может рассматриваться одним маршрутизатором как часть блока /22 (содержащего 2 10 адресов), а другим — как часть более крупного блока /20 (содержащего 2 12 адресов). Это зависит от того, какой информацией обладает маршрутизатор. Такой метод работает и для разбиения на подсети и называется CIDR (Classless InterDomain Routing — бесклассовая междоменная маршрутизация).
Каждый узел в сети TCP/IP может быть однозначно идентифицирован IP-уровнем по адресу, который имеет формат <идентификатор сети, номер узла>. Строго говоря, адрес на части не делится и читается как единое целое. Для точного определения узла всегда используется полный адрес. Между полями нет разделения. На практике по записи IP-адреса трудно определить границы полей.
идентификатор>
Ниже показан общий формат IP-адреса:
в формате xxx. xxx. xxx. xxx
В десятичной записи адреса могут варьироваться от 0. 0. 0. 0 до 255. 255. 255. 255. За исключением первого, любой байт может определять номер сети и узла. Первый байт всегда показывает номер сети.
Каждый байт (октет) имеет длину 8 бит. Он может определять сеть, подсеть или узел сети.
Для представления IP-адреса используются 32 бита, разделенные на 4 байта. Номер сети может распространяться с первого байта на второй и третий. То же самое происходит с частью адреса, определяющей узел сети ххх. Он представляет собой десятичное число от 0 до 255 (именно по этой причине используются три х).
IP-адреса делятся на пять классов: A, B, C, D и E. Документ RFC 791, определяющий эту классификацию, ничего не говорит о подсетях. Классы позволяют организовывать различное количество сетей и узлов в них. A, B и C используются для представления адресов сетей и узлов сети. Класс D – это специальный тип адреса, используемый для групповой рассылки (например, OSPF при рассылке маршрутной информации и IP при групповой рассылке используют этот тип адреса). Класс Е зарезервирован в экспериментальных целях.
Определение класса
Для присвоения адресов сетям и узлам используются адреса классов A, B и C. Класс D не используется, а адреса Е никогда не присваиваются. На рисунке видно, как на самом деле определяются классы. Как сетевой узел определяет адрес, которому принадлежит класс? Поскольку длина идентификатора сети меняется (в зависимости от класса), был придуман простой метод, позволяющий программному обеспечению определить класс адреса, а значит и длину номера сети.Согласованное использование адресов различного типа. Эта задача включает отображение адресов разных типов, например преобразование сетевого IP-адреса в локальный, доменного имени — в IP-адрес.
Обеспечение уникальности адресов. В зависимости от типа адреса требуется обеспечивать однозначность адресации в пределах компьютера, подсети, корпоративной сети или Интернета.
Конфигурирование сетевых интерфейсов и сетевых приложений.
Каждая из перечисленных задач имеет достаточно простое решение для сети, число узлов которой не превосходит нескольких десятков. Например, для отображения символьного доменного имени на IP-адрес достаточно поддерживать на каждом хосте таблицу всех символьных имен, используемых в сети, и соответствующих им IP-адресов. Столь же просто «вручную» присвоить всем интерфейсам в небольшой сети уникальные адреса. Однако в крупных сетях эти же задачи усложняются настолько, что требуют принципиально других решений.
Ключевым словом, которое характеризует подход к решению этих проблем, принятый в TCP/IP, является масштабируемость.
Процедуры, предлагаемые TCP/IP для назначения, отображения и конфигурирования адресов, одинаково хорошо работают в сетях разного масштаба. В этой главе наряду с собственно схемой образования IP-адресов мы познакомимся с наиболее популярными масштабируемыми средствами поддержки адресации в сетях TCP/IP: технологией бесклассовой междоменной маршрутизации, системой доменных имен, протоколом динамического конфигурирования хостов.
Формат IP-адреса
В заголовке IP-пакета для хранения IP-адресов отправителя и получателя отводятся два поля, каждое имеет фиксированную длину 4 байта (32 бита). IP-адрес состоит из двух логических частей — номера сети и номера узла в сети.
Наиболее распространенной формой представления IP-адреса является запись в виде четырех чисел, представляющих значения каждого байта в десятичной форме и разделенных точками, например:
Этот же адрес может быть представлен в двоичном формате:
10000000 00001010 00000010 00011110
А также в шестнадцатеричном формате:
Заметим, что запись адреса не предусматривает специального разграничительного знака между номером сети и номером узла. Вместе с тем при передаче пакета по сети часто возникает необходимость разделить адрес на эти две части. Например, маршрутизация, как правило, осуществляется на основании номера сети, поэтому каждый маршрутизатор, получая пакет, должен прочитать из соответствующего поля заголовка адрес назначения и выделить из него номер сети. Каким образом маршрутизаторы определяют, какая часть из 32 бит, отведенных под IP-адрес, относится к номеру сети, а какая — к номеру узла?
Можно предложить несколько вариантов решения этой проблемы.
Простейший из них состоит в использовании фиксированной границы При этом всё 32-битное поле адреса заранее делится на две части не обязательно равной, но фиксированной длины, в одной из которых всегда будет размещаться номер сети, в другой — номер узла. Решение очень простое, но хорошее ли? Поскольку поле, которое отводится для хранения номера узла, имеет фиксированную длину, все сети будут иметь одинаковое максимальное число узлов. Если, например, под номер сети отвести один первый байт, то все адресное пространство распадется на сравнительно небольшое (2 8 ) число сетей огромного размера (2 24 узлов). Если границу передвинуть дальше вправо, то сетей станет больше, но все равно все они будут одинакового размера. Очевидно, что такой жесткий подход не позволяет дифференцированно удовлетворять потребности отдельных предприятий и организаций. Именно поэтому он не нашел применения, хотя и использовался на начальном этапе существования технологии TCP/IP (RFC 760).
Второй подход (RFC 950, RFC 1518) основан на использовании маски, которая позволяет максимально гибко устанавливать границу между номером сети и номером узла. При таком подходе адресное пространство можно использовать для создания множества сетей разного размера.
Некоторые адреса являются зарезервированными и не могут быть присвоены сетевым устройствам. К ним относятся следующие:
- 0 Сетевые адреса, идентифицирующие саму сеть, например сеть 198.150.11.0 IP-адрес, у которого все биты, отведенные под адрес узла заполнены нулями зарезервирован под номер сети, например, 176.0.0.0
- 255 Широковещательный адрес 198.150.11.255 используется для широковещательной рассылки всем сетевым устройствам
- Сеть с номером 127.0.0.0 зарезервирована для обратного петлевого тестирования (маршутизаторы или локальные узлы могут использовать его для передачи пакетов самим себе).
Для того чтобы программное обеспечение могло автоматически выделять номера конкретных компьютеров из используемых в данной сетевой системе IP-адресов, применяются так называемые маски подсети.
Маска — это число, применяемое в паре с IP-адрссом, причем двоичная запись маски содержит непрерывную последовательность единиц в тех разрядах, которые должны в IP-адресе интерпретироваться как номер сети. Граница между последовательностями единиц и нулей в маске соответствует границе между номером сети и номером узла в IР-адресе.
И, наконец, способ, основанный на классах адресов (RFC 791). Этот способ представляет собой компромисс по отношению к двум предыдущим: размеры сетей хотя и не могут быть произвольными, как при использовании масок, но и не должны быть одинаковыми, как при установлении фиксированных границ. Вводится пять классов адресов: А, В, С, D, Е. Три из них — А, В и С — предназначены для адресации сетей, а два — D и Е — имеют специальное назначение. Для каждого класса сетевых адресов определено собственное положение границы между номером сети и номером узла.
Классы IP-адресов
Признаком, на основании которого IP-адрес относят к тому или иному классу, являются значения нескольких первых битов адреса. Таблица 15.1 иллюстрирует структуру
IP-адресов разных классов.
К классу А относится адрес, в котором старший бит имеет значение 0. В адресах класса А под идентификатор сети отводится 1 байт, а остальные 3 байта интерпретируются как номер узла в сети. Сети, все IP-адреса которых имеют значение первого байга в диапазоне от 1 (00000001) до 126 (01111110), называются сетями класса А. Значение 0 (00000000) первого байта не используется, а значение 127 (01111111) зарезервировано для специальных целей (см. далее). Сетей класса А сравнительно немного, зато количество узлов в них может достигать 224, то есть 16 777 216 узлов.
К классу В относятся все адреса, старшие два бита которых имеют значение 10. В адресах класса В под номер сети и под номер узла отводится по 2 байта. Сети, значения первых двух байтов адресов которых находятся в диапазоне от 128.0 (10000000 00000000) до 191.255 (10111111 11111111), называются сетями класса В. Ясно, что сетей класса В больше, чем сетей класса А, а размеры их меньше. Максимальное количество узлов в сетях класса В составляет 2 16 (65 536)
К классу С относятся все адреса, старшие три бита которых имеют значение 110. В адресах класса С под номер сети отводится 3 байта, а под номер узла — 1 байт. Сети, старшие три байта которых находятся в диапазоне от 192.0.0 (11000000 00000000 00000000) до
223.255.255(11011111 11111111 11111111), называются сетями класса С. Сети класса С наиболее распространены, и наименьшее максимальное число узлов в них равно 2^8 (256).
Если адрес начинается с последовательности 1110, то он является адресом класса D и обозначает особый групповой адрес (multicast address). В то время как адреса классов А, В и С служат для идентификации отдельных сетевых интерфейсов, то есть являются индивидуальными адресами (unicast address), групповой адрес идентифицирует группу сетевых интерфейсов, которые в общем случае могут принадлежать разным сетям. Интерфейс, входящий в группу, получает наряду с обычным индивидуальным IP-адресом еще один групповой адрес. Если при отправке пакета в качестве адреса назначения указан адрес класса D, то такой пакет должен быть доставлен всем узлам, которые входят в группу.
Если адрес начинается с последовательности 11110, то это значит, что данный адрес относится к классу Е. Адреса этого класса зарезервированы для будущих применений.
Чтобы получить из IP-адреса номер сети и номер узла, требуется не только разделить адрес на две соответствующие части, но и дополнить каждую из них нулями до полных 4 байт. Возьмем, например, адрес класса В 129.64.134.5. Первые два байта идентифицируют сеть, а последующие два — узел. Таким образом, номером сети является адрес 129.64.0.0, а номером узла — адрес 0.0.134.5.
IP- адрес (Internet Protocol address) - это своеобразный идентификатор определенного устройства (например ПК, виртуальный сервер ), которое подключено к сети Интернет. Основная функциональная обязанность таких адресов сети - это формирование аффективного соединения оборудования (телефон, компьютер, ноутбук, сервер и т.п.) в сети. Таким образом, каждый компьютер, который имеет доступ к Интернет, имеет свой IP-адрес, посредством которого данный пользователь анонсируется в сети. Если при подключении к сети Интернет Ваш провайдер выдал Вам индивидуальный IP-адрес, этот адрес является статическим (либо«белым»); если же Интернет-провайдер не выдает каждому пользователю отдельный сетевой адрес, пользователь получают доступ к сети через, так называемый, «серый» IP-адрес. Поскольку провайдерам необходимо огромное количество адресов, иногда они используют «серые» адреса для работы в локальной сети, что абсолютно не влияет на качество связи либо скорость соединения, но такие адреса не могут анонсироваться в глобальной сети,а значит соединиться с оборудованием будет невозможно. Узнать является присвоен ли Вам выделенный IP-адрес Вы можете на прямую у Вашего Интернет-провайдера.
Стандартной формой записи выделенного IP есть четыре цифры от 0 до 255 с точкой после каждой, например 192.168.2.1. Большое количество сетевых адресов, объединяют в блоки: PI (Provider Independent) и PA (Provider Aggregatable). PA - зависимый блок, который принадлежит IP-провайдеру и предоставляется Интернет-провайдеру в аренду; PI - независимый блок адресов, который находится в собственности клиента и может анонсироваться (выводиться в Интернет) при помощи разных IP-провайдеров.
IP-адреса выдаются региональными Интернет-регистраторами (RIR- Regional Internet Registry). Существует пять региональных регистраторов, которые выдают сетевые ip адреса :
1) ARIN – в Северной Америке;
2) APNIC – в странах Юго-Восточной Азии;
3) AfriNIC – в странах Африки;
4) LACNIC – в странах Южная Америка и бассейн Карибского моря;
5) RIPENCC – в странах Европы, Центральной Азии и Ближнего Востока.
Региональные Интернет-регистраторы выдают блоки адресов локальным Интернет-регистраторам (lIR- Local Internet Registry), а они в свою очередь передают их более мелким Интернет провайдерам, которые нуждаются в тысячах таких адресов ежедневно, что бы присвоить выделенный IP-адрес каждому пользователю Интернет.
Читайте также: