1
TCP
セグメントヘッダ
笹栗茂
02/7/23
牧之内研究室「
UNIX
とネットワー
ク基礎勉強会」
W
eb
ページ
http://www
.db.is.kyushu-u.ac
.jp/r
inkou/uni
xnet/
2
TCP
セグメントヘッダのフォーマット
16
0
31
8
24
4
12
20
28
送信元ポート
送信先ポート
シーケンス番号
応答確認番号
ヘッダ長
予約
F
I
N
S
Y
N
R
S
T
P
S
H
A
C
K
U
R
G
ウインドウ
チェックサム
緊急ポインタ
オプション
パディング
TCP
データ
3
各データ項目の機能(1)
送信元ポート番号
送信元のポート番号
宛先ポート番号
送信先のポート番号
送信シーケンス番号
(
SEQ
)
送信したデータの位置を表す
応答確認番号
(
ACK
)
次に相手から
受信すべきデータ
のシーケンス番号
ヘッダ長
TCP
ヘッダの長さを表す
リザーブビット
将来の拡張性のため確保され
ている領域
4
各データ項目の機能(2)
コードビット
各ビットをフラグ
として使用、左から順
に
URG,ACK,PSH
,RST
,SYN,FIN
ウインドウサイズ
受信側が現在受信可能なデータサイ
ズを送信側に通知するために使用
チェックサム
誤り検出のために使用
緊急ポインタ
緊急に処理すべきデータの
位置を示す
オプション
TCP
による
機能や性能を向上させるた
めの情報
パディング
32ビットの倍数になるように0で調整
5
セグメントヘッダの各値の説明
(1)
•
送信元ポート
(16
ビット
)
–
TCP
データの送信元プロセスのポート番号
•
宛先ポート
(16
ビット
)
–
TCP
データ
の宛先プロセスのポート番号
•
ポート番号
–
W
ell-known
–
Registered
–
Private
6
セグメントヘッダの各値の説明
(2)
•
シーケンス番号
(32
ビット
)
–
送信元が送る全データのうち、このデータが何番
目のセグメントであるかを表す
•
応答確認番号
(32
ビット
)
–
次に受信するとき送信先が使うであろう送信用の
シーケンス番号
–
これによりパケットの流れや再送
確認などが行わ
れる
7
100
0
200
250
TCP
により送信するデータ
送信側
受信側
SEQ=0
ACK=100
SEQ=100
ACK=200
SEQ=200
ACK=250
100
バイト
受信
100
バイト
受信
50
バイト
受信
8
セグメントヘッダの各値の説明
(3)
•
ヘッダ長(
4
ビット)
–
TCP
ヘッダの長さを表す
–
単位は
4
オクテット
–
オプションを含まない場合、この値は5
(
5
×
4=20
オクテット
=16
0
ビット
)
9
セグメントヘッダの各値の説明
(
4
)
•
予約
(6
ビット
)
–
将来のために予約されている領域
–
すべて
0
にしておく
•
コードビット
(
各
1
ビット
)
–
URG(
緊急フラグ
)
•
緊急に処理すべきデー
タが含まれているかの情報
–
ACK(
応答確認フラグ
)
•
応答確認フィールドが有効であることを示す
10
セグメントヘッダの各値の説明
(
5
)
–
PSH(
プッシュ
フラグ
)
•
相手ホストへデータを送るときに指定可能
•
このフラグの立ったセグメントを受け取った受信側
はアプリケーションプロセスに直ちにデータを渡す
–
RST
(リセットフラグ)
•
コネクションを強制切断するときに指定
–
SYN
(シンクロナイズフラグ
)
•
コネクション接続時に指定
–
FIN
(フィンフラグ)
•
コネクションを終了する場合に指定
11
セグメントヘッダの各値の説明
(6)
•
ウインドウ(
16
ビット)
–
相手ホストへ自分がどれだけ許容量があるか
を通
知
–
受け入れ可能な最大セグメン
トサイズ(
オクテット)
送信側
受信側
W
indow=100
100
バイト
受け入れ可能
100
バイト
送信しよう
W
indow=0
のときは送信側は送信を一時停止
12
セグメントヘッダの各値の説明
(7)
•
チェックサム(
16
ビット)
–
ヘッダとデータの両方を対象にする
–
擬似ヘッダを、セグメントの前に置
いて計算
–
16
ビット単位で
1
の補数和を計算し、この値の
1
の
補数をチェックサムとして格納
0
31
16
8
送信元アドレス
宛先アドレス
プロトコル
0
TCP
セグメント長
擬似ヘッダ
13
セグメントヘッダの各値の説明
(8)
•
緊急ポインタ(
16
ビット)
–
このセグメント中の緊急データの位置
を表す
–
シーケンス番号からのオフセット値(単位
:
オクテット)
•
オプション(可変)
–
TCP
ヘッダは複数のオプションをサポート可
能
–
現在定義されているオプションは
3
種類
•
有効なオプションは最大セグメントヘッダオプシ
ョンのみ
00000010 00000100
最大セグメントサイズ
Kind=2
長さ
=4
0
8
16
31
14
セグメントヘッダの各値の説明
(9)
•
パディング(可変)
–
セグメントヘッダサイズを
32
ビットの
倍数になるよう
に調整
–
値はすべて
0