Шпаргалка по основам IP4

Классовая адресация

Маска - 32-битовое число, обычно записываемое в десятичном формате с разделительными точками.
Она нужна для того, чтобы указатьструктуру IP-адреса, или кратко говоря, маска задает
размер узловой части IP-адреса. Узловая часть в адресе задается двоичными 0 в маске.
В первой части маски содержатся двоичные 1, они задают сетевую часть адреса (если нет подсетей),
или сетевую и подсетевую часть адреса (если есть подсети).

...... Класс А Класс B Класс C Класс D
Диапазон значений
первого октета
1-126 128-191 192-223
Допустимые адреса сетей 1.0.0.0-126.0.0.0 128.0.0.0-191.255.0.0 192.0.0.0-223.255.255.0
Кол-во сетей в классе 27-7 214 221
Кол-во узлов в сети 224-2 216-2 28-2
Размер сетевой части
(в байтах)
1 2 3
Размер узловой части
(в байтах)
3 2 1
Стандартная маска 255.0.0.0 255.255.0.0 255.255.255.0

Частные адреса

10.0.0.0 с 172.16.0.0 по 172.31.0.0 с 192.168.0.0 по 192.168.255.0
Класс сети А В С
Кол-во сетей 1 16 256

Подсети

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

Маска подсети - 32-битное число. Обычно записывают в десятичном виде, например 255.255.128.0
Маска - некая последовательность двоичных 1, после которых идут 0. Смешение недопустимо. Например 11111111 1111111 11111111 0000000
Перфиксная запись маски (CIDR-запись) - число единиц в двоичном представлении маски. Например маску 255.255.240.0 можно записать короче /20

Конвертирование IP-адресов и масок из десятичной в двоичную систему счисления и обратно

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

Ключевые моменты процесса преобразования IP-адреса:

  • при конвертировании следует помнить что одному десятичному числу соответствует 8 бит;
  • при конвертировании из десятичной в двоичную систему счисления для одного десятичного числа должно получаться 8 бит;
  • при конвертировании из двоичной в десятичную систему счисления каждому набору из последовательных 8 бит соответствует 1 десятичное число

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

Двоичный метод преобразования маски из десятичной формы в префиксную

  1. Преобразовать адрес из десятичной формы в двоичную;
  2. Подсчитать количество двоичных единиц в 32-битной двоичной маске, это и будет значением после косой черты в префиксной записи;

Например маска 255.255.240.0. В двоичном виде это будет 11111111 11111111 11110000 00000000. В этой маске 20 последовательных 1. Следовательно префиксная запись будет /20.

Чтобы преобразовать префиксную запись маски в деситичный формат нужно использовать обратный процесс

  1. Записать х двоичных единиц, где х - значение в префиксной записи после косой черты;
  2. Дополнить полученную запись справа нулями, чтобы получилось 32 цифры;
  3. Преобразовать побайтово (т.е.по 8 символов) полученное число в десятичную форму, чтобы получить стандартную запись маски;

Например для префикса /20 сначала нужно записать единицы в маске.
11111111 11111111 1111
Потом такую запись нужно дополнить нулями, чтобы получить 32-битное число:
11111111 11111111 11110000 00000000.
И на последнем этапе нужно группами по 8 бит преобразовать двоичные числа в десятичный вид, что в результате даст маску 255.255.240.0

Десятичный метод преобразования маски из десятичной формы в префиксную

Девять возможных вариантов откета сетевой маски

Десятичное значение Двоичное значение Количество двоичных 1 Количество двоичных 0
0 00000000 0 8
128 10000000 1 7
192 11000000 2 6
224 11100000 3 5
240 11110000 4 4
248 11111000 5 3
252 11111100 6 2
254 11111110 7 1
255 11111111 8 0

Чтобы преобразовать маску из десятичной формы в префиксную запись нужно:

  1. Изначально длина префикса сфитается равной 0;
  2. Для каждого октета нужно отсчитать количество единичных бит в двоичном виде, согласно вышеприведенной таблице;
  3. Сложить полученные числа (на этапе 2) для четырех октетов и записать маску в виде /х
Например для маски 255.255.240.0 на этапе 1 префикс /0.
На этапе 2 записываем следующее 0+8(т.к. 255 => 8) + 8(т.к. 255 => 8) + 4(т.к. 240 => 4) + 0(т.к. 0 => 0)=20 т.е. префикс /20.
Обратный перевод маски /20
Вычесть 20-8. В первый октет запишем 255
Т.к. после вычитания остался остаток то 12-8. Снова пишем 255 во второй уже октет
Снова разнича не равна нулю. Остаток 4. Пишем 240 в третия октет.
Больше не из чего вычитать, и в четвертый октет пишем 0. Получаем маску 255.255.240.0
Аналогично можно проделать и для других масок.

Анализ и выбор сетевой маски

Процесс разбиения сети на подсети заключается в разделении классовой сети A, B или С на меньшие группы адресов, называемях подсетями. Выбор Маски обуславливается требованиями дизайна сети: сколько нужно создать подсетей, какое количество узлов требуется адресовать, также могут учитываться требования к определенным подсетям.

  • Сетевая часть адреса всегда определяется классом сети адреса. В масках сетей классов А, В и С есть соответственно 8, 16 и 24 ненулевых бита в сетевой части маски;
  • Узловая часть адреса всегда определяется маской подсети. Количество двоичных 0 в маске (они всегда есть в правой части маски) задает количество узловых бит в IP-адреса;
  • После того как сетевая и узловая части были найдены, биты подсети это то, что осталось от этих операций, т.е. оставшаяся часть бит 32-битного адреса.

Количество подсетей = 2s
Количество узлов в подсети = 2h-2

В некоторых случаях две подсети из одной классовой сети должны быть зарезервированы и не могут быть использованы для адресации устройств.
Первую из зарезервированных сетей называют нулевой подсетью (zero subnet). При разбиении классовой сети на блоки эта сеть имеет наименьший номер, и ее адрес совпадает с адресом самой классовой сети. Например для сети 150.150.0.0 нулевая сеть будет иметь адрес 150.150.0.0. Что может создать путаницу.
Вторую зарезервированную подсеть называют широковещательной (broadcast subnet), она имеет наибольший номер в адресной схеме. Например для той же подсети пакет отправляемый на адрес 150.150.255.255 может означать "переслать пакет всем узлам сети класса В 150.150.0.0", а в других случаях только узлам соответствующей подсети.
Формулу 2s-2 следует использовать в следующих случаях:

  1. Используется классовый протокол маршрутизации (RIPv1 или IGRP)
  2. введена команда ip subnet zero
В остальных случаях используется формула 2s.

Следует помнить что биты сети и подсети по определению должны быть равны 1, а биты узловой части равны 0. Все маски должны начинаться с с неразрывной последовательностью двоичных 1, а заканчиваться неразрывной последовательностью 0.

Практические примеры анализа масок

Адрес 8.1.4.5/16 130.4.102.1/24 199.1.1.100/24 130.4.102.1/22 199.1.1.100/27
Маска 255.255.0.0 255.255.255.0 255.255.255.0 255.255.252.0 255.255.255.224
Кол-во сетевых бит 8 16 24 16 24
Кол-во узловых бит 16 8 8 10 5
Кол-во бит для подсетей 8 8 0 6 3
Кол-во узлов в подсети 216-2
или 65 534
28-2
или 254
28-2
или 254
210-2
или 1022
25-2
или 30
Кол-во подсетей 28
или 256
28
или 256
0 26
или 64
23
или 8

Пример выбора маски. В сети необходимо создать 50 подсетей, причем в наибольшей из них есть 200 узлов. В организации используется сеть класса В, и увеличить адресное пространство невозможно. Какую сетевую маску использовать в таком случае?
В такое задании под сетевую часть будет отведено 16 бит, т.к. используется сеть класса В. Нужно будет оставить в узловой части 8 бит, т.к. 27=126, т.е. 7 бит не дают достаточного количества узлов, следовательно 28=254 будет вполне достаточно. Аналогично для подсетей нам понадобится 6 бит, поскольку 26=64, а 25=32.
Если обозначить N-биты сети, S-биты подсети, H- биты узловой части, то маску можно записать так:
NNNNNNNN NNNNNNNN SSSSSSxx HHHHHHHH
Заменяемые символы хх могут быть отнесены к битам подсети, так и к битам узлов. Получиться четыре варианта ответа, но правильных три.
11111111 11111111 11111111 00000000 (8 бит для подсетей, 8 бит для узлов 255.255.255.0 /24)
11111111 11111111 11111110 00000000 (7 бит для подсетей, 9 бит для узлов 255.255.254.0 /23)
11111111 11111111 11111100 00000000 (6 бит для подсетей, 10 бит для узлов 255.255.252.0 /22)
11111111 11111111 11111101 00000000 (ошибочная маска, 1 идут с разрывом)

Анализ существующих сетей

Определение адреса подсети. Двоичный метод

  1. Записать IP-адрес в десятичном виде, а в строке под ним записать маску так, чтобы октеты совпадали
  2. Если в октете маски стоит 255, то скопировать значен ие из октета адреса в результат
  3. Аналогично если 0, то в октете результата 0
  4. Если один из октетов результата остался незаполненым то:
    • преобразовать октет IP-адреса в двоичную форму
    • преобразовать соответствующий октет маски в двоичную форму
    • выполнить операцию логического И для полученных чисел
    • преобразовать полученное 8-битное число в десятичную систему и записать в нужный октет результирующего адреса

Определение широковещательного адреса подсети. Двоичный метод

Чтобы определить широковещательный адрес подсети необходимо провести расчет подсети (см выше) , и потом заменить биты в узловой части на 1.

Расчет диапазона адресов для подсети

  • Чтобы найти первый адрес диапазона нужно скопировать адрес подсети, и в последнем (четвертом) октете добавить к значению 1
  • Чтобы найти последний адрес, отнимите 1 из четвертого октета

Примеры расчета двоичным методом

расчет для адреса 8.1.4.5 и маски 255.255.0.0
адрес 8.1.4.5 00001000 00000001 00000100 00000101
Маска 255.255.0.0 11111111 11111111 00000000 00000000
Результат логического И 8.1.0.0 00001000 0000001 00000000 00000000
Broadcast 8.1.255.255 00001000 0000001 11111111 11111111
Первый адрес 8.1.0.1 00001000 0000001 00000000 00000001
Последний адрес 8.1.255.254 00001000 0000001 11111111 11111110
расчет для адреса 130.4.102.1 и маски 255.255.252.0
адрес 130.4.102.1 10000010 00000100 0110110 00000001
Маска 255.255.252.0 11111111 11111111 11111100 00000000
Результат логического И 130.4.100.0 10000010 00000100 01100100 00000000
Broadcast 130.4.103.255 10000010 00000110 01100111 11111111
Первый адрес 130.4.100.1 10000010 00000100 01100100 00000001
Последний адрес 130.4.103.254 10000010 00000100 01100111 11111110
расчет для адреса 199.1.1.100 и маски 255.255.255.224
адрес 199.1.1.100 11000111 00000001 00000001 01100100
Маска 255.255.255.224 11111111 11111111 11111111 11100000
Результат логического И 199.1.1.96 11000111 00000001 00000001 01100000
Broadcast 199.1.1.127 11000111 00000001 00000001 01111111
Первый адрес 199.1.1.97 11000111 00000001 00000001 01100001
Последний адрес 199.1.1.126 11000111 00000001 00000001 01111110

Десятичный метод расчета подсети, ее диапазона адресов и широковещательного адреса

  1. Запишите в первой строке таблицы-схемы маску, а во второй - IP-адрес.
  2. Найдите октет в маске подсети, значение которого не равно 255 или 0. Такой октет называется интересующим. Выделите соответствующий ему столбец полужирной линией.
  3. Запишите октеты, не интересующие нас, из адреса подсети следующим образом:
    • для каждого октета слева от выделенного (этап 2) столбца скопировать значение из соответствующего октета IP-адреса;
    • для каждого октета, находящегося справа от выделенного столбца, запишите 0.
  4. Чтобы получить значение интересующего нас октета в адресе подсети:
    • расчитайте "магическое число", отняв от 256 значение, стоящее в маске интересующего нас октета;
    • расчитайте числа в диапазоне от 0 до 256, кратные "магическому числу";
    • запишите значение интересующего нас октеа, расчитав ближайшее число, которое меньше, чем значение в соответствующем октете IP-адреса.
  5. Чтобы получить широковещательный адрес:
    • для каждого октета, слева от выделенного столбца, скопируйте значение из IP-адреса;
    • для каждого значения, справа от выделенного столбца, запишите в ячейку 255;
    • для расчета значения интересующего октета к соответствующему занчению адреса подсети добавьте "магическое число" и отнимите 1.
  6. Чтобы получить первый адрес IP-диапазона подсети, к занчению в четвертом адресе октета подсети прибавте 1.
  7. Чтобы получить последний IP-адрес диапазона, в широковещательном адресе отнимите от четвертого октета 1.

Пример расчета десятичным методом

Октет 1 2 3 4 Коментарии
Маска 255 255 252 0
Адрес 130 4 102 1
Адрес подсети 130 4 100 0 "Магическое число"=256-252=4 100-ближайшее меньшее 102 число, кратное 4
первый адрес 130 4 100 1 В последнем октете к значению добавлена 1
Широковещательный адрес 130 4 103 255 Интересующий нас октет плюс "магическое число", минус 1 (100+4-1)
Последний адрес 130 4 103 254 В последнем октете от значения в широковещательном адресе отнята 1