Метод быстрого вычисления адреса IPv4 сети по маске

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

Итак, мы имеем произвольный IP адрес – 192.170.175.83/13 и наша 1 задача вычислить адрес сети, для этого мы посмотрим на второй октет, так как именно он содержит как сетевую так и хостовую часть. На хостовую часть во втором октете отводится 3 бита, что дает нам 8 (2^3) изменяемых хостовых адресов в данном октете, т.е. каждая подсеть в данном октете будет содержать 8 изменяемых адресов. Теперь мы разделим представленное в третьем октете число на количество изменяемых адресов – 170/8 = 21.25, в результате деления мы получили номер искомой подсети – 21 (дробная часть нас ясное дело не интересует). Зная номер подсети, и количество изменяемых адресов в ней мы можем вычислить ее адрес, для этого 21 * 8 = 168. Итого – адрес сети будет 192.168.0.0.

Задача №2 – вычислить широковещательный адрес, для этого мы к 168 прибавим количество изменяющихся адресов и вычтем единицу: 168 + 8 – 1 = 175, следовательно, широковещательный адрес данной подсети 192.175.255.255.

И по поводу последних двух октетов в моем примере – если маска в октете нулевая, то в адресе сети он всегда будет равен 0, и широковещательный адрес всегда будет равен 255.

PS: Если данный метод ранее кому то встречался – просьба дать ссылку.
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 14

    0
    А разве Одом не об этом писал?
      0
      это про magic number и составление таблицы диапозонов в которую должен попадать адрес?
        0
        Уэнделл Одом «CCENT/CCNA ICND1. Официальное руководство… Второе издание» 2009 г.б (ISBN 978-5-8459-1439-2)
        Страница 399. Префиксная, или CIDR-запись маски.

        Таблицы используются при двоичном вычислении, если я не ошибаюсь.
          0
          У Одома порядковый номер подсети не участвует в вычислении нужной подсети, вам просто предлагается разбить октет на подсети и выбрать в какую подсеть попадает адрес, если ошибаюсь, поправьте.
      +3
      1. Метод очевиден и следует из определения;
      2. лучше не делить 170/8, а брать остаток от деления/просто находить ближйшее кратное 2**3 число (мозг знает, что 160 кратно, а значит и 168 кратно);
      3. про 3 бита на хостовую часть лучше пояснить (16-13 = 3, где 16 — наименьшее число, больше 13 и кратное 8).
      P.S. А почему не упомянуто, как быстро вычислить по айпи?
        +4
        >>P.S. А почему не упомянуто, как быстро вычислить по айпи?
        Для этого есть отдельная книга:
        image
        +4
        Я не понимаю, почему эта процедура должна быть сколь-либо доведена до уровня «арифметрика на пальцах». Для чего нужно, чтобы человек знал о происходящем с маской/сетью понимаю. Почему он должен это делать в уме — нет.

          0
          Как почему? Потому что так велено в рамках курса CCNA. ИМХО это правильно — как иначе подтвердить полное осознание концепции? А вот дальше уже, конечно, при масках, не равных /8, /16 и /24, стоит пользоваться специализированными калькуляторами, так как у них глюки встречаются реже, чем у мозга.
            0
            Ещё раз: Я понимаю, почему это хотят видеть от тестируемых, как доказательства понимания ими концепции. Я не понимаю, кому нужны специальные трюки для того, чтобы считать на пальцах. Для теста и в двоичной системе посчитать можно, если что.
              0
              Можно и в двоичной, но на это уйдет гораздо больше времени, а тот же самый тест этим временем ограничен.
              И я, этим постом, никого не призывал считать в уме. Я указал на математический алгоритм. А как считать, каждый решает для себя сам.
                0
                На CCNA много вопросов на это. Кто быстрее отстреляется с подсчетом масок, у того останется больше времени на другие вопросы.
            +1
            Я вас сударь по маске вычислю.
              +1
              Я так считаю.
              Надо несколько простых масок помнить:
              /32 = 255.255.255.255
              /24 = 255.255.255.0
              /16 = 255.255.0.0
              /8 = 255.0.0.0

              Т.к. цифра после слеша — число нулевых бит в маске, то единичка маски равняется степени двойки адресов, начинаем вычитать:
              /16 = 0
              /15 = 2
              /14 = 4
              /13 = 8

              2^(16-13) = 2^3 = 8 адресов в подсети

              Тут главное не запутаться что откуда вычитать.
              Осталось дело за малым, мы уже знаем что размер сети 8 адресов — осталось посчитать ближайший адрес:
              8 * 20 = 160…
              8 * 21 = 168 — это начало: 192.168.0.0
              8 * 22 = 176 — это конец(броадкаст), вычитаем 1 ip-адрес: 192.175.255.255

              В принципе так можно и в уме посчитать.
                0
                Вы немного не правы:
                Цифра после слэша — это число единиц в маске представленной в двоичном виде.
                8 * 22 = 176 — это конец(броадкаст),
                — это не броадкаст, а адрес следующей сети.

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое