09. networking: パケットはどう届くのか
Webサーバーを動かすなら、networkingの理解は必須です。
ここでは「curlがなぜ返るのか」をLinux内部の流れで見ます。
基本の流れ
1. アプリがsocketを作る
2. kernelのnetwork stackを通る
3. NICドライバからパケット送信
4. 受信側で逆順に処理
図解テキスト
nginx process
-> socket()
-> bind(0.0.0.0:80)
-> listen()
-> accept()
client packet
-> NIC
-> kernel net stack (IP/TCP)
-> socket queue
-> nginx worker
最低限おさえる用語
- interface: eth0, ens5 など
- routing: どの経路で送るか
- port: アプリ識別子 (80, 443, 22)
- state: ESTABLISHED, LISTEN など
手を動かす
ip addr
ip route
ss -ltnp | head -n 30
curl -I http://127.0.0.1
Docker/AWSで効くポイント
- Dockerはnetwork namespaceやvethを使う
- AWSではsecurity groupとOS側のlisten状態を両方確認する
- 「疎通しない」は経路、ポート、プロセスの3点で切り分ける
つまり何なのか
networkingは魔法ではなく、kernelが管理するデータ配送システムです。
構造を知れば、接続障害を順序立てて調査できます。
今回理解できたこと
- アプリ通信はsocket APIとkernel stackで成立する
- 疎通調査はinterface、route、listenの確認が基本
- nginx運用前にnetwork基礎を押さえる価値が高い
コメントを残す