Blog. Just Blog

Преобразование короткой записи IP в полный адрес

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Software | Автор: ManHunter
Преобразование короткой записи IP в полный адрес
Преобразование короткой записи IP в полный адрес

Когда вы вводите команду вроде ping 1.1, система автоматически превращает ее в ping 1.0.0.1, и это не ошибка. Это происходит из-за особенности в работе парсера IP-адресов в большинстве операционных систем. Система пытается "достроить" короткую запись 1.1 до полного IP-адреса, интерпретируя ее как первый и последний октет, а средние части заполняя нулями. Такой подход уходит корнями в старые стандарты и до сих пор поддерживается многими утилитами для обратной совместимости. Поэтому 1.1 естественным образом становится 1.0.0.1, просто потому, что так устроен разбор адресов в сетевой инфраструктуре.

Сетевой стек, будь то в Windows, Linux или других Unix-подобных системах, умеет распознавать неполные адреса и дополнять их до стандартного вида из четырех октетов. При этом недостающие части заполняются нулями справа: запись из одного числа превращается в 0.0.0.x, из двух чисел - в a.0.0.b, а три числа превращаются в a.b.0.c. Система берет все указанные числа, размещает их в позиции самого старшего (первого) и самого младшего (последнего) октета. Все пропущенные средние октеты она заполняет нулями.

Например, применим это правило к 1.1. У нас есть два числа: 1 и 1. Первое число 1 становится первым октетом: 1. Последнее число 1 становится четвертым октетом: .1. Пропущенные второй и третий октеты заполняются нулями: .0.0.

ping 1.1 -> 1.0.0.1
Это правило работает для записей разной длины. Первый октет = 10, последний = 1, пропущенные = 0.0.

ping 10.1 -> 10.0.0.1
Или, например, ваш локальный компьютер - localhost:

ping 127.1 -> 127.0.0.1
А вот три числа. Первое (192) становится первым октетом, последнее (1) - четвертым, а среднее (168) становится вторым октетом. Третий октет, который был пропущен, заполняется нулем.

ping 192.168.1 -> 192.168.0.1
Такая логика - это во многом пережиток прошлого, удобный для быстрого тестирования в больших сетях класса A. Администраторам было проще написать 10.1 вместо полного 10.0.0.1, экономя время.

На некоторых системах поведение может отличаться. Это не универсальный стандарт, а распространенная практика. На некоторых системах или в специфическом сетевом ПО поведение может быть другим (например, может подставляться адрес из вашей подсети). Лучше использовать полный адрес. Для надежности и избежания путаницы в скриптах и командах всегда используйте полную форму IP-адреса.

Преобразование короткой записи IP в полный адрес
Преобразование короткой записи IP в полный адрес

А где еще это можно использовать? Когда-то я выкладывал статью "Прячем IP-адрес сервера в ссылке". Вкратце, это малоизвестный, но полностью корректный с точки зрения стандартов способ представления IPv4-адреса в виде единственного 32-битного числа (decimal IP или decimal dot notation).

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

Но, как говорится, "все гениальное просто", а эта техника именно простая, но от того не менее эффективная в определенных контекстах. Отличный пример того, как понимание фундаментальных принципов работы протоколов дает неожиданные возможности для их использования.

Поделиться ссылкой ВКонтакте
Просмотров: 340 | Комментариев: 1

Метки: сеть

Комментарии

Отзывы посетителей сайта о статье
Александр (26.11.2025 в 10:25):
Очень удобная особенность. Сам часто пользуюсь. Жаль что работает не везде.

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2025
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 2 (0.0018 сек.) / Память: 4.5 Mb
Наверх