TCPヘッダ 【TCP header】
概要
TCPヘッダ(TCP header)とは、TCPセグメントの先頭部分にある、制御情報などを一定の形式で記述した領域。この後ろに送りたいデータ本体(ペイロード)を加えて、一つのTCPセグメントとなる。TCP(Transmission Control Protocol)はIP(Internet Protocol)と併用されるトランスポート層のプロトコル(通信手順)で、HTTPやSMTPなど上位層のデータを高い確実性で相手方に送り届ける役割を担う。
TCPでのデータの伝送単位を「TCPセグメント」(TCP segment)あるいは「TCPパケット」と呼び、その先頭にある制御情報が記された部分のことをTCPヘッダという。内容が固定されている部分が先頭から20バイト、オプションが4バイト単位の可変長となっている。
先頭20バイト(160ビット)は順に、送信元ポート番号(16ビット)、宛先ポート番号(16ビット)、シーケンス番号(32ビット)、確認応答番号(32ビット)、データオフセット(4ビット/可変長部分を含むヘッダのサイズ)、予約領域(6ビット/通常は全ビット0)、コントロールフラグ(6ビット)、ウィンドウサイズ(16ビット)、チェックサム(16ビット)、緊急ポインタ(16ビット)となっている。
このうち、コントロールフラグの各ビットの値によってパケットの種類や通信状態などをが通知される。6ビットのフラグは先頭から順にURG(Urgent)、ACK(Acknowledgement)、PSH(Push)、RST(Reset)、SYN(Synchronize)、FIN(Finish)と呼ばれ、それぞれに意味や役割が規定されている。
オプション領域に記載できる情報はいくつか定められており、ウィンドウサイズの拡張やMSS(最大セグメントサイズ)の指定、SACK(Selective ACK)の通知、送信時刻(タイムスタンプ)の通知などに用いられる。オプションの長さは可変長だが、長さが32ビットの整数倍になるように末尾が「0」で埋められる(ゼロパディング)。