LFCA: Изучите двоичные и десятичные числа в сети – Часть 10
В Части 9 серии LFCA мы рассмотрели основы IP-адресации. Чтобы лучше понять IP-адресацию, нам нужно уделить больше внимания этим двум типам представления IP-адресов — двоичной и десятичной четверной записи. Как упоминалось ранее, IP-адрес представляет собой 32-битное двоичное число, которое для удобства чтения обычно представляется в десятичном формате.
В двоичном формате используются только цифры 1 и 0. Это формат, который понимает ваш компьютер и в котором данные передаются по сети.
Однако сделать адрес удобочитаемым. Он передается в десятичном формате с точками, который позже компьютер преобразует в двоичный формат. Как мы говорили ранее, IP-адрес состоит из 4 октетов. Давайте разберем IP-адрес 192.168.1.5.
В формате десятично-точечный 192 – это первый октет, 168 – второй октет, 1 — это третий и последний октет 5 – это четвертый октет.
В двоичном формате IP-адрес представляется следующим образом:
11000000 => 1st Octet
10101000 => 2nd Octet
00000001 => 3rd Octet
00000101 => 4th Octet
В двоичном формате бит может быть включен или выключен. Бит «включено» представлен значением 1, а бит выключения представлен значением 0. В десятичном формате,
Чтобы получить десятичное число, выполняется суммирование всех двоичных цифр в степени 2. В таблице ниже указано позиционное значение каждого бита октета. Например, десятичное значение 1 соответствует двоичному значению 00000001.
В лучшем формате это также можно представить, как показано.
2º = 1 = 00000001
2¹ = 2 = 00000010
2² = 4 = 00000100
2³ = 8 = 00001000
2⁴ = 16 = 00010000
2⁵ = 32 = 00100000
2⁶ = 64 = 01000000
2⁷ = 128 = 10000000
Давайте попробуем преобразовать IP-адрес в десятичном формате с точками в двоичный.
Преобразование десятичного формата в двоичный
Давайте возьмем наш пример 192.168.1.5. Чтобы преобразовать десятичное число в двоичное, мы начнем слева направо. Для каждого значения в таблице мы задаем вопрос, можете ли вы вычесть значение в таблице из десятичного значения IP-адреса. Если ответ «ДА», записываем «1». Если ответ «НЕТ», мы ставим ноль.
Начнем с первого октета — 192. Можете ли вы вычесть 128 из 192? Ответ – большое «ДА». Поэтому запишем 1, что соответствует 128.
192-128 = 64
Можете ли вы вычесть 64 из 64? Ответ: «ДА». Опять записываем 1, что соответствует 64.
64-64=0 Поскольку мы исчерпали десятичное значение, мы присваиваем 0 оставшимся значениям.
Таким образом, десятичное значение 192 преобразуется в двоичное значение 11000000. Если вы добавите значения, соответствующие единицам в нижней таблице, вы получите 192. Это 128 + 64=192. Имеет смысл, не так ли?
Перейдем ко второму октету — 168. Можем ли мы вычесть 128 из 168? ДА.
168-128 = 40
Далее, можем ли мы вычесть 64 из 40? НЕТ. Итак, мы присваиваем 0.
Переходим к следующему значению. Можем ли мы вычесть 32 из 40? ДА. Мы присваиваем значение 1.
40 - 32 = 8
Далее, можем ли мы вычесть 18 из 8? НЕТ. Мы присваиваем 0.
Далее, можем ли мы из 8 вычесть 8? ДА. Мы присваиваем значение 1.
8-8 = 0
Поскольку мы исчерпали десятичное значение, оставшимся значениям в таблице будут присвоены 0, как показано.
В конечном итоге десятичное число 168 преобразуется в двоичный формат 10101000. Опять же, если вы суммируете десятичные значения, соответствующие единицам в нижней строке, вы получите 168. Это 128 + 32+8=168.
Для третьего октета у нас есть 1. Единственное число в нашей таблице, которое мы можем полностью вычесть из 1, — это 1. Итак, мы присвоим значение 1 1 в таблице и добавим предыдущие нули, как показано.
Таким образом, десятичное значение 1 соответствует двоичному значению 00000001.
Наконец, у нас есть 5. Из таблицы единственное число, которое мы можем полностью вычесть из 5, начинается с 4. Всем значениям слева будет присвоено 0.
Можем ли мы вычесть 4 из 5? ДА. Мы присваиваем значения от 1 до 4.
5-4 = 1
Далее, можем ли мы вычесть 1 из 2? НЕТ. Мы присваиваем значение 0.
Наконец, можем ли мы вычесть 1 из 1? ДА. Мы присваиваем 1.
Десятичная цифра 5 соответствует двоичному коду 00000101.
В итоге имеем следующее преобразование.
192 => 11000000
168 => 10101000
1 => 00000001
5 => 00000101
Таким образом, 192.168.1.5 преобразуется в 11000000.10101000.00000001.00000101 в двоичной форме.
Понимание маски подсети/маски сети
Ранее мы заявляли, что каждый хост в сети TCP/IP должен иметь уникальный IP-адрес, который в большинстве случаев динамически назначается маршрутизатором с использованием протокола DHCP. Протокол DHCP (Протокол динамической конфигурации хоста) – это служба, которая динамически назначает IP-адрес узлам в IP-сети.
Но как определить, какая часть IP зарезервирована для сетевого раздела, а какой доступен для использования хост-системой? Здесь на помощь приходит маска подсети или маска сети.
Подсеть – это дополнительный компонент IP-адреса, который отличает сетевую и хостовую часть вашей сети. Как и IP-адрес, подсеть представляет собой 32-битный адрес и может быть записан как в десятичной, так и в двоичной системе счисления.
Цель подсети — провести границу между сетевой частью IP-адреса и хостовой частью. Каждому биту IP-адреса подсеть или сетевая маска присваивает значение.
Для сетевой части он включает бит и присваивает значение 1. Для хостовой части он выключает бит и присваивает значение 0. Таким образом, все биты, установленные в 1, соответствуют битам в IP-адресе, которые представляют сетевая часть, в то время как все биты, установленные в 0, соответствуют битам IP, которые представляют адрес хоста.
Обычно используемая маска подсети — это подсеть Класса C, то есть 255.255.255.0.
В таблице ниже показаны маски сети в десятичном и двоичном формате.
На этом завершается вторая часть нашей серии статей по основам сетевых технологий. Мы рассмотрели преобразование IP-адресов из десятичных чисел в двоичные, маски подсети и маски подсети по умолчанию для каждого класса IP-адресов.