みなさん、こんにちは!
ブリュの公式ブログ.netにお越しいただきまして、ありがとうございます。
このサイトでは、ITについて特化したサイトを運営しています。
今回はネットワークについて、トランスポート層のTCPとUDPについて紹介します。
正確だけど遅いのがTCP、早いけど雑なのがUDPといったイメージです。
そして、
- TCPはコネクション型通信
- UDPはコネクションレス型通信
というのも覚えておいてください。
目次
TCP/UDPの概要
TCP/UDPはトランスポート層のプロトコル
TCP/UDPはどちらも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の違いについて、参考になれば幸いです。