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. Для получения ответа мы:
- Перевели адрес в двоичный вид
- Отсчитали слева столько байт, сколько составляет префикс
- Всё остальное справа заполнили нулями
- Результат перевели обратно в десятичный вид
Широковещательный адрес
Это последний адрес в сети, его так же нельзя назначать никаким устройствам, всё что отправлено на этот адрес будет рассылаться широковещательно всем участникам данной сети. В двоичном виде этот адрес знаменателен тем, что вся часть, где должен храниться адрес хоста заполнена единицами. Вычисления широковещательного адреса аналогичны вычислению адреса сети, но вписывать надо не нули а единицы:
- Перевести адрес в двоичный вид
- Отсчитали слева столько байт, сколько составляет префикс
- Всё остальное справа заполнили единицами
- Результат перевели обратно в десятичный вид
Например, для той же сети 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.
Что мы можем посчитать?
Используя приведённую выше информацию, мы всегда имея адрес и маску можем найти:
- Адрес сети
- Широковещательный адрес
- Диапазон адресов, которые можно выдавать хостам
- Количество хостов, которое поместится в данной сети
Данная тема является обязательным условием продолжения обучения по программе CCNA. Стоит внимательно изучить приведённый материал и потратить время на вычисления, чтобы не осталось никаких вопросов. Рекомендуется так же первые два семестра обучения все вычисления для лабораторных работ, тестов или других нужд проводить на бумаге, а не пользоваться специализированным софтом.
Комментарии
s_d_s (не проверено)
пт, 12/05/2014 - 13:51
Постоянная ссылка (Permalink)
"адрес 10.0.0.50 может быть записан в десятичном виде как 00001010.00000000.00000000.00110000"
Наверное все таки в двоичный вид Вы приводите?
bacek
пн, 12/08/2014 - 10:32
Постоянная ссылка (Permalink)
Александр (не проверено)
пт, 01/16/2015 - 12:10
Постоянная ссылка (Permalink)
"адрес 10.0.0.50 может быть записан в двоичном виде как 00001010.00000000.00000000.00110000"
В крайнем байте нет ошибки? (50 = 00110010)
bacek
вт, 02/24/2015 - 09:38
Постоянная ссылка (Permalink)
Аза (не проверено)
вт, 10/06/2015 - 16:46
Постоянная ссылка (Permalink)
а какая здесь маска подсети 192,168,10,130
bacek
чт, 10/08/2015 - 10:19
Постоянная ссылка (Permalink)
/25 означает что 25 бит это сеть и 7 бит - это хост. То ест маска будет 255.255.255.128
lomaster (не проверено)
пт, 02/17/2017 - 10:28
Постоянная ссылка (Permalink)
Спасибо! Всё понятно ))
bacek
пт, 02/17/2017 - 11:04
Постоянная ссылка (Permalink)
Dmitry1988
чт, 01/18/2018 - 10:09
Постоянная ссылка (Permalink)
Здравствуйте, Василий!
Вопрос: зачем нужен "адрес сети?" Его фактическое применение? Где используется этот адрес?
В вышеописанной ситуации,как я понимаю, это адрес 192.168.10.128.
192.168.10.255 - это внутренний broadcast, и используется для соответствующих целей.
Но как и зачем используется 192.168.10.128(адрес сети)?
Существует точка зрения, что этот адрес внешний broadcast, верна ли она?
bacek
чт, 01/18/2018 - 10:16
Постоянная ссылка (Permalink)
Здравствуйте.
Адрес сети используется в таблицах маршрутизации. Когда нам надо сообщить маршрутизатору, что вся сеть такая-то находится, например за таким-то интерфейсом мы можем написать ip route 192.168.10.128 255.255.255.128 Serial0/0/0 То есть мы указываем, что маршрут ведёт не к какому-то конкретному адресу, а ко всей сети.
Вы можете убедиться в этом и запустив у себя на компьютере комнадру route print. В локальной таблице маршрутизации вашей Windows (если у вас Windows) помимо всего прочего вы увидите адрес вашей локальной сети как раз в том виде, о котором вы спрашиваете.
Dmitry1988
чт, 01/18/2018 - 10:27
Постоянная ссылка (Permalink)
Спасибо за ответ!
Wally (не проверено)
ср, 09/11/2019 - 09:46
Постоянная ссылка (Permalink)
Что такое хост?
bacek
вт, 09/17/2019 - 10:03
Постоянная ссылка (Permalink)
WM (не проверено)
сб, 07/04/2020 - 21:22
Постоянная ссылка (Permalink)
спасибо что вы есть
Valger
пн, 11/07/2022 - 17:51
Постоянная ссылка (Permalink)
Стало очень интересно, создал табличку: https://docs.google.com/spreadsheets/d/1WBYZec-jFAJboCA0qXazjCrB1EThYwwMELQ9P9lN6kg/edit?usp=sharing
Добавить комментарий