TCP 詳説

Magic Point を作った西田さんが講師でした.
TCP は UDP に並ぶ IP の上位のプロトコル. そのスペックは RFC 793 で基本スペックが,RFC 2581 で輻輳制御アルゴリズム が規定されている.TCP は信頼性の高いデータ転送プロトコルである.

TCP の特徴

非構造化ストリーム

・TCP が扱うデータは構造を持たない.
単なるビット列とみなしブツブツ切って後でつなぐ,データの順番も 気にせずバンバン送って後で並べる.

全二重通信

・通信する両者が同時にデータストリームを送信できる.
あたかも通信する両者の間にパイプがつながった感じ.

コネクション志向

・まずネゴシエーション.
受信能力の把握.最大のウィンドウサイズの通知.
・IP アドレスとポート番号のペアでコネクションの端点を識別.
パケット中のヘッダに書かれる.
・3 way ハンドシェイク.
信頼性が高いといわれる所以.
確立要求 (SYN) と確立応答 (ACK) フラグを交換することでコネクションを 確実に確立する.
        client <----> server
          |              |
          |--- SYN ----->|
          |              |
          | <--SYN/ACK-- |
          |              |
          |---ACK------> |
          |              |
・ハーフクローズ.
コネクションの終了は片方ずつ閉じる

高性能サービス

・シーケンス番号.
パケットデータのバイトストリーム中の位置を示す. パケットの順番を保証. 喪失したパケットの検出.
・再送機能. 確認応答 (ACK) を利用し連続して到着した {最大のシーケンス番号 + 1} を返す. 再送のタイミングは重複する確認応答が一定数以上到着したとき.
・チェックサム機構.
・フロー制御機構.
通信状態に合わせてデータ転送を調節.
相手とネットワークの処理速度にあわせる.
スライドウインドウ方式
ウインドウサイズの大小で速度を調節する. 受信側がウインドウサイズを決める. ネットワークの混み具合はデータを送ってから ACK が帰ってくるまでの 時間で決まる.

TCP の詳細機能

<TCP のタイマ機能>
<ラウンド・トリップ・タイムの計算法>
<持続タイマ>
<キープアライブタイマ>
<遅延確認応答>
<Nagle アルゴリズム>
<TCPのフラグ>

TCP と輻輳制御

<制御アルゴリズム>
<セルフクロッキング>
...

TCP とセキュリティ

<Sequence Number アタック>
<SYN フラグアタック (DoS攻撃)>

これからの技術動向

<ECN (Explicit Conection Notification)>
中継ルータが混み具合を明示する
<Large Initial Window>
RFC 2414
<TCP Vegas>

関係する RFC たち

RFC 793, RFC 813, RFC 1122, RFC 1323, RFC 2414, RFC 2418, RFC 2581, RFC 2582
2000/01/03 小高正嗣(odakker@gfd-dennou.org)
2000/01/07 奥山尚範(okuyama@gfd-dennou.org)