Huney

応用情報(AP) / ネットワーク

TCPとUDPとは?トランスポート層の仕組みを基礎から理解しよう

トランスポート層の代表的なプロトコルであるTCPとUDPについて、ポート番号、3ウェイハンドシェイク、シーケンス番号、確認応答、再送制御などの仕組みと違いを初心者向けに解説します。

読了時間:約9分
  • #ネットワーク
  • #TCP
  • #UDP
  • #トランスポート層
  • #ポート番号
  • #3ウェイハンドシェイク
  • #応用情報技術者試験

TCPとUDPとは?トランスポート層の仕組みを基礎から理解しよう

はじめに

OSI基本参照モデルの第4層が、

トランスポート層(Transport Layer)

です。

ネットワーク層のIPは、

どのコンピュータへ届けるか

をIPアドレスによって判断していました。

トランスポート層ではさらに、

そのコンピュータのどのアプリケーションへ届けるか

を管理します。

代表的なプロトコルが、

TCP
UDP

です。


1. トランスポート層とは

例えば、1台のPCでは同時に、

Webブラウザ
メール
オンラインゲーム
ビデオ通話

など、複数のアプリケーションが通信しています。

IPアドレスだけでは、

どのコンピュータなのか

までは分かっても、

そのコンピュータ上のどのアプリケーションへ届けるのか

までは判断できません。

そこで利用されるのが、

ポート番号

です。

IPアドレス
→ どのコンピュータ?

ポート番号
→ どのアプリケーション?

と考えると分かりやすいです。


2. ポート番号

**ポート番号(Port Number)**は、

通信を行うアプリケーションやサービスを識別するための番号

です。

ポート番号は、

0 ~ 65535

の範囲があります。

代表的なものには、

プロトコル ポート番号
HTTP TCP 80
HTTPS TCP 443
SSH TCP 22
DNS UDP/TCP 53
SMTP TCP 25

などがあります。

このように、

IPアドレス
+
ポート番号

を利用することで、目的のコンピュータ上の適切なサービスへ通信を届けられます。


3. TCPとは

**TCP(Transmission Control Protocol)**は、

データを確実に届けることを重視したプロトコル

です。

TCPでは、

接続を確立する

データが届いたか確認する

届かなければ再送する

正しい順番に並べる

といった制御を行います。

そのためTCPは、

信頼性の高い通信

が必要な場面で利用されます。


4. TCPはコネクション型

TCPは、

コネクション型

のプロトコルです。

データをいきなり送るのではなく、最初に通信相手との接続を確立します。

接続を確立
↓
データ通信
↓
接続を終了

電話に例えると、

電話をかける
↓
相手が出る
↓
会話する
↓
電話を切る

というイメージです。


5. 3ウェイハンドシェイク

TCPで通信を開始するときに行われるのが、

3ウェイハンドシェイク(Three-way Handshake)

です。

通信開始前に3回のやり取りを行います。

クライアント              サーバー

     SYN
       ─────────→

            SYN + ACK
       ←─────────

     ACK
       ─────────→

      接続確立

6. SYNとACK

SYN

**SYN(Synchronize)**は、

通信を開始したい

という意味で利用されます。

ACK

**ACK(Acknowledgement)**は、

受信したことを確認した

という意味です。

したがって3ウェイハンドシェイクは、

① SYN
「通信したいです」

② SYN + ACK
「いいですよ。こちらも準備します」

③ ACK
「確認しました」

↓
通信開始

と考えると分かりやすいです。


7. TCPのシーケンス番号

ネットワークでは、大きなデータを分割して送信することがあります。

例えば、

データ
↓
A
B
C
D

と分けて送ったとします。

ネットワークの状況によっては、

A
C
B
D

のように到着する可能性があります。

TCPではシーケンス番号を利用してデータの順序を管理します。

そのため、受信側で正しい順序に並べることができます。


8. 確認応答

TCPでは、データを受信すると、

ACK

を利用して受信したことを送信側へ伝えます。

送信側

データ
────────→
          受信側

      ACK
←────────

これを確認応答といいます。

送信側はACKを受け取ることで、

データが相手に届いた

と判断できます。


9. 再送制御

では、途中でデータが失われた場合はどうなるでしょうか。

送信側

データ
─────×────→

          受信側

データが届かなければ、期待した確認応答も返ってきません。

送信側は一定時間待っても必要なACKを受け取れなければ、

データが届かなかった可能性がある

と判断して再送します。

データ送信
↓
ACKが返ってこない
↓
再送

これを再送制御といいます。


10. TCPのフロー制御

TCPには、

フロー制御

という仕組みもあります。

送信側が大量のデータを一気に送ると、受信側が処理しきれなくなる可能性があります。

そこで、

受信側が処理できる量に合わせて送信量を調整する

のがフロー制御です。

TCPではウィンドウサイズなどを利用して制御します。

受信側

「今はこのくらい受け取れます」

        ↓

送信側

「では、その範囲で送ります」

というイメージです。


11. TCPの輻輳制御

ネットワークそのものが混雑している場合もあります。

これを、

輻輳(ふくそう / Congestion)

と呼びます。

TCPではネットワークの混雑状況に応じて送信量を調整します。

これを、

輻輳制御

といいます。

似ていますが、

フロー制御
→ 受信側が処理しきれるように調整

輻輳制御
→ ネットワークが混雑しすぎないように調整

という違いがあります。


12. TCPの特徴を整理する

TCPには、

コネクション型

3ウェイハンドシェイク

シーケンス番号

確認応答

再送制御

フロー制御

輻輳制御

などの仕組みがあります。

これらによって、

多少処理が増えても、信頼性の高い通信を実現する

のがTCPです。


13. UDPとは

**UDP(User Datagram Protocol)**は、

信頼性よりもシンプルさやリアルタイム性を重視するプロトコル

です。

TCPのように、

3ウェイハンドシェイク
確認応答
再送制御
順序制御

などを基本的には行いません。

そのため、TCPよりもシンプルな通信ができます。


14. UDPはコネクションレス型

UDPは、

コネクションレス型

です。

TCPのように事前に接続を確立せず、

送りたい
↓
送信

という形でデータを送ります。

電話よりも、

手紙を投函する

ようなイメージに近いです。

送信側は、相手との接続を確立してから送るわけではありません。


15. UDPでは届くことを保証しない

UDPでは、

データが届いたか

途中で失われたか

正しい順番で届いたか

をUDP自身では保証しません。

例えば、

A
B
C
D

と送信しても、

A
C
D

となる可能性があります。

それでも、

多少データが失われても、遅延を抑えたい通信

などではUDPが適しています。


16. UDPが利用される場面

UDPは、

音声通信
動画配信
オンラインゲーム
DNS

などで利用されます。

例えばリアルタイムの音声通信では、

少し前の音声データが失われたから再送する

よりも、

多少欠けても、そのまま次の音声を届ける

方が適している場合があります。

ただし、UDPを使うアプリケーションが独自に再送や信頼性確保の仕組みを持つこともあります。

つまり、

UDPを使う = 必ず信頼性が低いアプリケーション

という意味ではありません。


17. TCPとUDPを比較する

TCP UDP
接続方式 コネクション型 コネクションレス型
信頼性 高い UDP自体では保証しない
接続確立 あり なし
確認応答 あり なし
再送制御 あり なし
順序制御 あり なし
処理 比較的多い シンプル
主な用途 Web、メール、ファイル転送など DNS、音声・動画、ゲームなど

一言で整理すると、

TCP
→ 確実性を重視

UDP
→ シンプルさ・リアルタイム性を重視

です。


18. IP・TCP・UDPの関係

前回学習したIPと組み合わせると、さらに分かりやすくなります。

アプリケーション
      ↓
TCP / UDP
      ↓
     IP
      ↓
 Ethernetなど

それぞれの役割は、

IP
→ どのコンピュータへ届ける?

TCP / UDP
→ どのアプリケーションへ届ける?

です。

さらにTCPの場合は、

ちゃんと届いた?
順番は合っている?
再送が必要?

といった信頼性の制御も行います。


19. まとめ

この記事で覚えること

  • TCPとUDPはトランスポート層の代表的なプロトコル
  • ポート番号によってアプリケーションやサービスを識別する
  • ポート番号は0〜65535
  • TCPはコネクション型
  • UDPはコネクションレス型
  • TCPでは3ウェイハンドシェイクによって接続を確立する
  • SYNは接続開始、ACKは確認応答に利用される
  • TCPはシーケンス番号によってデータの順序を管理する
  • TCPには確認応答・再送制御がある
  • フロー制御は受信側の処理能力に合わせて送信量を調整する
  • 輻輳制御はネットワークの混雑に合わせて送信量を調整する
  • UDP自身は到達確認や再送、順序制御を行わない
  • TCPは信頼性を重視する通信に向いている
  • UDPはシンプルさやリアルタイム性を重視する通信に向いている

🍯 はちみつメモ

IPアドレスが「どの家?」なら、ポート番号は「その家の誰?」。TCPは相手の返事を確認しながら確実に荷物を届けるタイプ、UDPは確認を待たずにどんどん届けるタイプ。TCP=確実性、UDP=シンプル・リアルタイム性を軸に覚えよう。