目次
TCPとUDPの違いのまとめ
信頼性 | 用途 | 向いている場面 | |
---|---|---|---|
TCP | 到達確認(ACK)、再送、順序保証あり | HTTP/HTTPS(=HTTP/1.1/2), SSH, SMTP, FTP, RDP 等 | 確実・順序通りに届けたい、ファイル転送 |
UDP | 保証なし(ロス/順序入替あり得る) | DNS(通常), VoIP/RTP, ゲーム, NTP, syslog等 | 多少の欠落より遅延の少なさを重視、リアルタイム配信 |
TCP:落とせないデータ/整合性が重要(Web/API, DB接続, ファイル・メール、リモートログイン)。
UDP:低遅延最優先(音声・映像、オンラインゲーム、ブロード/マルチキャスト配信、DNS)。
必要ならアプリ層で再送・順序制御を実装(例:QUICはUDP上で信頼性や暗号化を実現し、HTTP/3で利用)。
TCPとは
TCPは、信頼性の高いデータ転送を目的としたプロトコルです。
送信側と受信側が通信する前に、接続を確立する必要があります。
以下は、TCPの接続確立までの図です。
データが送信される前に、相手側が準備できているかどうかを確認した後にデータを小さなパケットに分割して送信し、それらがすべて到着したことを確認してから次のパケットを送信します。
データの完全性を確認してから次のデータを送信するため、信頼性が高いと言えます。
ただし、パケットの伝送に伴うオーバーヘッドが大きく、速度が遅くなる可能性があります。
Webページやメールの送受信などでは、TCPを使用することが一般的です。
接続確立までに3回やりとりを行うのでスリーウエイハンドシェーク(three-way handshaking)と呼ばれます。
以下は、TCPの切断までの図です。
UDPとは (User Datagram Protocol)
UDPは、信頼性よりも速度を重視したプロトコルです。
接続確立のフェーズはありません。
データをパケットに分割し、送信しますが、到着の確認は行いません。そのため、データが到着しているかどうかを確認せずに、速くデータを送信できます。
しかし、パケットが失われたり、順序が入れ替わったりすることがあり信頼性は低くなります。
以下は、UDPでデータを送信する図です。接続の手順はなく、相手にデータが届いたかの確認も行いません。
映像のストリーミングや音声通話やオンラインゲームなどのリアルタイム性が重視される通信では、UDPを使用することが一般的です。
関連の記事