フィールド |
説明 |
送信元ポート番号
(16ビット) |
送信元のアプリケーションを識別するための番号
TCPは、UDPの場合と違い、送信元ポート番号を0にできない。
1〜65535まで利用できる。 |
宛先ポート番号
(16ビット) |
宛先のアプリケーションを識別するための番号
1〜65535まで利用できる。
※0は予約済み |
シーケンス番号
(32ビット) |
送信するデータに、順序を付けるための番号。
送信するデータ1バイトごとにシーケンス番号を1つずつ増やす。
232を超えるとまた同じ番号を繰り返す。 |
確認応答番号
(32ビット) |
受信したデータに対して、どこまで受信できたのかをバイト位置で表すフィールド。
受信が完了したデータ位置のシーケンス番号+1を返す。
ACKフラグがONの場合にのみ、ACK番号フィールドを有効とする。 |
ヘッダ長 (4ビット) |
TCPデータが始まる位置を表すフィールド。TCPヘッダの直後にデータ部が続くため、TCPヘッダのサイズと考えてもよい。 |
URG
(1ビット) |
URG ・・・ urgent:緊急
緊急データが含まれていることを示すフラグ。
デフォルト値は0、1でONになる。
あまり使用されることはない。 |
ACK (1ビット) |
ACK ・・・ acknowledge
有効なACK番号がTCPヘッダに含まれていることを示すフラグ。
TCPの3ウェイハンドシェイク時の一番最初を除き、他の全てのTCPパケットは、ACKのフラグがONになっている。 |
PSH (1ビット) |
PSH ・・・ push
受信したデータをすぐにアプリケーションに引き渡すように要求するためのフラグ。
バッファリングを行うと応答性が損なわれてしまう可能性があるので、Telnetでは、このフラグをONにしている。 |
RST (1ビット) |
RST ・・・ reset
TCP接続を中断、拒否したい場合にセットされるフラグ。
RSTフラグをONにしたTCPパケットを送信することで、現在のTCP接続を強制終了することができる。 |
SYN (1ビット) |
SYN ・・・ synchronize
TCPの3ウェイハンドシェイク時のオープン処理の開始に双方のそれぞれがSYNフラグがONにして、ACK番号を同期させる。以降のパケットにはセットされない。 |
FIN (1ビット) |
FIN ・・・ finis
TCP接続を終了させるためセットされるフラグ。
双方からFINが送られるとTCP接続が終了する。 |
ウィンドウサイズ
(16ビット) |
受信側のウィンドウサイズを相手に伝えるために利用されるフィールド。
単位はバイトで、最大65535バイトになる。
0は、データを受信することができないことを表す。 |
チェックサム
(16ビット) |
TCPパケットの整合性を検査するための検査用データが入るフィールド。 |
緊急ポインタ
(16ビット) |
URGフラグが1の場合のみ有効。
緊急データの場所を表す。 |
オプション |
TCP接続の特性を設定するために利用される可変長のフィールド。
MSSのやり取りなどに利用される。
32ビットの倍数になるように、必要に応じて最後にパディング(0)が埋められる。 |
データ |
TCPのデータ部。
TCP接続がタイムアウトして切断されないようにデータを含まないTCPヘッダだけのパケットを送る場合もある。 |