Автор Тема: Методика расчета количества адресов в маске  (Прочитано 12715 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн kaRRamba

  • Постоялец
  • ***
  • Сообщений: 427
  • Рейтинг: 6
    • Просмотр профиля
Пример: есть 3 маски
1. 255.192.0.0
2. 255.255.255.240
3. 255.255.0.0

Расчитываем:
Слева направо ищем число, отличное от 255.
а)если это число не 0 (вариант 1 - 255.192.0.0):
- отнимаем это число от 256: 256-192=64;
- домножаем получившееся число на 256 столько раз, сколько цифр 0 в маске: 64*256*256=4194304 адресов.

б)если это число не 0 и нулей нет (вариант 2 - 255.255.255.240):
отнимаем это число от 256: 256-240=16 - это и есть количество адресов.

в)если это число 0 - тут все просто :)
255.255.0.0 - 256*256=65536 адресов.

Насколько верна такая методика?
« Последнее редактирование: 02 Ноября 2010, 16:11:30 от kaRRamba »
Этот текст будет отображаться под каждым вашим сообщением.
Для оформления можно использовать BB-теги и смайлы.

Оффлайн Fray

  • Администратор
  • Олдфаг
  • *****
  • Сообщений: 6056
  • Рейтинг: 53
  • Пол: Мужской
    • fray@sysadminz.ru
    • lushikafu
    • lushikafu
    • Просмотр профиля
    • IT-Бложек
  • Откуда: Петербург
64*256*256=4194304
Сабнет-калькулятор говорит, что 4194302.
Один broadcast и один 0, я так понимаю?
MCSE: Messaging, MCSE: Communication, MCSE: Productivity, MCSA: Office 365, MCPS
my blog - http://it-blojek.ru

Оффлайн kaRRamba

  • Постоялец
  • ***
  • Сообщений: 427
  • Рейтинг: 6
    • Просмотр профиля
Fray
может быть не считает 0 и 255? :)
Этот текст будет отображаться под каждым вашим сообщением.
Для оформления можно использовать BB-теги и смайлы.

Оффлайн Retif

  • Администраторы
  • Олдфаг
  • *****
  • Сообщений: 8034
  • Рейтинг: 81
  • Пол: Мужской
  • Афтар
    • Просмотр профиля
    • Мой блог
  • Откуда: Орёл-Москва
Ну -2 еще нужно сделать, наверно?

Оффлайн kaRRamba

  • Постоялец
  • ***
  • Сообщений: 427
  • Рейтинг: 6
    • Просмотр профиля
Shurikz
см выше :)
Этот текст будет отображаться под каждым вашим сообщением.
Для оформления можно использовать BB-теги и смайлы.

Оффлайн Fray

  • Администратор
  • Олдфаг
  • *****
  • Сообщений: 6056
  • Рейтинг: 53
  • Пол: Мужской
    • fray@sysadminz.ru
    • lushikafu
    • lushikafu
    • Просмотр профиля
    • IT-Бложек
  • Откуда: Петербург
Да. Subnet ID и Broadcast Address не считаются за узлы.  :)
MCSE: Messaging, MCSE: Communication, MCSE: Productivity, MCSA: Office 365, MCPS
my blog - http://it-blojek.ru

Оффлайн kaRRamba

  • Постоялец
  • ***
  • Сообщений: 427
  • Рейтинг: 6
    • Просмотр профиля
О, ещё вариант, попроще.
Есть маска 255.255.248.0 . Как известно, это в двоичном виде:
11111111.11111111.11111000.00000000. Необходимо посчитать количество нулей, получившееся число - степень двойки.
Пример:
255.255.248.0 - 11111111.11111111.11111000.00000000 - 11 нулей - 2^11=2048 адресов :)
Этот текст будет отображаться под каждым вашим сообщением.
Для оформления можно использовать BB-теги и смайлы.

Оффлайн makc

  • Модераторы
  • Постоялец
  • *****
  • Сообщений: 169
  • Рейтинг: 3
  • Генератор случайных чисел
    • Просмотр профиля
На мой взгляд, намного интересней обратная процедура - получить маску для заданного количества хостов в данной подстети.

Но мне, честно говоря, прямо сейчас об этом думать лениво... Чуть позже... =)

Оффлайн shs

  • Модераторы
  • Ветеран
  • *****
  • Сообщений: 4395
  • Рейтинг: 89
    • Просмотр профиля
    • ShS's blog
  • Откуда: Default city
Насколько верна такая методика?
Да, верна, просто надо не забывать вычесть 2 из полученного результата (отводимые под адрес подсети и бродкаст)

Ну и алгоритм изложен несколько путано.
Суть в чем? 
(256 - "первый_справа_ненулевой_октет")*256^"количество_нулевых_октетов_расположенных_справа"-2
« Последнее редактирование: 03 Ноября 2010, 10:26:13 от shs »

Оффлайн makc

  • Модераторы
  • Постоялец
  • *****
  • Сообщений: 169
  • Рейтинг: 3
  • Генератор случайных чисел
    • Просмотр профиля
В продолжение моих измышлизмов:

Итак, например, нам нужно 62 адреса. В двоичном виде это 111110 - на HostID уйдет минимум 6 бит.
Стало быть требуемая маска будет:
11111111.11111111.11111111.11111111
-
00000000.00000000.00000000.00111111
=
11111111.11111111.11111111.11000000, что в десятичном представлении: 255.255.255.192.

Если нам надо определить к какой сети принадлежит конкретный IP-адрес тыкаем нужное, например 192.168.35.123, и подставляем маску:
11000000.10101000.00100011.01111011 - IP-адрес
11111111.11111111.11111111.11000000 - маска сети
Отделим хост от сети, смотрим последние биты маски:
01000000 - это идентификатор сети.
01111111 - это широковещательный в нашей сети.
Переводим из двоичного представления: 01000000 - это 64, а 00111111 - 127
То есть IP-адрес 192.168.35.123 принадлежит сети 192.168.35.64/26 с широковещательным адресом: 192.168.35.127

Как-то так. :)
« Последнее редактирование: 03 Ноября 2010, 10:14:53 от makc »

Оффлайн shs

  • Модераторы
  • Ветеран
  • *****
  • Сообщений: 4395
  • Рейтинг: 89
    • Просмотр профиля
    • ShS's blog
  • Откуда: Default city
Итак, например, нам нужно 62 адреса. В двоичном виде это 111110 - на HostID уйдет минимум 6 бит.
Стало быть требуемая маска будет:
11111111.11111111.11111111.11111111
Стало быть требуемая маска будет равна 256 минус "ближайшее большее число, которое является степенью числа 2" (не забываем про 2 адреса под бродкаст и адрес сети), а это 2^6-2=64-2=62 (т.е. 62 адреса мы получим), значит наша маска = 256-64=192 (или, если в битах, то 32-6= 26 т.е  x.x.x.x/26)

Upd. Попутал степени двойки. Fixed.
« Последнее редактирование: 03 Ноября 2010, 12:31:04 от shs »

Оффлайн Fray

  • Администратор
  • Олдфаг
  • *****
  • Сообщений: 6056
  • Рейтинг: 53
  • Пол: Мужской
    • fray@sysadminz.ru
    • lushikafu
    • lushikafu
    • Просмотр профиля
    • IT-Бложек
  • Откуда: Петербург
значит наша маска = 256-64=192 (или, если в битах, то 32-8= 24 т.е  x.x.x.x/24)
x.x.x.x/24 это же 255.255.255.0  :-\
MCSE: Messaging, MCSE: Communication, MCSE: Productivity, MCSA: Office 365, MCPS
my blog - http://it-blojek.ru

Оффлайн shs

  • Модераторы
  • Ветеран
  • *****
  • Сообщений: 4395
  • Рейтинг: 89
    • Просмотр профиля
    • ShS's blog
  • Откуда: Default city
значит наша маска = 256-64=192 (или, если в битах, то 32-8= 24 т.е  x.x.x.x/24)
x.x.x.x/24 это же 255.255.255.0  :-\
Исправил.  Степени двойки попутал 64=2^6 (позор на мою седую голову)
« Последнее редактирование: 03 Ноября 2010, 12:28:17 от shs »

Оффлайн makc

  • Модераторы
  • Постоялец
  • *****
  • Сообщений: 169
  • Рейтинг: 3
  • Генератор случайных чисел
    • Просмотр профиля
Итак, например, нам нужно 62 адреса. В двоичном виде это 111110 - на HostID уйдет минимум 6 бит.
Стало быть требуемая маска будет:
11111111.11111111.11111111.11111111
Стало быть требуемая маска будет равна 256 минус "ближайшее большее число, которое является степенью числа 2" (не забываем про 2 адреса под бродкаст и адрес сети), а это 2^6-2=64-2=62 (т.е. 62 адреса мы получим), значит наша маска = 256-64=192 (или, если в битах, то 32-6= 26 т.е  x.x.x.x/26)

Upd. Попутал степени двойки. Fixed.
1. Я не понял зачем вычитать те 2 адреса, которые являются _частью_ сети.
2. "ближайшее большее число, которое является степенью числа 2" - много думал. Но так и не понял сути. Учитывая контекст разговора предположу, что фраза должна была выглядеть так: "Ближайшее число, которое можно получить возведением числа 2 в степень".

Оффлайн shs

  • Модераторы
  • Ветеран
  • *****
  • Сообщений: 4395
  • Рейтинг: 89
    • Просмотр профиля
    • ShS's blog
  • Откуда: Default city
1. Я не понял зачем вычитать те 2 адреса, которые являются _частью_ сети
Это чтобы узнать - какое кол-во адресов будет в данной подсети.
« Последнее редактирование: 03 Ноября 2010, 15:11:20 от shs »