Назад | Перейти на главную страницу

Нахождение первого и последнего адреса блока IP-адресов с маской подсети

Я не уверен, что это подходящее место, чтобы задать этот вопрос, но я подумал, что это один из наиболее подходящих сайтов 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

(используйте двоичный расчет, чтобы получить эти ответы)