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