Как найти формат слеша IP-адреса?

1073
user2750830

Например, в этом IP-адресе: 145.32.59.24

формат слеша должен быть / 16 в ответе.

Но я понятия не имею, как это определить.

Я понимаю, что это IP-адрес класса B.

Пожалуйста, помогите мне .. Я так старался понять это.

0
http://www.vlsm-calc.net/ipclasses.php перечисляет все классы и их маски подсетей. Как только вы узнаете класс, вам будет легко перейти с «форматом слеша». Vinayak Garg 10 лет назад 1
@VinayakGarg, поставь это как ответ. Ваше решение позволяет успешно определить «формат слеша», поэтому оно отвечает на вопрос. VL-80 10 лет назад 1
Практическое замечание: в реальной жизни это сработало бы, если бы Интернет все еще был классным. Однако с введением CIDR классы IP больше не используются в Интернете (и большинстве других сетей), поэтому невозможно определить маску подсети. mtak 10 лет назад 9

2 ответа на вопрос

4
mpez0

С тех пор как в 1993 году была введена бесклассовая маршрутизация в домене (CIDR), «классы» сети / хоста ABC стали все менее и менее полезными и им следовали. Не существует надежного способа определения разделения IPv4-адреса на его сеть и компоненты хоста по одному адресу. Формат / n для указания маски сети предполагает непрерывную маску из такого количества битов, причем самый правый остаток является частью хоста.

Таким образом, старый класс A будет выражаться как / 8, B как / 16, а C как / 24. Однако с помощью CIDR вы не ограничены этими разделами, но можете произвольно разделить 32-битный адрес. Вам нужна сетевая маска, чтобы определить правильное значение / n. И наоборот, учитывая / n, можно определить маску сети. Например, / 16 будет иметь маску 255.255.0.0.

1
krowe

Это называется «маска сети»; не «формат слеша». Во всяком случае, вы можете назвать это «нотация CIDR». Формат вообще не имеет значения. Это вернет маску в dot-notationформате:

#!/bin/sh ifconfig "$1" | sed -rn '2s/ .*:(.*)$/\1/p' 

Просто назвать это нравится: script.sh eth0. Если вы хотите, вы можете проанализировать это, чтобы создать нотацию CIDR, или вы можете попытаться разобрать ее по выходу, ip addrкоторый уже отображается в нотации CIDR. Я не имею этот код под рукой, хотя.

Возможно, вы заметили, что ни одно из этих решений на самом деле не берет IP-адрес и не выдает сетевую маску. Сделать это невозможно. Причина, по которой мы должны указать маску сети при настройке нашего IP-адреса, заключается в том, что он не может автоматически определяться IP-адресом. Маска сети - это фильтр, который применяется к IP-адресу. Он содержит информацию, не присущую IP-адресу. Оба эти решения на самом деле просто возвращают маску сети, используемую для настройки интерфейса.