TCPヘッダについてわかりやすく解説

ネットワーク

TCPヘッダはTCPプロトコルを使用し、OSI参照モデルの4層で挿入されるヘッダのことです。

TCPヘッダはデータが相手に確実に届くよう実現させるためのヘッダです。

TCPヘッダの中には様々な要素があり信頼性を保つために制御をしています。

ここではTCPヘッダの要素について詳しく説明していきます。

TCPヘッダの構成

TCPヘッダには送信ポート番号、宛先ポート番号、シーケンス番号、確認応答番号、データオフセット、予約、フラグ、ウィンドウサイズ、チェックサム、緊急ポインタ、オプション、パンディング、データがあります。

それでは、それぞれの要素について詳しく説明していきます。

送信元ポート番号

送信元ポート番号は16ビットで構成されています。

この番号は、通信の開始元である送信元のアプリケーションを特定するために使用されます。

デバイス上で複数のアプリケーションが同時に通信を行う際、それぞれの通信を区別するためにポート番号が指定されます。

また、受信側が送信元ポート番号を使用して元の送信元アプリケーションにデータを返信することができます。

宛先ポート番号

宛先ポート番号も16ビットで構成されています。

この番号は、通信の送信先であるアプリケーションを特定するために使用されます。

送信元ポート番号、宛先ポート番号どちらもhttpならばポート80、httpsならばポート443という風に決まっています。

シーケンス番号

シーケンス番号は32bitで構成されています。

信されたデータの位置を示す番号で、データをいくつかのパケットに分けて送信する際に使用されます。

そして、受信側では受信したパケットをもとの順番に戻すためにシーケンス番号を用います。

確認応答番号

確認応答番号は32bitで構成されています。

確認応答番号では信頼性を確保するために送受信の確認をするために使用する番号です。

例えば送信側から1000までのデータを受信したとすると受け取った側はその次の番号である1001を返します。

ここで1001を送信するのは次にもらうデータは1001からですよということを送信側に通知するためです。

データオフセット

データは4bitで構成されています。

データオフセットはヘッダの長さを表しデータがどこから始まるか判断する部分です。

予約

予約は6bitで構成されています。

この予約は現在使われておらず6bitすべて0で構成されています。

将来的にTCPの役割が少し変更される際にこの6bitが使われる可能性があります。

フラグ

フラグは6bitで構成されています。

フラグは順番にURG、ACK、PSH、RST、SYN、FINの6つで構成され、それぞれ1bitが割り当てられています。

URG:緊急ポインタがオンでこのフラグが1のときは優先的に処理をさせます。

ACK:確認応答番号がオンであることを示します。

PSH:データをバッファに溜めずすぐにデータをアプリケーションに渡します。

RST:通信が異常なときに接続をリセットするために使います。

SYN:コネクションを確立するときに使います。

FIN:コネクションを切断し、通信を終了することを示します。

ウィンドウサイズ

ウィンドウサイズはフロー制御をするときに用いられます。

受信側でデータを受信するときに受信機のバッファがあふれデータを失わないようにするために用います。

まず、受信機側が一度に受けることのできるウィンドウサイズを送信側に送ります。

そして送信側では送られてきたウィンドウサイズをもとにデータを送信するかしないかを決定します。

チェックサム

チェックサムは送信されてきたデータが受信機にたどり着くまでにデータが変わっているかどうか確認するために使用されています。

エラーチェックは受信データを計算しデータと一致しない場合エラーと判断されます。

緊急ポインタ

緊急ポインタはフラグのURGとともに使われていて緊急的なデータを優先的に処理させるために使用されています。

URGのみでいいと考えると思いますが、URGのみではデータのどこからどこが緊急かどうか判断することができません。

そのため、緊急ポインタを用いて位置と範囲を指定することができます。

オプション

オプションにはこれまでのヘッダでカバーすることのできなかった場所に追加の機能を提供します。

オプションにはタイプ、長さ、データで構成されています。

タイプ:オプションの種類を表します。

長さ:オプションの長さを表します。オプションの長さはデータ部が可変長のためこのオプションが必要となります。

データ:データは可変長で追加の要素の具体的な内容を表します。

パンディング

パンディングではオプションが可変長なため32bitの構成が崩れてしまうのを防ぐために4bitの可変長で32bitとなるように調節します。

32bitにすることでデータを効率的にアクセス、処理することができます。

データ

データでは5層以上のデータ(httpヘッダなど)と送信したいデータの内容が入っています。

これがTCPヘッダの完全版です。

これらの機能によりデータを確実に相手に届けることができます。

このTCPヘッダを次の3層(ネットワーク層)に渡され、そこでIPヘッダを付加されます。

コメント

タイトルとURLをコピーしました