【ネットワーク】トランスポート層のプロトコル:TCP/UDPの違いについて

みなさん、こんにちは!

ブリュの公式ブログ.netにお越しいただきまして、ありがとうございます。

このサイトでは、ITについて特化したサイトを運営しています。

今回はネットワークについて、トランスポート層のTCPとUDPについて紹介します。

正確だけど遅いのがTCP、早いけど雑なのがUDPといったイメージです。

そして、

  • TCPはコネクション型通信
  • UDPはコネクションレス型通信

というのも覚えておいてください。

スポンサーリンク

TCP/UDPの概要

TCP/UDPはトランスポート層のプロトコル

TCP/UDPはどちらもOSI基本参照モデルのトランスポート層に属します。

OSI基本参照モデルについて

  • 物理層:LANケーブルの電気信号
  • データリンク層:MACアドレスによるルータを超えない通信
  • ネットワーク層:IPアドレスによるルーターを超えた経路選択
  • トランスポート層:通信品質の決定

という流れです。

トランスポート層は単独動作はできません。

必ず階層のネットワーク層によるサポートが別途必要であり、ネットワーク層もデータリンク層によるサポートが必要であり・・・と、最終的には物理層に到達します。

TCP/IPプロトコルスイートにおけるTCP/UDPの階層

OSI基本参照モデルは、ネットワークの機能を7階層に分離したものではありますが、実際のネットワークには完全に一致しません。

実際には相性の問題があり、一般的にはトランスポート層のTCPやUDPは、ネットワーク層のIPと親和性が高いです。

そこで、TCP/UDPとIPの組み合わせをベースとして、TCP/IPプロトコルスイートが利用されています。

TCP/IPプロトコルスイートでは、7階層を4階層に集約しています。

TCP/IPプロトコルスイートで見ると、TCP/UDPは第3層に位置します。

OSI基本参照モデル TCP/IPプロトコルスイート 実装例
アプリケーション層 アプリケーション層 HTTP, SMTP, FTP, DHCP, DNS, SNMP, POP3, Ternet
プレゼンテーション層
セッション層
トランスポート層 トランスポート層 TCP, UDP
ネットワーク層 ネットワーク層 IP, ICMP
データリンク層 ネットワークインターフェース層 イーサネット
物理層

こんな細かいところまで理解する必要があるのかは微妙ですが、TCPやUDPは結構特殊なプロトコルなんだってことをご理解ください。

逆に、IPが一般化されているからTCP/IPプロトコルスイートが標準になっているイメージですね。

TCP

コネクション型通信

TCP/IPプロトコルスイートにおけるIPは、コネクションレス型通信です。

そこを、TCPがコネクション型通信に上書きするイメージです。

コネクション型通信・コネクションレス型通信については、別途記事を作成しますが、イメージとしては下の図のように、インターネットにおいて通信経路の無数の選択肢がある中で、事前に通信経路も含めたコネクションを確立し、すべてのパケットをその伝送路で送受信することを、コネクション型通信といいます。

信頼性の高いTCP:ウェブサイト閲覧に最適

TCPは、伝送エラーを検出して再送する機能を持っています。

そのため、ホームページの閲覧で伝送エラーが生じた際に、その飛んでしまったパケットを再送してくれます。

少しでも情報が欠けるとホームページはデザインが崩れたり、必要なことが伝わりにくくなったりしますから、確実な伝送が大事。

そのため、信頼性の高いTCPが使用されています。

今、この記事をお読みいただいていますが、これもTCPで皆様のパソコンに届いています。

UDP

コネクションレス型通信

UDPは、IPのコネクションレス型通信を継承します。

コネクションレス型通信は、経路の確立を行わず、伝送路の障害に強く、高速です。

一方、データ到着順序の違いやパケット単位での欠落データが生じるなど、通信品質についてはTCPと比べると劣っています。

高速伝送のUDP:動画配信に最適

高速伝送のUDPは動画配信に最適です。

動画は速さがすべて。

ライブ配信なんかもその例です。

通信品質の悪さについても、あまり考える必要はありません。

仮に、TCPでの動画視聴を想定します。

今、このタイミングでPCでライブ配信動画を視聴していて、今、この瞬間に表示するべき動画が1コマ飛んだとします。

そのエラーを検出して、その1コマを再送したとしましょう。

PCに到着した時には、すでにコンマ数秒前の1コマです。

そのコンマ数秒前の1コマは表示せずに破棄するでしょう。

むしろ、コンマ数秒前の1コマの再送なんかよりも、“リアルタイムの1コマを送信してくれよ!”ってなりませんか?

その気持ちを満たすのがUDP。

過去は振り返らないポジティブな思考が、UDPなのです。

つまり、伝送路の品質そのものが高ければ、トランスポート層レベルで通信の品質を向上する必要性も低く、コネクションレス型通信のUDPが最適となります。

まとめ

ここまで、TCP/UDPの違いについて紹介してきました。

再度まとめると、

  • TCP:遅いけど確実にデータが届く
  • UDP:速いけどデータ欠落の可能性あり

ということになります。

こうみると、TCPはUDPより優れているように見えるかもしれませんが、動画の視聴など、リアルタイム性が必要な通信においては、UDPのほうが優れていることを忘れないでください。

TCPとUDPは守備範囲が異なり、その状況に応じて適切に使い分けていくことが大切です。

以上、TCPとUDPの違いについて、参考になれば幸いです。