はじめに
Webサイトの閲覧やメール送信では、IPによって宛先の端末までデータを届けるだけでは不十分です。受信したデータを、ブラウザ、メールソフト、DNSサーバーなど、適切なアプリケーションへ渡す必要があります。
この役割を担うのがトランスポート層です。この記事では、トランスポート層が担当する範囲と、代表的なプロトコルであるTCPとUDPの違い、用途に応じた使い分けを解説します。
この記事で分かること
- トランスポート層が必要な理由
- ポート番号が果たす役割
- TCPが信頼性を実現する仕組みの概要
- UDPが必要最小限の機能に絞っている理由
- TCPとUDPを使い分ける判断基準
トランスポート層とは
トランスポート層は、通信するアプリケーション間でデータを受け渡す層です。OSI参照モデルでは第4層、TCP/IPモデルではトランスポート層に位置し、代表的なプロトコルとしてTCPとUDPがあります。
ネットワーク層のIPは、宛先IPアドレスを基にパケットを送信先のネットワークインターフェースまで転送します。一方、トランスポート層はポート番号を使い、受信したデータをどのアプリケーションへ渡すかを区別します。
各階層の位置づけは、OSI参照モデルとは?TCP/IPモデルとの違いと7階層の役割で解説しています。IPによるネットワーク間転送は、IPとは?ネットワーク層の役割やルーティングを初心者向けに分かりやすく解説を参照してください。
トランスポート層の主な役割
トランスポート層の基本的な役割は、IPで届いたデータを適切なアプリケーションへ渡し、アプリケーション間の通信を支えることです。
ポート番号は、同じ端末で同時に動作する複数のアプリケーションや通信を区別するために使われます。実際の通信は、送信元と宛先のIPアドレス、送信元と宛先のポート番号、TCPかUDPかという情報の組み合わせで区別されます。
また、信頼性、到着順序、流量調整、ネットワーク混雑への対応などをどこまで提供するかは、使用するトランスポートプロトコルによって異なります。TCPはこれらの制御を多く備え、UDPは必要最小限のデータグラム転送を提供します。
TCPとは
TCP(Transmission Control Protocol)は、コネクション型のプロトコルです。通信を始める前に接続状態を確立し、アプリケーションへ信頼性のある順序どおりのバイトストリームを提供します。
TCPでは、シーケンス番号と確認応答を使ってデータの到着状況を管理します。損失を検出した場合は送信側が再送し、順番が入れ替わったデータは受信側で並べ直します。さらに、受信側の処理能力に合わせるフロー制御と、ネットワークの混雑を抑える輻輳制御を備えています。
このため、内容の欠損や順序の入れ替わりを避けたい通信に適しています。HTTP/1.1やHTTP/2によるWeb通信、メール、ファイル転送などが代表例です。
UDPとは
UDP(User Datagram Protocol)は、通信前の接続確立を行わず、データグラム単位で送信するコネクションレス型のプロトコルです。UDP自体は、データの到着、到着順序、重複しないこと、再送を保証しません。
制御機能が少ないため、ヘッダーと処理が比較的単純で、アプリケーションが送信のタイミングや再送方法を決めやすい特徴があります。ただし、UDPを使えば常にTCPより高速になるわけではありません。通信品質は、アプリケーションの実装、ネットワーク状況、送信量などにも左右されます。
UDPは、一般的なDNSの問い合わせ、音声・映像のリアルタイム通信、オンラインゲームなどで利用されます。信頼性や順序制御が必要な場合は、アプリケーションやUDP上の別プロトコルで補います。また、インターネットで利用する場合は、送信量を無制限に増やさず、混雑への対応を考える必要があります。
TCPとUDPの違い
| 比較項目 | TCP | UDP |
|---|---|---|
| 通信方式 | コネクション型 | コネクションレス型 |
| アプリケーションへ提供する単位 | 順序どおりのバイトストリーム | データグラム |
| 接続状態の管理 | 行う | 行わない |
| 損失検出と再送 | 行う | UDP自体では行わない |
| 順序制御 | 行う | UDP自体では行わない |
| フロー制御 | 行う | 行わない |
| 輻輳制御 | 行う | UDP自体では行わない |
| ヘッダー長 | 最小20バイト | 8バイト |
| 主な用途 | Web、メール、ファイル転送 | DNS、リアルタイム通信、ゲーム |
TCPとUDPの違いは、単純な「遅いか速いか」ではありません。TCPは信頼性と順序をプロトコルが管理し、UDPは必要な制御をアプリケーションや上位のプロトコルへ委ねるという責任分担の違いです。
コネクション型とコネクションレス型の違いは、通信前に論理的な接続を確立し、通信中にその状態を管理するかどうかです。信頼性や再送とは別の観点であり、詳しくは「コネクション型とコネクションレス型の違い|TCP・UDPの具体例で解説」で解説しています。
TCPとUDPの使い分け
データの欠損や順序の入れ替わりを避けたい場合は、TCPが基本的な選択肢です。ファイルやメールの一部が欠けると内容が変わるため、完全性と順序を優先します。
一方、古いデータを再送して待つより、新しいデータを続けて届ける方が重要な通信ではUDPが使われます。音声通話や対戦ゲームでは、遅れて届いたデータの価値が低くなる場合があるためです。ただし、必要な再送、輻輳制御、暗号化などは、アプリケーションや別のプロトコルで補う必要があります。
実際に使用するプロトコルは、単純な速度比較ではなく、損失を許容できるか、順序が必要か、遅延をどこまで抑えるか、アプリケーション側で制御できるかを基に決めます。UDPを利用する場合も、通信量の抑制や損失への対応を考えずに送信してよいわけではありません。
まとめ
トランスポート層は、ポート番号によって通信するアプリケーションを区別し、アプリケーション間のデータ受け渡しを支える層です。
- TCPは接続状態を管理し、信頼性のある順序どおりのバイトストリームを提供する
- UDPは接続確立や再送を行わず、データグラムを必要最小限の仕組みで送る
- TCPとUDPの違いは、信頼性や順序制御をどの層が担当するかにある
- 完全性と順序を優先する場合はTCP、遅延やアプリケーション側の制御を優先する場合はUDPを検討する
- IPアドレスはネットワークインターフェースを示し、ポート番号はアプリケーションや通信を区別する
TCPとUDPを「信頼性か速度か」だけで分けず、必要な機能をトランスポート層とアプリケーションのどちらで担当するかという視点で理解すると、使い分けを整理できます。


コメント