Насколько широко распространена математика IP-технологий?

773
Niels Basjes

Если мы указываем адрес IPv4, мы все обычно делаем шаблон 1.2.3.4 Теперь, по сути, это всего лишь «способ» записи 32-битного числа в более удобочитаемой форме.

IP-адрес 1.2.3.4 также может быть записан как 1.2. (3 * 256 + 4) = 1.2.772

Это означает, что у вас может быть IP-адрес с 3 точками (то есть обычной практикой), 2 точками, 1 точкой и вообще без точек (то есть обычное 32-разрядное целое число без знака, записанное в виде десятичного целого числа).

Используя такую ​​альтернативную нотацию, вы могли бы написать некоторые IP-адреса еще более удобочитаемыми: 10.10.4000 - это то же самое, что 10.10.15.160.

Одним из побочных эффектов является то, что если он используется в сочетании с веб-сервером, таким как apache, вы можете определить 4 разных vhosts на одном IP-адресе без использования файла DNS или хоста. (Попробуйте это дома;)

Я знаю, что есть много инструментов на основе графического интерфейса (например, Windows IP config), которые просто имеют 4 поля, которые принимают только 0-255. Многие инструменты командной строки (такие как ping, curl, ssh и т. Д.) И почти все веб-браузеры (которые в основном имеют адресную строку свободной формы) могут получить «любую» форму.

Теперь мой вопрос: насколько хорошо эти виды альтернативных нотаций IPv4 приняты / разрешены инструментами, которые мы имеем «в дикой природе», которые принимают любую форму?

2

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

5
nik

Мне не нравится идея записи IP-адресов в целочисленных представлениях, кроме a.b.c.dформы, где каждое из 4 значений находится в диапазоне 0-255 (с другими ограничениями).

Другие обозначения просто приведут к неправильной интерпретации и появлению новых ошибок в природе.
Я голосую за то, чтобы определить все инструменты и приложения, которые позволяют такие интерпретации, и исправить их.

Со временем у нас будут нотации IPv6 для работы ; давайте не будем все портить.

3
Matthew Iselin

Это работает из-за способа, которым работает функция inet_addr . Практически код каждого сетевого приложения использует это для преобразования IP-строк в их целочисленную форму и поддерживает нотации a, ab, abc и abcd.

Так что да, должно быть довольно безопасно предположить, что можно использовать все четыре из этих обозначений для IP-адреса.

Описание функции inet_addr фактически описывает наблюдаемое поведение как «по замыслу». Это то, что я хотел знать. Niels Basjes 15 лет назад 0
2
Seth

Панель местоположения Chrome будет автоматически заполнять точечные IP-адреса и покажет результаты во время набора текста. Т.е. http: //10.1 -> http://10.0.0.1, http: //10.2.4 -> http://10.2.0.4 и т. Д.

1
Josip Medved

Если вы наткнетесь на .NET-программу, которая читает IP-адрес, вы можете рассчитывать и на то, что она поддерживает десятичное представление. Большинство парсеров в языках программирования, которые я использовал, ведут себя одинаково.

К сожалению, довольно немногие из них используют RegEx, чтобы проверить, введен ли точечный синтаксис при попытке сделать это из пользовательского интерфейса. Таким образом, хотя они в состоянии разобрать его, они решили не делать этого.

Однако обратите внимание, что точечный синтаксис гораздо более читабелен и запоминаем, чем десятичное представление.