サマリ
ping 192.168.0.1 のつもりで、ping 192.168.1 と書いてしまっても意図通りに動き、192.168.0.1 = 192.168.1 と解釈される経験をした方も多いと思いますが、処理系(*BSD/macOS, Linux/glibc, Windowsなど)によってはIPv4アドレスの記法として
xxx.yyy.zzz.aaa (それぞれ 0〜255)
以外の表記を受け付ける。
記事のタイトルに省略記法と書いたが、正確にはクラスを意識した記法の名残で、短縮することを目的とした書き方ではない。また仕様で決められたものではなく実装依存。
以下 macOS 10.12, FreeBSD 11.0-RELEASE, Linux (Ubuntu 16.04)のglibc での動作。. (ドット)は必ずしも3つではなく、数値も10進数だけでなく16進数、8進数が混ぜて書けて、いくつか例を挙げると以下のようなものが許容される。
# ping 1 (0.0.0.1)
# ping 9999999999 (84.11.227.255)
# ping 0xFACEB00C (250.206.176.12)
# ping 10.65535 (10.0.255.255)
# ping 10.0xFF.0377 (10.0.255.255)
# ping 192.168.9999 (192.168.39.15)
. (ドット) なし。32ビット符号なし整数をべた書き
a # aの範囲は 0〜4294967295, 0x0〜0xFFFFFFFF(16進), 00〜077777777777(8進)
下記の例がこのルールに該当
# ping 1 (0.0.0.1)
# ping 9999999999 (84.11.227.255)
# ping 0xFFFFFFFF (255.255.255.255)
また、FreeBSD 11.0-RELEASE, macOS (10.12)の実装だと、32ビットを超える数を書いた場合は、下位32ビットのみが有効。例えば、こんな文字列でも有効なIPv4アドレス 192.168.0.1 として受け付けてしまう (Windows 10, Ubuntu 16.04のglibcは不可でした)。
# ping 0xFACEB00C000025DE0000FFFFFFFFFFFFFFFFFFFFFFFF0000000000C0A80001
# ping 1000000000000000000000000000000000000000000000000000003232235521
. (ドット) ひとつ。[8ビット符号なし整数].[24ビット符号なし整数]
クラスAのネットワーク部(8ビット) + ホスト部(24ビット)の表記を意図した記法
a.b # a: 0〜255, 0x0〜0xFF, 00〜0377
# b: 0〜16777215, 0x0〜0xFFFFFF, 00〜0377777777
例
10.65535 = 10.0.255.255
10.0xFFFFFF = 10.255.255.255
クラスを意識した記法とは書いたが a が128を超えても
172.16 = 172.0.0.16
と解釈される。
. (ドット) 2つ。[8ビット整数].[8ビット整数].[16ビット整数]
クラスBのネットワーク部(16ビット) + ホスト部(16ビット)の表記を意図した記法
a.b.c # a: 0〜255, 0x0〜0xFF, 00〜0377
# b: 0〜255, 0x0〜0xFF, 00〜0377
# c: 0〜65535, 0x0〜0xFFFF, 00〜0177777
例
172.16.1 = 172.16.0.1
192.168.256 = 192.168.1.0 (クラスCのアドレスでも可)
IPv4アドレスを含むIPv6アドレス (射影アドレス, 互換アドレスなど)
わざわざ試すまでもないが、Windows 10, Ubuntu 16.04 (Linux/glibc), FreeBSD 11.0-RELEASE, macOS Sierra (10.12)、どの実装でも、inet_pton(), getaddrinfo() は省略表記を受け付けない。
NG ::ffff:10.1
NG ::ffff:0xFF.0xFF.0xFF.0xFF
NG ::127.1
NG ::10.0.0.0xFF
NG fe80::172.16.65530
まとめ
この記法を使う場面はたぶん、もうないと思う。ちなみにガラケーの時代にはURL(ホスト名)の入力を簡単にするため、long IPと呼ばれる、ネットワークバイトオーダ32ビットべた書きの表記を使う人もいたようだが、もはや意味はない。
■窓の杜 NEWS 2004/07/07
URLを携帯電話で入力しやすい9~10桁の数字に変換できる「LongIPmaker」が公開
http://forest.watch.impress.co.jp/article/2004/07/07/longipmaker.html
参考文献
日本語の wikipedia の「IPアドレス」の項目にも詳しく書いてあります
[1] https://ja.wikipedia.org/wiki/IPアドレス#表記