TCP の状態遷移を読む
Pro会員限定上級約38分6レッスン
「つながらない」には種類があります。nc -zv で refused・timed out・No route to host を見分け、3ウェイハンドシェイクのどこで止まっているかを ss -o と conntrack で確かめます。CLOSE-WAIT を溜め込むプロセスを突き止め、ss -i で RTT と再送から通信の質を読みます。
対象者: 「つながらない」「遅い」の原因を TCP の層で説明したい方 / ss の状態を見ても意味が分からなかった方
前提知識: Linux 上級「ルーティングと接続状態の分析」修了程度 / VLAN とボンディングを読む 修了程度
この教材を終えると、できるようになること
- nc -zv の結果(succeeded / refused / timed out / No route to host)から、TCP のどの段階で何が起きたかを説明できるようになる。
- 3ウェイハンドシェイクの流れを説明し、ss -o のタイマー表示から SYN の再送回数と次の再送までの時間を読み取れるようになる。
- conntrack -L の出力から、接続の状態・残り時間・往路と復路のタプル・[UNREPLIED] を読み取り、ss の結果と結びつけて説明できるようになる。
- TCP の切断の状態遷移を説明し、CLOSE-WAIT を溜め込んでいるプロセスを ss と ps で特定できるようになる。TIME-WAIT との違いを説明できるようになる。
- ss -i の内部情報から RTT・再送・輻輳ウィンドウ・送信レートを読み取り、通信の速度を決めている要因を説明できるようになる。
修了後の姿: プロトコルの中身とネットワーク設計を理解し、複雑な障害の根本原因の特定から再発防止の設計まで任せられるエンジニアへ。
Chapter 1接続のどこで止まっているかを読む
ハンドシェイク・切断・データ転送の各段階を、nc・ss・conntrack の出力から読み取ります。
- つながらないを4種類に見分ける(nc -zv)失敗のメッセージが、相手の状態とパケットの行方を教えてくれる約7分(有料会員限定)
- SYN-SENT は相手が黙っている証拠(ss -o)ハンドシェイクの1段目で止まっている接続を、タイマーと再送回数で読む約6分(有料会員限定)
- 接続追跡で同じ事実を見る(conntrack)ソケットとは別の場所に、往復のパケットの記録が残っている約6分(有料会員限定)
- CLOSE-WAIT を溜めているのは誰か相手が閉じたのに閉じていない。原因はネットワークではなくアプリにある約7分(有料会員限定)
- ss -i で RTT と再送を読む確立した接続の「質」を、カーネルが持っている数字で読む約7分(有料会員限定)
Chapter 2確認クイズ
TCP の状態遷移と接続の診断の理解度を確認します。