1
TCP
のフロー制御
龍
浩志
2
TCP
でのデータの送受信
一度に受信できるデータの量は限ら
れている
受信したデータはすぐに削除できるわけで
は
ない
データは受信バッファに蓄積されていく
一方がデータを送り続けると
‥
3
フロー制御
受け取り可能なデータ量を相手に伝える
受信したデータの応答で、受け入れ準備が
できているオ
クテット
数を示す
TCP
ヘッダのフォーマット
シーケンス番号:送信データの位置情報
応答確認番号
(Ack):
次に受信したいデータの位置
ウィンドウ:受信可能なデータのサイズ
送信先ポー
ト
あて先ポート
シーケンス
番号
応答確認番号
データ
オフセット
予約
(未使用)
ウィ
ンド
ウ
チェックサ
ム
緊急ポインタ
オプシ
ョン
パディング
TC
P
デ
ータ
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
になると
送信側はパケットの送信を停止
受信側はパケットの処理が進み
、バッファに空き
ができたらウィンドウを通知
小さいデータを繰り返し送ったのでは
効率が悪い
「無能ウィンドウ症候
群」
受け取りバッファが適当なサイズになるま
で
受信可能であること
を知らせない