
Я случайно нажал returnслишком рано, пытаясь выбрать ping
устройство, поэтому вместо этого ping 10.111.12.4
я набрал
C:\Users\roadierich>ping 10.111
Pinging 10.0.0.111 with 32 bytes of data:
Request timed out.
Я был удивлен, увидев, что IP-адрес был расширен, чтобы заполнить недостающие октеты.
После дальнейших экспериментов я обнаружил:
ping 1 => ping 0.0.0.1
ping 1.2 => ping 1.0.0.2
ping 1.2.3 => ping 1.2.0.3
ping 1.2.3.4 => ping 1.2.3.4 (as expected)
На основании беглого тестирования,tracert
Я искал в Google, но не нашел никаких ссылок на это поведение. Это фактический стандарт, стандарт де-факто, реализованный в каждом инструменте, принимающем IP-адрес в качестве аргумента, или это уникально для Windows?
Я знаю, что в IPv6 допускается опускать строки последовательных нулей, но разделительные символы все равно присутствуют.
решение1
Стандарт? Нет, если под «стандартом» вы подразумеваете «глобально ожидается, что он будет работать таким образом».
В этом случае Microsoft оказала нам услугу (намеренно или потому, что авторы «ping» Windows добавили дополнительный код, потому чтоонихотел этого).
В любом случае, есть отличный ответ наhttps://superuser.com/a/486936.