Я не уверен, что это подходящее место, чтобы задать этот вопрос, но я подумал, что это один из наиболее подходящих сайтов SE, чтобы задать вопрос о сети. Пожалуйста, переместите его на другие более подходящие сайты. Спасибо.
Итак, предположим, что у меня есть блок адресов IPv4, и один из адресов хоста - 182.44.82.16/26. Могу ли я найти первый и последний адрес этого блока адресов?
Я думаю так:
182.44.82.16
является 182.44.82.(0001 0000)
где (0001 0000)
двоичный код для 16.
Поскольку маска /26
, Я думал, что смогу сделать это:
IP: 182.44.82.(0001 0000)
Mask: 182.44.82.(1111 1000)
И тогда это означает, что я оставил только последние 3 бита для IP-адресов, в результате чего первый адрес будет 182.44.82.16, а последний - 182.44.82.23. Но это выглядит не совсем так. Как я могу рассчитать первый и последний адреса этого блока адресов?
Адреса IPv4 представляют собой 32-битные беззнаковые INT.
Поскольку и адрес, и сетевая маска могут быть выражены как 32-битное целое число без знака, и они тесно связаны, это легко:
first = (addr && netmask)
last = (addr && netmask) + !netmask
/ 26 означает 26 бит для подсети. При 8 битах на байт вы получаете 24 для первых трех байтов и два для последнего. Это означает, что ваш последний байт будет иметь форму (nnhh hhhh), где n - бит подсети, а h - бит хоста. 16 действительно (0001 0000), поэтому вы получите (00xx xxxx).
Таким образом, сетевой адрес (00 | 00 0000) -> .0, широковещательный (00 | 11 1111) -> .63, а первый и последний используемые адреса - .1 и .62.
Калькулятор подсети может работать, http://www.subnet-calculator.com/. Предполагая, что класс сети - это класс B, вы получите 182.44.82.0 - 182.44.82.63
как указано - любой блок IP-адреса 182.44.82.16/26, где / 26 определяет префикс, и чтобы найти первый адрес и последний адрес, вы должны знать эту формулу:
Первые адреса = любые IP-адреса И Сетевая маска
Последние адреса = любые IP-адреса ИЛИ (! Маска сети)
чтобы найти маску сети: - поскольку u с префиксом / 26, это означает, что 26 единиц там Netmask = 11111111 11111111 1111111 11000000 (255.255.255.192)
! Маска сети = 00000000 00000000 00000000 00111111
Теперь первые адреса - 182.44.82.16 И 255.255.255.192 вы получите Первые адреса = 182.44.82.0
и Last addrs - 182.44.82.16 OR (! Netmask) вы получите Last addrs = 182.44.82.63
(используйте двоичный расчет, чтобы получить эти ответы)