0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【備忘録・質問ログ】ネットワークの“通信”が混ざる理由から理解する

0
Last updated at Posted at 2026-01-28

技術書を読んでいると、疑問は点々と生まれる。それらを線でつなぎ、面として組み直してから、備忘録のログにして残す。思いのほか便利そうなので、試しに実行してみる。

ゴール

  1. L3/L4/L7が混ざらない
  2. ICMP/TCP/UDP/HTTPを「何を解くか」で説明できる
  3. “ハンドシェイク”がどこか迷わない
  4. Linuxで層ごとに検証できる(現場で使える)

0. 略語辞書

  • IP: Internet Protocol
  • ICMP: Internet Control Message Protocol
  • TCP: Transmission Control Protocol
  • UDP: User Datagram Protocol
  • HTTP: Hypertext Transfer Protocol
  • HTTPS: Hypertext Transfer Protocol Secure(HTTP + TLS)
  • TLS: Transport Layer Security
  • DNS: Domain Name System
  • MTU: Maximum Transmission Unit
  • TTL: Time To Live
  • SNI: Server Name Indication(TLSでどのドメイン宛かを示す)

1. 最上位の全体像:通信は「配送」と「会話」に分かれる

ネットワークを理解するイメージ。

  • 配送(Transport/Delivery):どこへ・どう届けるか
  • 会話(Conversation/Semantics):届いた後に何を意味するか

OSI層は、ざっくり言うと

  • L3/L4:配送を分解して扱う
  • L7:会話(意味)を扱う
    という役割分担。

L7も通信。ただし“回線の話”ではなく 意味の通信

注釈(混乱点)

Q.「アプリケーション層は通信じゃない気がする」
A. それは自然。L7になると「運ぶ」より「意味(API/操作/契約)」が主役になるから、脳内カテゴリが“通信”から外れやすい。

2. もう一段深い骨格:「点(ノード)」が層ごとに変わる

L3(IP):点=ホスト(機械)

  • 宛先:IPアドレス
  • 問い:「どの機械へ届ける?」

L4(TCP/UDP):点=プロセス(ポート)

  • 宛先:IP:Port
  • 問い:「その機械のどのアプリへ届ける?」

L7(HTTPなど):点=意味の宛先(資源/操作)

  • 宛先:URL/Host/Path/Method など
  • 問い:「そのアプリに何をしてほしい?」

「点」が 機械 → ポート → 意味 と変わる。
だからL7を同じ“通信”として感じにくい。


3. 4プロトコルを「存在理由」で理解する(暗記禁止ゾーン)

ここからは “機能の羅列”ではなく、何の問題を解くためにあるかで押さえる。


3.1 ICMP:配送(IP)の「状態通知・診断」をする

ICMP = Internet Control Message Protocol
IP配送は失敗することがある。そこで 失敗理由や状態を知らせるのがICMP。

  • 到達できない(Destination Unreachable)
  • 経路の途中でTTLが切れた(Time Exceeded → traceroute)
  • MTUが大きすぎて通らない(Fragmentation Needed)

直感:ICMPは「配送の不在票・理由メモ」。

よくある誤解(厚み)

Q.「ICMPってデータ運ぶの?」
A. 運ばない。データ本体の通行を助ける“通知/診断”


3.2 TCP:信頼できる“通信路”を作る

TCP = Transmission Control Protocol
IPの上で「ちゃんと届く」を作る。

  • 再送
  • 順序整列
  • 重複排除
  • フロー制御
  • 輻輳制御

TCPハンドシェイクはどこ?

L4(TCP)。接続の前提(状態/番号)を合わせるために
SYN → SYN/ACK → ACK を行う。

直感:TCPは「受領印付きの宅配便」。握手は「契約開始」。


3.3 UDP:軽く・速く(低オーバーヘッド)を優先する

UDP = User Datagram Protocol
UDPは「やらない」ことで軽い。

  • 接続確立なし(握手なし)
  • 再送なし
  • 順序保証なし
  • 状態管理ほぼなし
  • ヘッダが小さい(UDP 8B)

注釈(混乱点)

Q.「低オーバーヘッドって結局なに?」
A. 余計な制御(握手・ACK・再送・状態管理)が少ない=軽い。
CPU/メモリ/遅延/制御パケットが減る、という意味。

注釈(あなたの混乱点)

Q.「アプリ側で好きな設計=上で信頼性を実装って?」
A. UDPは素の配送なので、必要ならアプリが上に載せられる。
例:シーケンス番号、ACK、再送、重複排除、レート制御…
つまり「TCP相当を目的に合わせて“部分的に”自作できる」。

直感イメージ:UDPは「ハガキ」。必要なら上で“再配達ルール”を自作できる。


3.4 HTTP:意味の会話(注文票)を統一する

HTTP = Hypertext Transfer Protocol
名前はハイパーテキスト由来だが、本質は

アプリ同士が“何をしてほしいか”を統一フォーマットでやり取りする会話規約

  • Method(GET/POST…)
  • URI/Path(対象)
  • Header(条件/メタ)
  • Status(結果)
  • Body(中身:HTML/JSON/画像…何でも)

注釈(混乱点)

Q.「HTTPってHTMLの転送の話?」
A. 起源はそう。でも今は “Web/APIの会話プロトコル”。HTML以外も運ぶ。


4. “ハンドシェイク”の全体像(層をまたぐ概念)

ハンドシェイクは層名ではなく、前提をすり合わせる手順の総称

  • TCPハンドシェイク:L4(接続開始)
  • TLSハンドシェイク:実務上L5〜L6(暗号・証明書・鍵交換)
  • (参考)QUIC/HTTP3:UDP上で接続+TLSを内包

実務の見方:
TCPはOKでもTLSで落ちる、TLSはOKでもHTTPで403…みたいに分解できる。


5. Linuxで検証する:層ごとの最短セット

「エンジニアとして最低限」+「現場で刺さる」だけ。

5.1 DNS(L7)

  • dig +short example.com
  • dig example.com A
  • dig @1.1.1.1 example.com
  • dig +trace example.com

5.2 L3(疎通/経路/MTU)

  • ping -c 5 -n example.com
  • traceroute -T -p 443 example.com(TCPで経路)
  • tracepath example.com(MTUも見やすい)

5.3 L4(ポート)

  • nc -vz example.com 443
  • ss -lntp(待受)
  • ss -antp(状態)

5.4 TLS

  • openssl s_client -connect example.com:443 -servername example.com

5.5 HTTP/HTTPS(最重要)

  • curl -I https://example.com
  • curl -v https://example.com
  • curl -L https://example.com
  • curl --resolve example.com:443:203.0.113.10 https://example.com(DNS無視でIP直叩き)

遅延分解:

curl -o /dev/null -s -w 'dns:%{time_namelookup} connect:%{time_connect} tls:%{time_appconnect} ttfb:%{time_starttransfer} total:%{time_total}\n' https://example.com

6. 最短Runbook:困ったらこの順で潰す

  1. DNS:dig +short
  2. 経路:traceroute -T -p 443
  3. ポート:nc -vz host 443
  4. TLS/HTTP:curl -v
  5. 証明書:openssl s_client

7. 一発で思い出す短文(定着用)

  • IP:ホストへ運ぶ
  • ICMP:運べなかった理由を知らせる
  • TCP:ちゃんと届く道を作る(握手で前提同期)
  • UDP:軽い配送。必要なら上に機能を載せる
  • HTTP:意味の会話(注文票)
  • TLS:会話を安全にする(暗号・証明書の握手)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?