2

Если мы указываем адрес 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 приняты / разрешены инструментами, которые мы имеем «в дикой природе», которые принимают любую форму?

4 ответа4

5

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

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

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

3

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

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

2

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

1

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .