Почему работает "ping X", где "X" - это целое число в алфавитном порядке?
Итак, я обнаружил странную особенность утилиты Windows 10 ping. Если вы пропингуете целый номер вместо IP-адреса, он "преобразует" этот номер в IPv4-адрес. Преобразование таково, что первый октет - это ваше место 256^3, второй октет - 256^2, третий - 256^1, а последний октет - это место "единицы" или 256^0.
Например, "ping 200" будет пинговать 0.0.0.200, но "ping 400" будет пинговать 0.0.1.144, где "1" в третьем октете представляет 256 (256+ 144 = 400).
Быстрый поиск в Google (хотя я не мог придумать отличный поисковый запрос) ничего не дал.
Мои единственные две теории таковы:
- Возможно, в более ранней итерации схемы IP (т.Е. неиспользуемых v1, v2 или v3) планировалось использовать только отдельные целые числа. Microsoft, в своей одержимости обратной совместимостью, написала алгоритм перевода в утилиту ping, чтобы справиться с этим способом еще тогда, когда ping был первым закодировано.
- Может быть так, что из-за способа кодирования утилиты ping она обычно принимает действительный IPv4-адрес и преобразует его в одно целое число, прежде чем что-то делать с этими данными. Таким образом, в качестве проверки кода, если он видит, что пользователь ввел одно целое число, он просто пропускает этот начальный шаг перевода.
Есть идеи? Это определенно заинтриговало моих коллег, но они были так же невежественны, как и я.
РЕДАКТИРОВАТЬ: Только что протестировал его на моем Arch Linux машина, и я могу подтвердить, что такое поведение существует и там, так что это, вероятно, дискредитирует мою первую теорию.