皆さん、こんにちは!
上越市を拠点にし、「FA設備・装置開発」と「画像処理」に強い会社、NSIです!
私達は豊富な経験と専門知識で、各種業界の自動化・システム化のお手伝いをしています。
気温の高い日が続き、日に日に夏が近づいているのを感じます。
季節の変わり目、体調に気を付けていきましょう。
今回は「IPアドレス表記の注意点」についてまとめました。
ぜひご覧ください!
IPアドレスを0埋めすると「8」になる件
PingやプログラムでIPアドレス「192.168.0.010」と指定すると…。

「010」と指定したはずなのに、なぜか「8」でpingが送信されています。
何が起きているの?
初めて見ると「あれ?」となるこの現象、実は昔のルールが影響しているんです。
昔のC言語には「先頭の文字で進数を決める」という暗黙のルールがありました。
このルールが未だに受け継がれているものについては、今も問題なく動いてしまいます。
- 0から始まる … 8進数
- 0xから始まる … 16進数
- それ以外 … 10進数
このルールの厄介な部分が「オクテット単位で変換される」ことです。
一部だけが変わってしまうので、パッと見で気付きづらく見逃してしまいがちです。
オクテットとは?
「8 ビット(=1 バイト)で構成される 数値のひとかたまり」を指します。
IPアドレスは、32 ビット=8 ビット×4 オクテットで成り立っており、
例えば 192.168.0.1 の場合、「192」「168」「0」「1」の 4 つのオクテットとなります。
実害ってあるの?
一見、勝手に数字を書き替えてくれるだけに見えますが、実は大きな落とし穴があります。
例えばファイアウォールで「8.8.8.8 への通信は禁止!」と設定しても、同じアドレスを 010.010.010.010(=8.8.8.8) と書けば 別物扱いになり、あっさり通過してしまうことがあります。もちろん、最近の言語やブラウザ、OS では 8 進・16 進の変則表記を無効化する流れが進んでいますが、古い機器や設定ファイルが残っている環境では油断できません。そのため、よほど特別な理由がない限り、IPアドレスは10進数の4つ組(例:192.168.0.1)で書くのが安全です!

桁が揃ってきれいだからといって、0埋めすると後々トラブルに…。
色々な表記を試してみる
様々な表記でpingを実行したときの結果を見てみました。
実行環境は、Windows11のコマンドプロンプトです。
1. 8進数表記
前述でも記載したとおり、0から始まる数値は8進数と見なされます。

入力IP:010.010.010.010
出力IP:8.8.8.8
2. 16進数表記
0xから始まる数値は16進数と見なされます。

入力IP:0x7f.0x0.0x0.0x1
出力IP:127.0.0.1
3. 省略表記
先頭以降は桁が右詰めされるため、以下のように省略することも可能です。

入力IP:127.1
出力IP:127.0.0.1
4. 32bit整数表記
IPアドレスは、元々ただの整数であるため、以下のような表記も可能です。

入力IP:2130706433
出力IP:127.0.0.1

同じIPアドレスを意味していても様々な表記ができるんだね。
最後に
今回は IPアドレス表記の注意点 についてまとめました。
こんな表記方法もあるんだな~と、頭の隅に置いておいてもらえると幸いです。
ここまで読んでいただき、ありがとうございました。
ご質問・ご要望・ご相談などは、下記お問い合わせフォームからお気軽にご連絡ください。
http://www.net-nsi.co.jp/toiawase.html

この記事が役に立ったらGoodボタンを押してね~