C
ネットワーク/基礎/Lesson 02

ネットワーク基礎 — IP · DNS · ポート · OSI · ルーター · NAT

45分·theory

ネットワーク基礎 — IP · DNS · ポート · OSI · ルーター · NAT

🎯 このlessonを読み終えたら

このlessonをすべて読み終えると、以下の3つを自信を持ってこなせるようになります。

  • ✅ OSI 7層 vs. TCP/IP 4層のマッピング
  • ✅ IP · ポート · ソケットの正確な概念
  • ✅ DNSの動作(Recursive → Root → TLD → Authoritative)

学習目標をチェックリストとして手元に置き、すべて答えられるようになったらlessonを閉じましょう。

ネットワーク = コンピュータ同士の郵便配達

一言で言うと: ネットワークとは世界中のコンピュータの郵便システムのこと。IP(住所)+ DNS(名前)+ ポート(部屋番号)+ TCP/UDP(配送方式)。

4つのコア要素:

要素例え意味
IPアドレス住所コンピュータの識別(192.168.1.10 · 2001:db8::1)
DNS電話帳名前 → IP(codemaster40.com → 1.2.3.4)
ポート部屋番号どのアプリ?(80=HTTP · 443=HTTPS · 22=SSH)
TCP/UDP書留 · 普通郵便配送方式(保証あり vs. 高速)

URLの解剖:

code
https://api.codemaster40.com:443/users/42?ref=home
└─ ─┘   └────────────────┬─────────┘ └┬┘ └──┬───┘ └──┬──┘
  │              ホスト              ポート  パス     クエリ
  └─ プロトコル (TCP+TLS=HTTPS)

1つのリクエストが辿る道:
1. DNS検索: codemaster40.com → IP 1.2.3.4
2. TCPの3-wayハンドシェイクで接続
3. TLSハンドシェイクで暗号化
4. HTTPリクエスト・レスポンス
5. TCPの4-wayハンドシェイクで切断

IPアドレス + CIDR + NAT

IPv4(32ビット)— 約43億個。不足!

  • 例: 192.168.1.10 = 4オクテット × 8ビット
  • クラスA · B · C — 旧来の方式(現在は使用されない)
  • CIDRに置き換えられた

CIDR(Classless Inter-Domain Routing):

code
192.168.1.0/24      → 192.168.1.0 ~ 192.168.1.255 (256 IP)
192.168.0.0/16      → 192.168.0.0 ~ 192.168.255.255 (65,536)
10.0.0.0/8          → 10.0.0.0 ~ 10.255.255.255 (16,777,216)
  • /24 = 先頭24ビットがネットワークID、残り8ビットがホスト
  • AWS VPC · K8s podのCIDRなど、インフラの基本知識

プライベートIPアドレス帯(インターネットには届かない、プライベートネットワーク用):

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

NAT(Network Address Translation) — IPv4不足の解決策:

  • プライベートネットワーク上の複数の機器が1つのグローバルIPを共有
  • ルーターはパケット送信時にポートマッピングを記録
  • 応答パケットが届くと、ポート番号をもとに元の機器へ転送
code
[My PC 192.168.1.10:55012] → [ルーター 1.2.3.4:55012] → 外部サーバー
                                        ↓ NATテーブルに保存
応答: 外部 → 1.2.3.4:55012 → 192.168.1.10:55012

IPv6(128ビット)— 事実上無限(340兆の1兆の1兆...)。

  • 2001:0db8:85a3:0000:0000:8a2e:0370:7334
  • IoT · 5G時代のスタンダード。2025年のインターネットトラフィックの50%以上がIPv6

DNS + ポート + OSI 7層

DNS = 名前 → IPの変換システム(世界中に分散したデータベース):

検索の流れ:
1. ブラウザキャッシュを確認
2. OSキャッシュ(/etc/hosts
3. ローカルDNSサーバー(ISP · Google 8.8.8.8 · Cloudflare 1.1.1.1)
4. Root.)→ .comはどこ? → TLDサーバーを案内
5. TLD(.com)codemaster40.comはどこ? → Authoritativeを案内
6. Authoritative → 実際のIPを返す
7. 結果をキャッシュ(TTLの分だけ)

DNSレコードの種類:

  • A — IPv4マッピング(example.com → 1.2.3.4
  • AAAA — IPv6
  • CNAME — 別名のエイリアス(www → example.com
  • MX — メールサーバー
  • TXT — テキスト(SPF · DKIMなどの認証)
  • NS — ネームサーバー

ポート — 0〜65535(16ビット):

  • Well-known(0〜1023): 22(SSH) · 25(SMTP) · 53(DNS) · 80(HTTP) · 443(HTTPS)
  • Registered(1024〜49151): 3000(Node) · 8080(代替HTTP) · 5432(Postgres)
  • Dynamic(49152〜65535): OSが一時的に割り当て

OSI 7層 — 通信を7つの抽象化レイヤーに分割:

名前役割
7アプリケーションユーザーインターフェースHTTP · SMTP · DNS
6プレゼンテーションエンコーディング · 暗号化TLS · JSON · UTF-8
5セッション接続管理(現代では多くが統合)
4トランスポートエンドツーエンドの信頼性TCP · UDP
3ネットワークルーティングIP
2データリンク同一ネットワーク内の配送Ethernet · Wi-Fi
1物理信号ケーブル · 電波

実用モデル(TCP/IP 4層):

  • Application = OSI 5+6+7
  • Transport = 4
  • Internet = 3
  • Network Access = 1+2

> 💡 暗記不要。「どの層の問題か?」と問う際に使いましょう。

DNSの動作 — Recursive → Root → TLD → Authoritative

example.com を入力すると何が起こるか

0. ブラウザキャッシュ → OSキャッシュ → ルーターキャッシュ

まず自分のコンピュータのキャッシュを確認します。見つかれば即座にIPを返します。なければ次のステップへ。

1. Recursive DNS(ISPまたは8.8.8.8)

ユーザーが直接問い合わせる最初のサーバー。ISPが運営するか、Google 8.8.8.8 / Cloudflare 1.1.1.1

code
[マイコンピュータ] → "example.com のIPは?" → [Recursive DNS]

Recursiveサーバーが残りのステップを代わりに処理します。

2. Root DNSサーバー

世界13グループのIPアドレス。「.com TLDサーバーがどこにあるか」を教えてくれます。

code
[Recursive] → "comの権威サーバーは?" → [Root]
[Root] → "com は a.gtld-servers.net 等が担当"

3. TLD(トップレベルドメイン)サーバー

.com / .net / .kr などドメイン拡張子ごと。「example.comの権威サーバーが誰か」を教えてくれます。

code
[Recursive] → "example.com の権威サーバーは?" → [.com TLD]
[.com TLD] → "ns1.example.com / ns2.example.com"

4. Authoritative(権威)サーバー

ドメイン所有者が運営する実際のDNSサーバー。「example.comのIP」を実際に把握しています。

code
[Recursive] → "example.com のIPは?" → [ns1.example.com]
[権威サーバー] → "93.184.216.34"

5. キャッシュして返す

Recursiveが結果をキャッシュ(TTLの分だけ)。次のリクエストは即座に応答。そのためDNSの変更が世界全体に反映されるまで時間がかかります(TTLが切れるまで)。

DNSレコード5種

タイプ意味
AIPv4アドレス
AAAAIPv6アドレス
CNAME別のドメインのエイリアス
MXメールサーバー
TXTテキスト(SPF · ドメイン所有の認証)
code
# example.com のレコード
A       93.184.216.34
AAAA    2606:2800:220:1:248:1893:25c8:1946
CNAME   www → example.com
MX      10 mail.example.com
TXT     "v=spf1 include:_spf.google.com ~all"

TTL — どのくらいキャッシュするか

code
example.com.    300    IN    A    93.184.216.34
                ^^^
                TTL(秒)
  • 短いTTL(60〜300秒): 変更が素早く反映される。負荷 ↑
  • 長いTTL(24時間): キャッシュ効率 ↑。変更反映が遅い

移行前はTTLを短く(5分)、安定後は長く(1時間)設定しましょう

DNS確認コマンド

bash
# Mac/Linux
dig example.com A
dig example.com NS
dig +trace example.com    # 全委任チェーンをトレース

nslookup example.com 8.8.8.8

# Windows
nslookup example.com

DNSとCDN

CloudflareのようなCDNを利用する場合:

code
example.com → CNAME → example.com.cdn.cloudflare.net → 最寄りのエッジIP

地域ごとに異なるIPを返す → ユーザーは近くのサーバーを使用 → レイテンシ低減。

🤖 AIにこう聞いてみましょう

  • 「自分のドメインをCloudflareに移すDNS設定ガイドを教えて」
  • 「dig example.com A の結果を解釈して」
  • 「DNS TTLを移行前に60秒、終わったら3600に変えるタイミングを教えて」
ネットワークの基礎 — IP・DNS・ポート・OSI - ネットワーク