トランスポート層とは
トランスポート層
トランスポート層とは、TCP/IPモデルの第4層に当たり、アプリケーションに応じた通信制御を行います。第3階層のネットワーク層(IP)が、目的のノードにデータを送り届けるだけですが、トランスポート層では、アプリケーションに応じた通信制御を行います。
トランスポート層では、アプリケーションデータにトランスポートヘッダを付けてネットワーク層に渡します。尚、このデータの単位はセグメントと呼ばれ、ネットワーク層ではIPヘッダを付けてパケットと呼ばれる単位となります。
トランスポート層のプロトコルは、TCP(Transmission Control Protocol)とUDP(User Datagram Protocol)の2つです。TCPには信頼性、UDPには即時性(リアルタイム性)という特徴があり、アプリケーションの特性により使い分けられます。
TCPとUDPの特徴をまとめると以下になります。
項目 | TCP | UDP |
通信タイプ | コネクション型 | コネクションレス型 |
処理負荷 | 高い | 低い |
信頼性 | 高い | 低い |
即時性 | 遅い | 早い |
用途 | Web通信、メール、ファイル転送など | 音声通話、動画配信、名前解決、DHCPなど |
TCP
TCPは、Webブラウザやメール、ファイル転送など信頼性が求められるアプリケーションに使用されます。TCPではデータを送る前に仮想的な通信路(コネクション)を作り、その中でデータをやり取りします。
セグメント構成
TCPのセグメント構成は以下になります。
各フィールドの役割りは以下になります。
名称 | サイズ | 機能 |
送信元ポート | 2byte | サービスを要求する側(クライアント)のランダムポート |
宛先ポート | 2byte | サービスを提供する側(サーバ)のポート、サービスに応じた番号がRFCで定められている |
シーケンス番号 | 4byte | 送信したデータの順序を示す、前回の自分のシーケンス番号にデータサイズを加えた値、初期値はランダムな値 |
確認応答番号 | 4byte | 受信側が送信側から来ることを期待する次のバイトの番号、相手から受信したシーケンス番号にデータサイズを加えた値 |
データオフセット | 4bit | TCPヘッダのサイズ |
コントロールフラグ | 1byte | URG、ACK、PSH、RST、SYN、FINの6つのビットで構成 |
ウィンドウサイズ | 2byte | 受信側が一度に受信することができるデータ量 |
チェックサム | 2byte | TCPヘッダとデータ部分のエラーチェックのための値 |
緊急データポインタ | 2byte | コントロールフラグのURGの値が 1 である場合にのみ使用されるフィールド、緊急データの開始位置を示す情報が入る |
データ | - | アプリケーションデータ |
コントロールフラグの各ビットの説明は以下になります。
ビット | 名称 | 内容 |
URG | 緊急フラグ | 「1」の場合、緊急を要するデータであることを示す |
ACK | 確認応答フラグ | 「1」の場合、確認応答時間フィールドが有効であることを示す |
PSH | プッシュフラグ | 「1」の場合、TCPで受信したデータを上位のアプリケーション層にすぐに渡す必要がある 「0」の場合、受信バッファにバッファリングできる |
RST | リセットフラグ | 「1」の場合、コネクションが強制的に切断される |
SYN | 同期フラグ | コネクション確立時に「1」が設定される |
FIN | 送信終了フラグ | 「1」の場合、送信するデータがないことを示す、コネクションを切断するときに利用する |
コネクション確立手順
TCPでは、通信を始める前にコネクションの確立を行います。このプロセスを、3ウェイハンドシェイクと呼ばれています。
項 | フラグ等 | 内容 |
① | SYN=1、シーケンス番号=a ACK=0、確認応答番号=0 |
クライアントからサーバへ、コネクションの確立要求 |
② | SYN=1、シーケンス番号=b ACK=1、確認応答番号=a+1 |
サーバからクライアントへ、確認応答とコネクションの確立要求 |
③ | SYN=0、シーケンス番号=a+1 ACK=1、確認応答番号=b+1 |
クライアントからサーバへ、確認応答 |
コネクション切断手順
通信終了時も、手順を踏んで双方が終了を確認してからコネクションが切断されます。
項 | フラグ | 内 |
① | SYN=1、FIN=1 | クライアントからサーバへ、コネクション切断要求 |
② | SYN=1、FIN=0 | サーバからクライアントへ、切断要求に対する確認応答 |
③ | SYN=1、FIN=1 | サーバからクライアントへ、コネクション切断要求 |
④ | SYN=1、FIN=0 | クライアントからサーバへ、切断要求に対する確認応答 |
UDP
UDPは、音声通話や動画配信、名前解決やDHCPなど、即時性が求められるアプリケーションに使用されます。余計な手順を省いているため即時性が上がりますが、反面送りっぱなしのため信頼性はありません。
セグメント構成
UDPのセグメント構成は以下になります。
各フィールドの役割りは以下になります。
名称 | サイズ | 機能 |
送信元ポート | 2byte | サービスを要求する側(クライアント)のランダムポート |
宛先ポート | 2byte | サービスを提供する側(サーバ)のポート、サービスに応じた番号がRFCで定められている |
パケット長 | 2byte | UDPヘッダとデータ部分を合わせたサイズ |
チェックサム | 2byte | TCPヘッダとデータ部分のエラーチェックのための値 |
データ | - | アプリケーションデータ |
通信手順
UDPは、ポート番号によるポート番号によるプロセスの認識とチェックサムによる誤り制御しか行いません。コネクションの確立は行いませんが、その分、通信手順がシンプルでオーバヘッドが少ない通信を提供します。