1
TCPのフロー制御
浩志
2
TCPでのデータの送受信
一度に受信できるデータの量は限られている
受信したデータはすぐに削除できるわけで
ない
データは受信バッファに蓄積されていく
一方がデータを送り続けると
3
フロー制御
受け取り可能なデータ量を相手に伝える
受信したデータの応答で、受け入れ準備ができているオクテット
数を示す
TCPヘッダのフォーマット
シーケンス番号:送信データの位置情報
応答確認番号(Ack):次に受信したいデータの位置
ウィンドウ:受信可能なデータのサイズ
送信先ポー あて先ポート
シーケンス番号
応答確認番号
データ
オフセット
予約
(未使用) ウィンド
チェックサ 緊急ポインタ
オプション パディング
TCPータ
A
C
K
P
S
H
R
S
T
S
Y
N
F
I
N
U
R
G
送信先ポート あて先ポート
シーケンス番号
応答確認番号
データ
オフセット
予約
(未使用) ウィンドウ
チェックサム 緊急ポインタ
オプション パディング
TCPデータ
A
C
K
P
S
H
R
S
T
S
Y
N
F
I
N
U
R
G
ヘッダ部
4
ホストA→Bへのデータ送信(1
シーケンス番号 101
応答確認番号 なし
データ 100
ウィンドウ400
ホスト Aホスト B
ホストA,Bの初期受信バッファのサイズを400とする
200
300
400
100
バッファ
200
300
400
100
バッファ
5
ホストA→Bへのデータ送信(2
シーケンス番号 なし
応答確認番号 201
データ 0
ウィンドウ300
ホスト Aホスト B
200
300
400
100
バッファ
200
300
400
100
バッファ
6
ホストA→Bへのデータ送信(3
シーケンス番号 201
応答確認番号 なし
データ100
ウィンドウ400
ホスト Aホスト B
200
300
400
100
バッファ
200
300
400
100
バッファ
7
ホストA→Bへのデータ送信(4
シーケンス番号 301
応答確認番号 なし
データ100
ウィンドウ400
ホスト Aホスト B
200
300
400
100
バッファ
200
300
400
100
バッファ
8
ホストA→Bへのデータ送信(5
シーケンス番号 なし
応答確認番号 401
データ 0
ウィンドウ100
ホスト Aホスト B
200
300
400
100
バッファ
200
300
400
100
バッファ
9
受け取りバッファが0になると
送信側はパケットの送信を停止
受信側はパケットの処理が進み、バッファに空き
ができたらウィンドウを通知
小さいデータを繰り返し送ったのでは
効率が悪い
「無能ウィンドウ症候群」
受け取りバッファが適当なサイズになるま
受信可能であることを知らせない