はじめに
コンピュータネットワークの基盤を支える重要な概念の1つにOSI参照モデルがあります。
このモデルは、通信プロトコルを7つの階層に分け、各階層が特定の役割を担っています。
今回はその中から、トランスポート層に着目していきます。
トランスポート層とは?
トランスポート層はOSI参照モデルの4番目の層に位置し、データのエンドツーエンドの通信を確実にする役割を果たします。
具体的には以下のような機能です。
1.データ転送の信頼性確保
エラー検出と修正、データの再送、順序制御などを通じて、データが正確に届くようにします。
2.フロー制御
送信側と受信側のデータ送信速度を調整し、バッファローオーバフローを防ぎます。
※バッファオーバーフロー
プログラムがメモリの一時記憶領域(バッファ)に対して、許容量を超えらデータを書き込むことで発生するエラー。
3.多重化
複数のアプリケーションが同時に通信を行える様に、ポート番号を使用して通信路を区別する。
4.コネクション管理
コネクションの確立、維持、終了を行います。
これらの機能により、トランスポート層は通信の信頼性と効率を高める重要な役割を担っています。
トランスポート層のプロトコル
トランスポート層で広く使用されているプロトコルは以下の2つです。
TCP(Transmission Control Protocol)
TCPは、信頼性の高いデータ転送を提供するプロトコルで、エラー検出と修正、データの再送、順序制御などを行います。
コネクションの確立と終了
TCPは3ウェイハンドシェイクという手続きを通じてコネクションを確立し、通信が終わるときは4ウェイハンドシェイクでコネクションを終了します。
エラー検出と修正
データが損失したり壊れたりした場合、送信側に再送を要求します。
順序制御
送信したデータパケットが順序通りになるように並び替えて受信します。
フロー制御
受信側のバッファが溢れない様に、送信速度を調整します。
これらの機能により、TCPは信頼性の高い通信を実現し、電子メール、ファイル転送など多くのアプリケーションで使用されています。
TCPについてさらに詳しく知りたい方はこちら。
UDP(User Datagram Protocol)
UDPは、TCPよりもシンプルで信頼性の保証は少ないですが、低遅延で高速なデータ転送を提供します。
コネクションレス
コネクションを確立せずデータを送信します。
信頼性の保証なし
エラー検出や再送、順序制御などは行いません。
高速性
データのオーバーヘッドが少なく、高速にデータを送信できます。
これらの機能により、UDPはリアルタイム性が重要なアプリケーション(例:オンラインゲーム、Voice over IP、ビデオストリーミング)で広く用いられています。
UDPについてさらに詳しく知りたい方はこちら。
TCPとUDPの選択
どちらのプロトコルを選択するかは、アプリケーションの要件に依存します。
TCPを選ぶ場合
・データの完全性が重要な場合(例:電子メール、ファイル転送等)
・再送とエラー修正が必要な場合
・データの順序が重要な場合
UDPを選ぶ理由
・低遅延が求められる場合
・エラー修正や再送が不要な場合
・高速なデータ転送が求められる場合
トランスポート層の重要性
トランスポート層はデータ通信の信頼性と効率を向上させるために不可欠な層です。
ネットワーク層がパケットのルーティングを担当するのに対し、トランスポート層はエンドツーエンドの通信の品質を保証します。
これにより、アプリケーション層のプロトコルやユーザアプリケーションがデータを正確かつ効率的にやり取りできるようになるのです。
実生活でのトランスポート層の例
トランスポート層の機能を更に理解するために、実生活の例で考えてみます。
今回は、オンラインショッピングをするといった場面を想定します。
1.データの信頼性確保
オンラインで注文した商品情報が正確にショップに届くように、トランスポート層はエラー検出と修正を行います。
2.フロー制御
注文情報を送信する速度が、ショップのシステムが処理できる速度と一致する様に調整します。
3.多重化
同時に複数のWebサイトを閲覧したり、他のオンラインサービスを利用している場合でも、各アプリケーションの通信が混ざらない様に管理します。
4.コネクション管理
注文を完了し、通信が終了する時には、コネクションを適切に終了します。
まとめ
トランスポート層は、OSI参照モデルの中でエンドツーエンドンデータ通信を管理し、信頼性と効率を向上させる役割を持つ層で、他層に並ぶ重要性がありました。
以上がトランスポート層のお話でした。
トランスポート層の上の層にはセッション層があります。
セッション層について詳しく知りたい方はこちら。