IPv4 адреса

Протокол Ipv4 является на сегодняшний день основным протоколом, использующимся на третьем уровне модели OSI. В этом протоколе устройства адресуются при помощи IP адресов. Эти адреса имеют характерную особенность – иерархическую структуру. То есть, например, глядя на два MAC адреса всё что мы можем сказать – разные они или одинаковые, а в случае с IP адресами, можно ещё понять, относятся ли они к одной и той же сети или к разным. На этом объединении устройств в сети и иерархической IP-адресации основывается маршрутизация.

IP адрес представляет из себя 4 байта, каждый из которых представляется обычно в десятичном или двоичном виде. В случае двоичного представления каждый байт (8 бит) называют октетом. В любом случае байты отделяют друг от друга точками.

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

Как было сказано выше, не все биты в адресе имеют одинаковое значение. Часть битов слева (сколько именно зависит от маски подсети) обозначают сеть, остальные биты справа – идентифицируют устройство внутри сети.

Предположим, что есть адрес 192.168.10.16, в зависимости от маски подсети граница между частями адреса, обозначающими сеть и устройство может проходить в произвольных местах адреса. Так, например, если маска подсети 255.255.255.0 – то 192.168.10 – это сеть, а 16 – это устройство внутри сети, если маска 255.255.0.0 – то 192.168 – это сеть, а 10.16 – это устройство внутри сети.

Как же определить, относятся адреса к одной и той же сети или нет? Надо просто сравнить ту левую часть адресов, которая обозначает сеть. Предположим, что есть адреса 192.168.10.16 и 192.168.11.50. С маской 255.255.0.0 адреса относятся к одной и той же сети, так как в обоих случаях сеть 192.168, при этом сами устройства идентифицируются в этой сети как 10.16 и 11.50 соответственно. Если маска 255.255.255.0 – то устройства в разных сетях (192.168.10 и 192.168.11 не равны).

Граница между частью адреса, обозначающей сеть и частью адреса, обозначающей хост, как уже было сказано, может находиться где угодно. Всего в адресе 32 бита, и граница может проходить после первого бита, второго и т.д. вплоть до 30-го. Какая часть адреса что обозначает можно понять из маски подсети или префикса. Это две различные формы записи одного и того же. Маска подсети удобнее для маршрутизаторов, а префикс – удобнее для восприятия человеком. Прежде чем продолжить чтение рекомендую ознакомиться с соответствующими статьями: «Что такое маска подсети» и «Что означает сетевой префикс».

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

Адрес сети

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

Например, есть адрес 192.168.10.130/25, давайте найдём адрес сети, к которой относится этот хост. Для этого переводим адрес в двоичный вид: 11000000.10101000.00001010.10000010. В этом адресе первые 25 бит – это сеть, а то что осталось (7 бит) – это хост внутри сети. Чтобы получит адрес сети по нашему определению, надо последние семь бит заполнить нулями, получается 11000000.10101000.00001010.10000000, что в десятичном виде будет 192.168.10.128. Ответ к нашей задачи такой: Адрес 192.168.10.130 с префиксом 25 относится к сети 192.168.10.128. Для получения ответа мы:

  1. Перевели адрес в двоичный вид
  2. Отсчитали слева столько байт, сколько составляет префикс
  3. Всё остальное справа заполнили нулями
  4. Результат перевели обратно в десятичный вид

Широковещательный адрес

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

  1. Перевести адрес в двоичный вид
  2. Отсчитали слева столько байт, сколько составляет префикс
  3. Всё остальное справа заполнили единицами
  4. Результат перевели обратно в десятичный вид

Например, для той же сети 192.168.10.130/25 можно найти широковещательный адрес. Переведём в двоичный вид 11000000.10101000.00001010.10000010, отсчитаем слева 25 бит (11000000.10101000.00001010.1) все что осталось дополним единицами (1111111), получим 11000000.10101000.00001010.11111111, вернём это в десятичный вид: 192.168.10.255. Значит ответ будет таким: для адреса 192.168.10.130 с префиксом 25 широковещательным будет адрес 192.168.10.255.

Количество хостов

Теперь, когда вам стало понятно, что представляет из себя префикс, давайте немного повычисляем. Сколько разных значений можно поместить в одном байте (8 бит)? Правильный ответ – 2 в восьмой степени, то есть 256, а точнее с 0 по 255. Значит если у нас используется префикс 24, то это означает, что в адресе 24 бита выделены под хранение сети. Оставшиеся биты 32-24=8 – под хранение хоста. В такой сети можно разместить 256-2=254 разных хоста. Почему минус два? Да потому что два специальных адреса не подходят для выдачи их хостам – это адрес самой сети и широковещательный адрес.

Аналогично зная префикс (или маску, из которой легко получить префикс) мы всегда можем рассчитать количество хостов.

Например, сколько хостов будет в сети с префиксом 22? Считаем сколько бит выделено под хосты: 32-22=10бит, значит хостов будет 210-2=1024-2=1022.

Общая формула имеет вид [количество хостов]=2(32-[префикс])-2.

Что мы можем посчитать?

Используя приведённую выше информацию, мы всегда имея адрес и маску можем найти:

  1. Адрес сети
  2. Широковещательный адрес
  3. Диапазон адресов, которые можно выдавать хостам
  4. Количество хостов, которое поместится в данной сети

Данная тема является обязательным условием продолжения обучения по программе CCNA. Стоит внимательно изучить приведённый материал и потратить время на вычисления, чтобы не осталось никаких вопросов. Рекомендуется так же первые два семестра обучения все вычисления для лабораторных работ, тестов или других нужд проводить на бумаге, а не пользоваться специализированным софтом.

Относится к теме: 

Комментарии

"адрес 10.0.0.50 может быть записан в десятичном виде как 00001010.00000000.00000000.00110000"

Наверное все таки в двоичный вид Вы приводите?

Аватар пользователя bacek
Спасибо.

"адрес 10.0.0.50 может быть записан в двоичном виде как 00001010.00000000.00000000.00110000"
В крайнем байте нет ошибки? (50 = 00110010)

Аватар пользователя bacek
Действительно. Спасибо.

а какая здесь маска подсети 192,168,10,130

Аватар пользователя bacek
Вообще может быть почти любая, но если речь идёт о примере в статье, то там написано 192.168.10.130/25
/25 означает что 25 бит это сеть и 7 бит - это хост. То ест маска будет 255.255.255.128

Спасибо! Всё понятно ))

Аватар пользователя bacek
Пожалуйста. Если назреет обсуждение - я тут всегда обитаю :)

Здравствуйте, Василий!
Вопрос: зачем нужен "адрес сети?" Его фактическое применение? Где используется этот адрес? 
В вышеописанной ситуации,как я понимаю, это адрес 192.168.10.128.
192.168.10.255 - это внутренний broadcast, и используется для соответствующих целей.
Но как и зачем используется 192.168.10.128(адрес сети)?
Существует точка зрения, что этот адрес  внешний broadcast, верна ли она?

Аватар пользователя bacek

Здравствуйте.

Адрес сети используется в таблицах маршрутизации. Когда нам надо сообщить маршрутизатору, что вся сеть такая-то находится, например за таким-то интерфейсом мы можем написать ip route 192.168.10.128 255.255.255.128 Serial0/0/0 То есть мы указываем, что маршрут ведёт не к какому-то конкретному адресу, а ко всей сети.

Вы можете убедиться в этом и запустив у себя на компьютере комнадру route print. В локальной таблице маршрутизации вашей Windows (если у вас Windows) помимо всего прочего вы увидите адрес вашей локальной сети как раз в том виде, о котором вы спрашиваете.

Спасибо за ответ!
 

Что такое хост?

Аватар пользователя bacek
В данном контексте — любой узел сети, то есть устройство, имеющее возможность общаться по сети.

спасибо что вы есть

Аватар пользователя Valger

Стало очень интересно, создал табличку: https://docs.google.com/spreadsheets/d/1WBYZec-jFAJboCA0qXazjCrB1EThYwwMELQ9P9lN6kg/edit?usp=sharing

Добавить комментарий