TCP・UDP

更新日:

OSI参照モデルのトランスポート層(4層)を担うプロトコル。「どのアプリケーションに届けるか」「データを確実に届けるか」を管理する。TCPとUDPは性質が正反対で、用途によって使い分ける。

ポート番号の役割

IPアドレスが「建物の住所」なら、ポート番号は「部屋番号」。同じ端末上で複数のアプリ(ブラウザ、メールソフト等)が同時に通信できるのは、ポート番号でアプリごとに通信を振り分けているため。

代表的なポート(well-known port):

ポート用途
80HTTP
443HTTPS
22SSH
53DNS
25SMTP(メール送信)

TCP(Transmission Control Protocol)

コネクション型で信頼性を重視するプロトコル。

  • 3ウェイハンドシェイク: 通信開始前に3回のやり取りで接続を確立する

    1. クライアント → サーバー: SYN(接続要求)
    2. サーバー → クライアント: SYN/ACK(要求を受け入れ、こちらも接続要求)
    3. クライアント → サーバー: ACK(了解)

    これにより、送受信双方が「相手と通信できる状態にある」ことを確認してからデータ送信を始められる。

  • 信頼性の仕組み: 送ったデータが届いたかをACK(受信確認)で確認し、届いていなければ再送する。また、パケットが届いた順序がバラバラでも正しい順序に並べ直す

  • 上記の仕組みのぶん、UDPよりオーバーヘッド(処理・通信量)が大きい

UDP(User Datagram Protocol)

コネクションレスでシンプル・高速なプロトコル。

  • 接続確立の手順がなく、いきなりデータを送りつける(送りっぱなし)
  • 到着順序の保証や再送の仕組みがない → データが欠けたり順番が入れ替わったりする可能性がある
  • そのぶんオーバーヘッドが少なく低遅延

使い分け

用途採用理由
Webサイト閲覧(HTTP・HTTPS・TLS)TCPページの一部が欠けたら困る、確実性重視
ファイル転送、メールTCPデータの完全性が必須
DNSUDP(基本)小さいデータで高速に返したい、多少のロスは再問い合わせで対応可能
動画・音声配信、オンラインゲームUDP多少のデータ欠損より、遅延しないことの方が重要(1コマ古い映像より今の映像)

「確実に届けたいか」vs「速さ・リアルタイム性を優先するか」がTCP/UDPを選ぶ基準になる。

関連