はじめに
だれかの書いた説明をまとめると自分の口で説明するとなったときにわからなくなってしまうので、自分に説明するかのようにまとめています。
IPアドレスとは
ネットワーク上で通信を行うために、各機器に割り当てられる一意の識別番号。
一般的に「住所」のような役割を果たし、データが正しく届けられるために使われる。
理解のポイント
- 一意というのは「唯一の、ただひとつ」という意味
- ネットワーク上で「どの機器か」を識別するため、同じIPは存在しないようにする
- 一意の数字だから、間違いなくそのアドレスに届けられる
IPv4(Internet Protocol version 4)
IPv4は、0~255の値をとる4つの10進数(オクテット)を「.(ドット)」で区切った形式で構成。全体の長さは32bitで、最も広く使われている形式。
表示例:192.168.0.1
理解のポイント
- 4つのオクテット = それぞれ8bitの2進数(192 = 11000000)
- 32bit = 8bit × 4つのオクテット
- 0~255なのは、2進数8bitの範囲(00000000〜11111111)
世界中で使われてきたが、アドレスの数が枯渇してきた
→ その解決として、IPv6アドレスが生まれた
4つのオクテットじゃなくてもIPv4として使えることもある
表示例:
0xC0A80001 = 192.168.0.1
0xC0.0250.1 = 192.168.0.1(C0→192、250→168)
コンピュータの多くの基本的な仕組みや言語はC言語をルーツにしていることが多く、その書き方ルールが広く採用された背景がある。
書き方 | 解釈 | 例 | 意味 |
---|---|---|---|
0x~ | 16進数 | 0xFF | 255 |
0~ | 8進数 | 070 | 63 |
数値のみ | 10進数 | 100 | 100 |
理解のポイント
- C言語では、先頭に何かをつけることで、「進数を明示にする」ルールがある。
- 最近のブラウザではセキュリティの観点からやめているケースが多い。
- フィッシング詐欺の偽装に用いることもあるので、注意が必要。
IPv6(Internet Protocol version6)
IPv6は128bitで構成され、16進数4桁のブロックが8個、「:(コロン)」で区切られた形式。IPv4の後継として設計され、膨大な数のアドレスを提供する。
表示例:2001:0db8:0000:0000:0000:ff00:0042:8329
理解のポイント
- 合計128bit = 16進数4桁 × 8ブロック
- サブネット表記はCIDRのみ
IPv6は少しずつ普及しているが、完全移行には時間がかかっているため、IPv4とIPv6が混在しているのが現状
省略表記
IPv6は16進数で表記しても長いことから、以下の3つのルールがある。
- フィールドごとに先頭の0の並びは省略可能
01DA → 1DA、0012 → 12
- フィールドのbitがすべて0の場合は1つの0に省略可能
0000 → 0
- bitがすべて0のフィールドが連続していたら、::に省略可能
2001:0000:0000:0000:aaaa:bbbb:cccc:1111
→ 2001::aaaa:bbbb:cccc:1111
::は1つのアドレス内で一度しか使用できないが、1つの0に省略方法と併用可能
2001::1111:aaaa:0:0:1111
NAT(Network Address Translation)
ルーターにある機能で、IPアドレスを他のIPアドレスに変換する技術。
自宅のプライベートIPアドレス → 外部とやり取りするためにルーターがパブリックIPに変換。
[PC:192.168.0.5] → [ルーター:NATで変換] → [インターネット側:203.0.113.1]
このおかげで、家庭内の複数端末が1つパブリックIPで同時に通信できる。
NATがあるから、ローカル → 外部通信が可能になる