Skip to content.

kagome.lab.tkikuchi.net

Sections
Personal tools
You are here: Home » Members » tkikuchi's Home » 授業 » 情報ネットワーク論特講 » Transmission Control Protocol
Views

Transmission Control Protocol

Document Actions

TCP

  • Transmission Control Protocol
  • コネクション指向(Connection Oriented)
  • 信頼性 (Reliable)
  • バイト・ストリーム (Byte Stream)

確認応答

  • セグメント分割
  • チェックサムによる確認
  • 確認応答が無ければ再送(タイマー)

信頼性・効率の向上

  • フラグメント再構成
  • 重複データ破棄
  • フロー制御(バッファサイズ広告)

TCP パケット

  • <---- IP データグラム ---->
    <---- TCP セグメント ---->
    IP
    ヘッダ
    TCP
    ヘッダ
    TCP データ
    20 バイト 20 バイト

TCP ヘッダ

  • 0123
    0123456789 0123456789 0123456789 01
    16 bit 発信元ポート番号 16 bit 宛先ポート番号
    32 bit シーケンス番号
    32 bit 確認応答番号
    4 bit
    ヘッダ長
    予約ずみ
    (6bit)
    U
    R
    G
    A
    C
    K
    P
    S
    H
    R
    S
    T
    S
    Y
    N
    F
    I
    N
    16 bit ウィンドウサイズ
    16 bit TCP チェックサム 16 bit 緊急ポインタ
    オプション(もしあれば)
    :
    データ
    :

フラグ

  • URG (緊急)
  • ACK (確認)
  • PSH (プッシュ)
  • RST (リセット)
  • SYN (同期)
  • FIN (終了)

コネクションの確立と終了

コネクションの確立

  1. クライアントは、接続したいサーバーのポート番号とクライアントの初期シーケンス番号 (普通クロックから作成される 32bit unsigned int) を指定した SYN セグメントを送る。
  2. サーバーは、サーバーの初期シーケンス番号を含む SYN セグメントを送る。この際 クライアントのシーケンス番号+1のACKをつける。
  3. クライアントはサーバーから送られてきた SYN に対して、サーバーのシーケンス番号 +1 のACKで確認応答を返す。

コネクション終了プロトコル

  1. 片方(普通はクライアント)から FIN を送る。
  2. もう一方(普通はサーバー)から FINに対する ACK を送る。 この段階で「片方」はデータの送信を終了したことになる。しかし、TCP は上位のアプリケーション層に対して「全二重」通信を提供しているので、必ずしも「もう一方」からのデータ送信が終了したわけではない。この状態を ハーフ・クローズという。
  3. 「もう一方」から FIN を送る。
  4. 「片方」から ack を送る。

TCP 状態ダイアグラム

インタラクティブ・データフロー

  • リモートホストへのログイン
  • 1 文字 = 1 パケット
  • 遅延 ACK
  • Nagle アルゴリズム
    • 遠いホストへはパケットを集積(タイピングの早い人むけ)

バルク・データフロー

  • ファイル転送など
  • 基本:セグメントごとに ACK
    • ただし:ウィンドウサイズまでは ACK 無しで送ってよい
  • 受け手が速い:ACK をひとつおき
    • 次の ACK が来ていれば先へ進んでよい
  • 受け手が遅い:ウィンドウサイズを 0 に。(送信 stop)

輻輳

  • Congestion
  • 途中に低速回線
    • 送り手も受け手も余裕
    • パケット落ちが発生
  • congestion window (スロースタート)
    • 1 パケットでスタート
    • Ack が返ってきたら 2倍に
    • エラーになったら戻す

TCP のスループット

  • 最大スループット
  • ウィンドウサイズ / 遅延時間 (RTT)
  • 65536 byte / 100 ms -> 5.2 Mbps
  • 帯域幅遅延積
    • 最適ウインドウサイズ
Created by tkikuchi
Last modified 2006-05-22 10:21
 

Powered by Plone

This site conforms to the following standards: