ネットワーク用語 > TCPヘッダ
TCPヘッダ †
TCPヘッダ = Transmission Control Protocol header
http://www.atmarkit.co.jp/fwin2k/network/baswinlan015/baswinlan015_02.html
TCPヘッダの構造
TCPでは信頼性の高い通信を実現するために、受信確認やスライディング・ウィンドウ制御、そしてさまざまな付加機能などを用意している。
そのためUDPよりも複雑なヘッダ情報を持っている。「チェックサム」はIPヘッダなどと同様に、1の補数で計算する。
Code Bit
TCPヘッダは、20バイトの大きさになります。
フィールド | 説明 |
送信元ポート番号 (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 ・・・ finish TCP接続を終了させるためセットされるフラグ。 双方からFINが送られるとTCP接続が終了する。 |
ウィンドウサイズ (16ビット) |
受信側のウィンドウサイズを相手に伝えるために利用されるフィールド。 単位はバイトで、最大65535バイトになる。 0は、データを受信することができないことを表す。 |
チェックサム (16ビット) |
TCPパケットの整合性を検査するための検査用データが入るフィールド。 |
緊急ポインタ (16ビット) |
URGフラグが1の場合のみ有効。 緊急データの場所を表す。 |
オプション | TCP接続の特性を設定するために利用される可変長のフィールド。 MSSのやり取りなどに利用される。 32ビットの倍数になるように、必要に応じて最後にパディング(0)が埋められる。 |
データ | TCPのデータ部。 TCP接続がタイムアウトして切断されないようにデータを含まないTCPヘッダだけのパケットを送る場合もある。 |
- URG (緊急フラグ) 緊急ポインターフィールドを使うよう指示
- ACK (応答確認フラグ) セグメントが応答確認を持っている
- PSH (転送強制フラグ) 受信可能になったらすぐ送信
- RST (リセットフラグ) 正しくないパケットを受け取ったときの通信リセットの指示
- SYN (同期フラグ) 先頭シーケンス番号の転送
- FIN (転送終了フラグ) 送信終了。受信は可能
リンク †
TCPヘッダ フォーマット
http://www3.ocn.ne.jp/~tkatu/TCPHeader.html