#0142（2025/05/19）TCP/IPへの疑問 その2

# TCP/IPへの疑問 その2

このドキュメントは、実際に筆者が ChatGPT に投げかけた質問とその回答を *輪読形式* でまとめたものです。単なる Q\&A の羅列ではなく、**背景→課題→回答→深掘り → コード例／実践Tips** という流れで理解が定着するよう構成しています。

---

## 1. サブネットマスクはなぜ必要？

### 背景

IP アドレス (IPv4) は 32bit。ここを**ネットワーク部**と**ホスト部**に分ける「境界線」がサブネットマスクです。

### 課題

境界線が無いと PC は「宛先が同じネットにいるのか？」を判断できず、**すべてをブロードキャスト or すべてをルータ送り**にしてしまう。結果、輻輳 or ブラックホール通信に。

### 回答 & 深掘り

| 問題              | サブネットマスクが解決すること        |
| --------------- | ---------------------- |
| ARP ブロードキャストが洪水 | /24 で切れば 254 台までに限定    |
| ルータの経路表が巨大化     | プレフィックスごとに集約できる (CIDR) |
| アドレスの無駄遣い       | `/26` `/30` と可変で割り当て可  |

#### Python 実例 : IP とマスクからネットワーク部を取り出す

```python
from ipaddress import ip_network
net = ip_network('192.168.1.123/26', strict=False)
print(net.network_address)  # -> 192.168.1.64
print(net.broadcast_address)  # -> 192.168.1.127
```

---

## 2. プライベート IP アドレスの正体と歴史

RFC1918 (1996) で次の 3 範囲が予約。

| クラス | 範囲               | ホスト数    | 主な用途   |
| --- | ---------------- | ------- | ------ |
| A   | `10.0.0.0/8`     | 1,677 万 | 企業・DC  |
| B   | `172.16.0.0/12`  | 104 万   | 企業 LAN |
| C   | `192.168.0.0/16` | 65,534  | 家庭用ルータ |

> **なぜ “中途半端” な数字？** 当時比較的空いていて、クラス A/B/C それぞれ 1 つずつ確保できたため。

---

## 3. IPv4 アドレス枯渇をどう乗り越えている？

* **NAT / PAT** : 1 つのグローバル IP を数百台で共有
* **CGNAT** : ISP レベルでさらに共有
* **CIDR** : 可変長プレフィックスで空きアドレス削減
* **IPv6** : 3.4×10^38 個で実質無限

> IPv6の利用率：43.14 %  ... Google IPv6 Adoption〈2025-05-06 時点〉
> https://www.google.com/intl/en/ipv6/statistics.html#tab=ipv6-adoption

---

## 4. `curl ifconfig.me` で出る IP は？

* **何？** ルータ or CGNAT が持つ “今外から見える” グローバル IP
* **変わる要素** : ルータ再起動・回線再接続・VPN/テザリング・回線切替
* **変わらない要素** : PC 再起動・LAN ケーブル抜き差し

---

## 5. トレースルートで通信の旅を覗く

### 実行例

```bash
traceroute www.google.com
```

```
 1  192.168.11.1 (自宅ルータ)
 2  bbtec.net (ISP)
 4  10.9.203.6 (CGN内)
 5  209.85.149.253 (Google AS15169)
 8  nrt13s72-in-f4.1e100.net (142.251.222.36) (成田DC)
```

### 観察ポイント

* ISP ドメインで自宅回線種別がわかる
* 10.x.x.x は ISP 内私設ネット
* Google IP は whois で AS15169 確認可

---

## 6. 企業が持つ巨大 IP ブロックを調べる

### whois 例

```bash
whois 3.165.11.67 | grep -E 'OrgName|CIDR'
# OrgName: Amazon Technologies Inc.
# CIDR:    3.128.0.0/9
```

---

## 7. グローバル IP はユニーク？動的？

* **ユニーク性** : RIR (ARIN, APNIC, etc.) が重複なく割当
* **動的 or 固定** : ISP の契約次第 (家庭=動的, 法人=固定)
* **個人特定** : ISP がログ保持&法的手続きで紐づけ可能

---

## 8. ルーターは IP をいくつ持てる？

### WXR‑1750DHP2 のケース

| 項目         | 仕様                     |
| ---------- | ---------------------- |
| WAN ポート    | 1 (PPPoE 1セッション)       |
| 最大グローバルIP  | 1                      |
| DHCP 配布可能数 | 253 (192.168.11.2‑254) |
| マルチWAN     | 非対応                    |
| 固定IP対応     | 1個まで (要ISP契約)          |

---

## 9. 光コンセントの数と IP 数は無関係

光コンセント = 物理層 termination。IP=OSI Layer3。**レイヤ違い**の話なので関係しない。

---

## 10. ルーターで接続端末と MAC アドレスを確認する

1. ブラウザで `http://192.168.11.1` → ログイン
2. 「ステータス → 無線LAN接続状況」
3. IP / MAC / 電波帯域を確認

---

## 11. `ifconfig` から読み解く Mac の状態

| IF    | 用途                | IP/MAC       | 状態       |
| ----- | ----------------- | ------------ | -------- |
| en0   | Wi‑Fi             | 192.168.11.2 | Active   |
| awdl0 | AirDrop           | fe80::..     | Active   |
| utunX | VPN/Private Relay | IPv6 Only    | Active   |
| lo0   | Loopback          | 127.0.0.1    | Active   |
| その他   | 仮想／未使用            | -            | Inactive |

> **Tip**: `netstat -rn` でルーティングテーブルを確認すれば、どの IF を経由して外に出るか分かる。

---

## 12. HTTP は TCP? UDP?

* 従来 HTTP/1.1・HTTP/2 = TCP (Port 80/443)
* HTTP/3 = **QUIC** (UDP/443) で 0‑RTT・接続移動を実現

### TCP 3‑Way Handshake おさらい

```mermaid
sequenceDiagram
client->>server: SYN
server->>client: SYN-ACK
client->>server: ACK (接続確立)
```

### QUIC 0‑RTT イメージ

```mermaid
sequenceDiagram
client->>server: Initial (ClientHello)
server->>client: Handshake + 1‑RTT keys
client->>server: HTTP Request (0‑RTT)
```

---

### 次回予告

* IP ヘッダ詳細フィールドをバイナリで分解
* NAT テーブルのリアルタイム観察方法
* IPv6 でのプレフィックス委譲と RA ガード

---

**© 2025 Keita & ChatGPT**