はじめに
こんにちは。アメリカで独学でエンジニアを目指している者です。
現在ネットワークについて学んでいるのですが、その中でも本日はTCP/IPのトランスポート層について見ていきたいと思います
トランスポート層の役割
トランスポート層は、エンドホスト同士のアプリケーション間通信を制御する層です。IPアドレスだけでなく ポート番号 を用いることで、同じホスト上で動作している複数のアプリケーションを識別し、どのアプリケーション宛てのデータかを区別します。また、通信の信頼性やデータ転送の効率化などを実現するための機能を提供します。
-
ポート番号
同一ホスト内で、複数のアプリケーションが同時に通信できるようにする識別子。例えば、HTTPはポート番号80、HTTPSは443を使用します。 -
信頼性の確保 / フロー制御
データの再送制御や、送信速度の調整などにより、ネットワークトラフィックを円滑にし、通信の信頼性を保ちます(主にTCPで提供)。
トランスポート層の主要プロトコル
TCP (Transmission Control Protocol)
TCPは、トランスポート層で信頼性の高い通信を実現する代表的なプロトコルです。主な特徴は以下のとおりです。
- コネクション型
通信を始める前に、送信元と宛先の間で仮想的な通信路(コネクション)を確立します。
* 3ウェイハンドシェイク (Three-way handshake)
* SYNパケット → SYN+ACKパケット → ACKパケット
この3往復によって通信相手が存在することを確認し、通信路を確立します。
-
データの順序制御 / 再送制御
送信したデータが正しい順番で受信されるようにシーケンス番号を割り振り、パケットが欠落・破損した場合には再送を行います。 -
フロー制御 (Flow Control)
受信側の処理能力に合わせて送信速度を調整し、パケットの損失やバッファ溢れを防ぎます。 -
エラー検出
TCPヘッダに含まれるチェックサムによって、データ破損を検出します。
TCPは信頼性が高い反面、コネクションの確立や再送処理などのオーバーヘッドが大きく、通信に遅延が生じやすいという特徴があります。Web通信やメール送信など、確実にデータを届けたい 場合に多く利用されます
UDP (User Datagram Protocol)
UDPは、TCPと比べてより軽量かつシンプルなプロトコルです。主な特徴は以下のとおりです。
-
コネクションレス型
事前のコネクション確立を行わずに、データを「投げっぱなし」で送信します。 -
再送制御・順序制御が基本的にない
TCPと異なり、パケットが届かなかったり、順番がずれたりしても自動的に修正は行われません。 -
低オーバーヘッド / 低遅延
コネクションを張る手続きや再送制御がないため、処理が軽く、リアルタイム性が求められる通信に向いています。
UDPはリアルタイム性が重視される 音声通話(VoIP) や 動画配信、またはDNSの問い合わせなどで多用されます。多少のパケット損失があっても問題になりにくいケースで有効なプロトコルです。
まとめ
TCP/IPの トランスポート層 は、アプリケーション間の通信制御を担う非常に重要な役割を果たしています。TCPとUDPという2つの代表的なプロトコルを使い分けることで、信頼性を求める通信・リアルタイム性を求める通信の両方に対応できるようになっています。
- TCP : 信頼性重視、3ウェイハンドシェイクや再送制御などを行う
- UDP : 軽量・低遅延重視、コネクションレスで再送制御を行わない
次回はアプリケーション層について記事にしようと思います。