萌えハッカーニュースリーダー

2025/04/25 20:42 Fun with IP Address Parsing

出典: https://blog.dave.tf/post/ip-addr-parsing/
hakase
博士

やあ、ロボ子!今日はIPアドレスの面白い話をするのじゃ。

roboko
ロボ子

IPアドレスですか、博士。それは興味深いですね。どのようなお話でしょうか?

hakase
博士

IPアドレスって、いろんな書き方があるって知ってたかの?例えばIPv4だと、おなじみの`192.168.0.1`みたいなドット区切り10進数表記の他に、32ビット整数表記とか、8進数、16進数表記まであるんじゃぞ!

roboko
ロボ子

ええ!そうなんですね。8進数や16進数表記は初めて知りました。具体的にはどんな感じになるんですか?

hakase
博士

`0300.0250.0214.0377`が8進数で、`0xc0.0xa8.0x8c.0xff`が16進数じゃ。さらに、クラスA/B/C表記なんてのもあるらしいぞ。`192.168.36095`とか`192.11046143`みたいな感じじゃな。

roboko
ロボ子

それは…ちょっと読みにくいですね。普段使うことはなさそうです。

hakase
博士

じゃろ?しかも、各オクテットの先頭に好きなだけ0を付けられるんじゃ! `001.002.003.004`とか!

roboko
ロボ子

それは…一体何のために…?

hakase
博士

さあ?昔の人がそう決めたんじゃ!IPv6も負けてないぞ。コロン区切りの16進数表記は基本じゃが、`::`でゼロを省略できるんじゃ。`1:2::3:4`は`1:2:0:0:0:0:3:4`と同じ意味になる。

roboko
ロボ子

ゼロ圧縮は便利ですね。IPv6アドレスは長いですから。

hakase
博士

じゃろ?さらに、IPv6アドレスの末尾32ビットをIPv4ドット区切り表記で書けるんじゃ! `1:2:3:4:5:6:77.77.88.88`は`1:2:3:4:5:6:4d4d:5858`と同じ意味になる。

roboko
ロボ子

IPv6の中にIPv4が…なんだか不思議な感じがします。

hakase
博士

ちなみに、私たちが使ってるリファレンスパーサーは、ドット区切り10進数、`::`、末尾IPv4形式をサポートしてるぞ。でも、IPv4のクラスA/B表記とか、16進/8進表記、uint32表記は非対応じゃ。

roboko
ロボ子

なるほど。全部に対応するのは大変そうですし、あまり使わない形式は省かれているんですね。

hakase
博士

そうそう。記事によると、IPv6アドレスの末尾IPv4形式は、最近の移行メカニズムではあんまり使われないらしいぞ。

roboko
ロボ子

そうなんですね。技術は常に進化していますから、使われなくなる形式もあるんですね。

hakase
博士

まあ、IPアドレスの書き方なんて、プログラミングでハマりポイントになりがちじゃから、知っておいて損はないぞ!

roboko
ロボ子

確かにそうですね。色々な形式に対応できるように、柔軟なパーサーを作っておく必要がありそうです。

hakase
博士

ところでロボ子、IPアドレスの多様な表現方法をマスターした記念に、今度、IPアドレスをテーマにしたなぞなぞ大会でも開いてみるかの?

roboko
ロボ子

それは面白そうですね!でも、参加者は集まるんでしょうか…?

hakase
博士

大丈夫!参加賞は、私の手作りIPアドレスクッキーじゃ!…って、それじゃ誰も来ないかの?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search