| この記事の要点 |
|
IP とは
IP(Internet Protocol)はインターネットの基盤プロトコルで、OSI 参照モデルのネットワーク層(第3層)、TCP/IP モデルのインターネット層に位置します。パケットを宛先 IP アドレスまで届けるのが役割で、世界中のルーターはこの IP ヘッダの宛先アドレスを見て次のホップを決めます。
IP 自体はコネクションレス(接続を維持しない)かつ非信頼(到達保証なし)。順序保証・再送・フロー制御はTCP や上位プロトコルが担当します。
IPv4 と IPv6
| 項目 | IPv4 | IPv6 |
|---|---|---|
| アドレス長 | 32 bit | 128 bit |
| 表記 | 192.168.1.1(10進ドット区切り) | 2001:db8::1(16進コロン区切り) |
| アドレス総数 | 約 43 億 | 約 340 澗(3.4 × 1038) |
| ヘッダ長 | 可変(20〜60 byte) | 固定 40 byte |
| フラグメント化 | ルーター/送信元 | 送信元のみ |
| セキュリティ | オプション(IPsec) | 必須(IPsec 標準) |
| NAT | 必須に近い | 原則不要 |
IPv4 アドレスの構造
IPv4 アドレスは 32bit を 8bit ずつ 4 つに区切り、10 進数で表記します。
192.168.1.10
| | | |
8b 8b 8b 8b (各オクテット 0-255)
二進数表記:
11000000.10101000.00000001.00001010
クラスフルアドレス(旧来)
| クラス | 範囲 | 用途 |
|---|---|---|
| A | 0.0.0.0 〜 127.255.255.255 | 大規模ネットワーク |
| B | 128.0.0.0 〜 191.255.255.255 | 中規模 |
| C | 192.0.0.0 〜 223.255.255.255 | 小規模 |
| D | 224.0.0.0 〜 239.255.255.255 | マルチキャスト |
| E | 240.0.0.0 〜 255.255.255.255 | 実験用 |
現在はCIDR(Classless Inter-Domain Routing)が主流で、192.168.1.0/24 のようにプレフィックス長で区切ります。
プライベート IP アドレス
| 範囲 | 用途 |
|---|---|
| 10.0.0.0/8 | 大規模 LAN |
| 172.16.0.0/12 | 中規模 LAN |
| 192.168.0.0/16 | 家庭・小規模 LAN |
プライベート IP はそのままインターネットに出られないため、NAT でグローバル IP に変換されます。
IPv4 ヘッダの構造
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| IHL |Type of Service| Total Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |Flags| Fragment Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time to Live | Protocol | Header Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| フィールド | 意味 |
|---|---|
| Version | IP のバージョン(4 または 6) |
| IHL | ヘッダ長(4 byte 単位) |
| TTL | Time To Live。ルーターを通過するたびに -1。0 で破棄 |
| Protocol | 上位プロトコル(TCP=6, UDP=17, ICMP=1) |
| Source/Dest Address | 送信元 / 宛先 IP アドレス |
| Identification / Flags / Fragment Offset | フラグメント化に使う |
IPv6 アドレスの構造
IPv6 は 128bit を 16bit ごとに 8 つに区切り、16 進数で表記。連続する 0 は :: で省略できます。
2001:0db8:0000:0000:0000:ff00:0042:8329
↓ 省略形
2001:db8::ff00:42:8329
ルーティングの基本
ルーターはルーティングテーブルを見て、宛先 IP に最も近いネクストホップへパケットを転送します。最長一致(Longest Match)でエントリを選びます。
# Linux でのルーティングテーブル確認
ip route show
# default via 192.168.1.1 dev eth0
# 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.10
# Windows
route print
主要な関連プロトコル
| プロトコル | 役割 |
|---|---|
| ICMP | 診断・エラー通知(ping / traceroute) |
| ARP | IP → MAC アドレス解決(IPv4) |
| NDP | 近隣探索(IPv6 版 ARP) |
| DHCP | IP アドレスの動的割り当て |
| DNS | ドメイン名 → IP の解決 |
| NAT | プライベート IP ↔ グローバル IP 変換 |
NAT の仕組み(IPv4 の延命策)
IPv4 アドレス枯渇への対応として、家庭やオフィスでは1 つのグローバル IP を多数のプライベート IP で共有する NAT が使われます。
[192.168.1.10] ─┐
[192.168.1.11] ─┼─ NAT ルーター(203.0.113.5) ── インターネット
[192.168.1.12] ─┘
具体的にはポート番号も併用する NAPT(PAT)が一般的です。
動作確認コマンド
# 自分の IP アドレスを確認
ip addr show # Linux
ipconfig # Windows
ifconfig # macOS / 旧 Linux
# 疎通確認
ping 8.8.8.8
# 経路確認
traceroute 8.8.8.8 # Linux / macOS
tracert 8.8.8.8 # Windows
# グローバル IP の確認
curl ifconfig.me
FAQ
Q: なぜ IPv6 への移行が遅い?
A: NAT で IPv4 が延命できているのと、IPv4 / IPv6 の両方を運用する Dual Stack のコストが理由。ただしモバイル網やクラウドでは IPv6 ネイティブも増えています。
Q: IP と TCP / UDP の関係は?
A: IP は「住所に荷物を届ける」役、TCP / UDP は「荷物の中身(ポート別の配送)」を担います。IP の上に TCP / UDP が乗ります。
関連
- TCP — 信頼性のあるトランスポート層プロトコル
- UDP — 高速・非信頼のトランスポート層プロトコル
- ICMP — IP 上のエラー通知 / 診断
- サブネットマスク / CIDR — IP アドレスの分割
- DHCP — IP の自動割り当て
- DNS — ドメイン名 → IP の解決
- NAT / NAPT — プライベート ↔ グローバル変換
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Git pushした変更の取消し|revert・履歴変更と保護の注意点 2026-10-15 23:49:01
- Gitでローカルを戻す前に|reset・restoreの違いと退避範囲 2026-10-15 23:49:01
- Git rebaseの使い方|対象範囲・競合解決・pushの判断 2026-10-15 22:50:59
- Git pullの使い方|取込み先・ff-only・競合とstashの注意点 2026-10-15 22:50:59
- Git pushの使い方|送信先・タグ・force-with-leaseの条件 2026-10-15 22:12:47
- Git remoteの設定・確認・削除|SSH URLとfetch/pushの違い 2026-10-15 22:12:47
- Gitリモートリポジトリの作成|初回push・既存履歴・mirrorの注意 2026-10-15 15:48:16
- Gitのuser.name・user.email設定|local/global・確認と過去履歴の注意 2026-10-15 15:30:07
- LinuxにGitをインストール|配布元・初期設定・TLSと認証の確認 2026-10-15 15:30:06
- Git導入と初回push|Linuxサーバー・Windows/macOS・SSH設定 2026-10-15 14:51:54
- Db2のCREATE INDEX|索引定義・INCLUDEと実行計画の確認 2026-10-15 14:10:22
- Db2の自動採番|IDENTITY・ID取得とRESTARTの注意点 2026-10-15 14:10:22
- 【DB2】特定スキーマの全テーブルの全カラム情報を取得する方法 2026-10-15 13:53:15
- Db2のシーケンスとIDENTITYの違い|採番とカタログの確認SQL 2026-10-15 13:53:15
- Db2で複数カラムをUPDATEする方法|SET・WHEREと更新前の値 2026-10-15 13:53:15