TCPコネクション管理
7月24日 峯 肇史
TCPの制御機能
信頼性のある通信を提供するための
制御機能
○再送制御
○ シーケンス番号
○ コネクション管理
○ ウィンドウ制御
○ フロー制御
○輻輳制御
データの喪失、重複、順序の乱れに対応しなければならない
再送制御
TCP通信では、データを送信後、受信側か
らの確認応答を待つ
確認応答が一定時間内にこなければもう
一度同じパケットを再送
送信したデータの喪失、確認応答のパケットの喪失
何度送信しても確認応答が届かなければ、通信を異常終了
シーケンス番号、ACK番号
再送制御、確認応答処理ではすべてシー
ケンス番号、ACK(確認応答)番号によって
処理
受信側はシーケンス番号を調べ、この値にオクテット単位
で値を加算してそれをACK番号として返す
これを繰り返し信頼性のある通信を提供
コネクション管理
コネクション型通信
TCPでは、データ転送に先立ち、ホスト間で通信の
開始を相互に確認し合い、双方向のコネクションを
確立(コネクション確立)
データ転送
コネクション終了処理
3ウェイハンドシェイク
フラグを用いた状態制御
SYN(Synchronize Flag)
ACK(Acknowledgement Flag)
FIN(Fin Flag)
コネクション確立要求
確認応答番号が有効
コネクション終了を要求
3ウェイハンドシェイク
①TCP Aは最初のシーケンス番号(10とする)を選び、TCPパケットを
Bへ送り、コネクション確立要求
②TCP Bは受け取ったパケットに対する確認応答(ACK番号=シーケ
ンス番号+1)を返すとともに、シーケンス番号(100とする)を選び、
コネクション確立要求
③TCP Aは受け取ったパケットに対する確認応答(ACK番号=シーケ
ンス番号+1)を返す。
SYN=1 ACK=0 シーケンス番号=10
SYN=1 ACK=1 シーケンス番号=100 ACK番号=11
TCP A
TCP A
TCP A
TCP B
TCP B
TCP B
SYN=0 ACK=1 シーケンス番号=11 ACK番号=101
データ転送
ACK番号はシーケンス番号+データ長
TCP A TCP B
シーケンス番号=11 ACK番号=101 データ長=50
シーケンス番号=101 ACK番号=141
シーケンス番号=61 ACK番号=101 データ長=80
シーケンス番号=101 ACK番号=61
重複パケットの破棄
TCP A TCP B
シーケンス番号=11 ACK番号=101 データ長=50
シーケンス番号=101 ACK番号=61
シーケンス番号=11 ACK番号=101 データ長=50
シーケンス番号=101 ACK番号=61
破棄
破棄
コネクション終了処理
双方でフラグFINを設定したパケットを送付し合う
FIN=1 ACK=1
TCP A TCP B
ACK=1
FIN=1 ACK=1
TCP A TCP B
ACK=1
単方向コネクション
TCP B
TCP B
TCP A
TCP A
TCPの状態遷移
コネクションの管理を行うためTCPは状態を保持
LISTEN(聴取)
SYN RECV(SYN受信済)
ESTABLISHED(確立済)
コネクション要求待ち
SYNを受信
SYN,ACKを返信
ACK待ち
ACKを受信
FIN WAIT1
FIN WAIT2
TIME WAIT
FIN送信
ACK待ち
ACKを受信
相手からの
FIN待ち
FINを受信
ACKを返信
CLOSED(閉鎖)
データ転送が行える状態
時間待機
再送制御とフラグの関係
データを送信したときに,それに対応する
ACKフラグが立ったデータが送られてこな
ければ再送する
シーケンス番号とフラグの関係
最初のコネクション確立要求のとき,つまり
SYNフラグが立っているときシーケンス番
号は初期化され,その後の通信ではそれに
対応した値が使用される
コネクション管理とフラグの関係
コネクション確立するとき
SYNフラグを立てる
データを受け取ったことを知らせるとき
ACKフラグを立てる
コネクションを終了するとき
FINフラグを立てる