TCP/IPプロトコルスイートにおける「転送層(トランスポート層)」は、ネットワーク間でのデータ転送を調整する非常に重要な役割を担っています。この層は、エンドツーエンドの通信を提供し、上位のアプリケーション層と下位のインターネット層の間でデータの信頼性と整合性を確保するための機能を提供します。
転送層の主な役割
転送層は、ネットワーク間でのデータ送信を効率的かつ信頼性高く行うために、いくつかの重要な機能を提供します。これには、データの分割と再構築、エラー検出と修正、データの順序制御、輻輳の制御、さらには接続の管理が含まれます。転送層には主に2つのプロトコルが存在します:TCP(Transmission Control Protocol)とUDP(User Datagram Protocol)です。

1. TCP(Transmission Control Protocol)
TCPは、接続指向型プロトコルであり、データ転送の信頼性を保証します。TCPは、信頼性の高いデータ通信を提供するために以下の特徴を持っています。
- 接続の確立: TCPは、データの送信を開始する前に送信元と受信先の間で「ハンドシェイク」を行い、通信路を確立します。この過程は、3ウェイハンドシェイク(SYN、SYN-ACK、ACK)として知られています。
- データの順序保証: TCPは、送信されたデータパケットが受信側で正しい順序で受け取られることを保証します。もしパケットが順番通りに届かない場合、再送信が行われます。
- エラーチェックと修正: 送信されたデータが正しいかどうかを確認するため、TCPはエラーチェック(CRC)を使用します。エラーが検出された場合、再送信が要求されます。
- フロー制御: 受信側が処理できる速度でデータを受け取れるように、TCPはフロー制御を使用して、データ転送の速度を調整します。これにより、受信バッファが溢れないようにします。
- 輻輳制御: ネットワークの混雑を避けるため、TCPは輻輳制御メカニズム(例えば、スロースタート、輻輳回避、輻輳検出など)を実装しています。これにより、過度のトラフィックがネットワークを圧迫するのを防ぎます。
TCPは、インターネットで多くの重要な通信に使用されており、例えばウェブブラウジング(HTTP、HTTPS)、メール送信(SMTP)、ファイル転送(FTP)などのプロトコルがこれを基盤にしています。
2. UDP(User Datagram Protocol)
UDPは、TCPと異なり、接続指向型ではなく、コネクションレス型のプロトコルです。UDPは、データの信頼性や順序の保証を行わず、最小限のオーバーヘッドでデータを転送します。このため、UDPはリアルタイム性が求められる通信に適しており、以下の特徴を持っています。
- 信頼性のない転送: UDPは、データパケットが順序通りに届くことを保証しません。また、エラー検出機能はあっても、エラーの修正を行いません。これにより、オーバーヘッドが少なく、転送速度が速くなります。
- 低遅延: 通信の確立やエラーチェックのための追加手続きがないため、UDPは非常に低い遅延でデータを送信できます。
- フロー制御と輻輳制御の不在: UDPはフロー制御や輻輳制御を行わないため、ネットワークが混雑していても関係なく、データを送信し続けます。このため、ネットワークの状態によってはパケットの損失が発生する可能性がありますが、リアルタイム通信が要求される音声やビデオストリーミングなどのアプリケーションには適しています。
UDPは、オンラインゲーム、VoIP(Voice over IP)、ストリーミングメディアなど、遅延やデータ損失を許容できるアプリケーションに多く使用されます。
転送層のその他の重要な要素
転送層は、データ転送の信頼性を提供するために、さまざまなメカニズムを使用します。以下はその主要な要素です。
- ポート番号: 転送層は、送信元および受信先のポート番号を使用して、通信セッションを特定します。これにより、同一のIPアドレスを使用している複数のアプリケーション間での通信を区別することができます。例えば、HTTPは通常ポート80、HTTPSはポート443を使用します。
- セグメント化と再構築: TCPは、送信するデータを小さな単位(セグメント)に分割し、受信側でそれらを再構築します。このプロセスは、ネットワークの最大転送サイズ(MTU)を超えるデータを処理するために重要です。
- 接続の管理: TCPは、接続の確立(SYN、SYN-ACK、ACK)、維持(データ転送中)、および終了(FIN、ACK)の過程を管理します。これにより、効率的かつ安全にデータ通信を行うことができます。
結論
TCP/IPプロトコルスイートにおける転送層は、ネットワーク上でのデータ転送を調整し、通信の信頼性、順序保証、エラーチェック、フロー制御、輻輳制御を提供する重要な役割を果たします。TCPは信頼性の高いデータ通信を提供し、UDPはリアルタイム性を重視した通信を可能にします。これらのプロトコルは、インターネットでのデータ転送において欠かせない存在であり、さまざまなアプリケーションにおいて利用されています。