Материал просмотрен 1,204 раз(а)

При использовании некоторых старых программ для работы с сетью ещё встречается такая бага, как неправильное написание IP-адресов. Сейчас название программы не вспомню, довольно серьезная программа. Сначала даже не понял, в чём может быть проблема, пока не произвел ряд экспериментов. Коротко, могу охарактеризовать это так:

Интерфейс программы для управления компами по сети добивает недостающие позиции нулями, для красоты. И вот что возникает:

ping

ping

Не сразу я понял, почему IP адрес подменяется. Чтение некоторой документации и форумов дало понять, что добивать IP-адрес нулями впереди – неправильно! Если перед октетом части адреса стоит 0, то это трактуется как восьмиричная вставка. Т.е. 030 в восьмиричной системе счисления = 24 в десятичной.

Весьма тривиальный ping 8.8.8.8 можно превратить в :

C:\Users\Engineer>ping 010.010.010.010
Обмен пакетами с 8.8.8.8 по с 32 байтами данных:
Ответ от 8.8.8.8: число байт=32 время=127мс TTL=50
Ответ от 8.8.8.8: число байт=32 время=127мс TTL=50
Ответ от 8.8.8.8: число байт=32 время=126мс TTL=50
Ответ от 8.8.8.8: число байт=32 время=126мс TTL=50
Статистика Ping для 8.8.8.8:
Пакетов: отправлено = 4, получено = 4, потеряно = 0
(0% потерь)
Приблизительное время приема-передачи в мс:
Минимальное = 126мсек, Максимальное = 127 мсек, Среднее = 126 мсек

IP можно так же представлять в 16-ричном виде, используя приставку “0x” перед числом.

Например пингуем IP Майла:

C:\Users\Engineer>ping 217.69.0x8b.201

Обмен пакетами с 217.69.139.201 по с 32 байтами данных:
Ответ от 217.69.139.201: число байт=32 время=112мс TTL=58
Ответ от 217.69.139.201: число байт=32 время=112мс TTL=58
Так же можно преобразовать все октеты в 16-ричное представление и пингануть целиком:

C:\Users\Engineer>ping 0xd9458bc9
Обмен пакетами с 217.69.139.201 по с 32 байтами данных:
Ответ от 217.69.139.201: число байт=32 время=112мс TTL=58
Ответ от 217.69.139.201: число байт=32 время=112мс TTL=58
Ответ от 217.69.139.201: число байт=32 время=112мс TTL=58
Ответ от 217.69.139.201: число байт=32 время=113мс TTL=58
Статистика Ping для 217.69.139.201:
Пакетов: отправлено = 4, получено = 4, потеряно = 0
(0% потерь)
Приблизительное время приема-передачи в мс:
Минимальное = 112мсек, Максимальное = 113 мсек, Среднее = 112 мсек

Мораль. Будьте внимательны при записи IP-адреса с ведущим нулем. Может пингануться совсем не то, что хотите. А если преобразовать число в десятичное не удастся, то адрес не пинганется вообще:

ping 127.0.0.8 пингуется. ping 127.0.0.08 – нет, хотя все адреса этой подсети должны быть доступны. Потому что 08 неправильное представление адреса восьмиричной системы.