UDPとTCPの比較
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/03/31 23:34 UTC 版)
「User Datagram Protocol」の記事における「UDPとTCPの比較」の解説
詳細は「トランスポート層」を参照 TCPはコネクション指向のプロトコルであり、エンドツーエンドの通信を設定するためのハンドシェイクを必要とする。コネクションが設定されると、そのコネクション上で双方向のデータ転送が行われる。 信頼性 TCPではメッセージに対する確認応答があり、再送やタイムアウトを管理している。そして、何とかしてメッセージを確実に届けようとする。パケットが喪失した場合、相手側から再送を要求する。TCPでは全くデータが失われないか、あるいは複数のタイムアウトが発生してコネクションが維持できなくなるかのどちらかである。 順序性 2つのメッセージが順番に送り出されると、受信側アプリケーションには順番どおりにメッセージが届く。セグメントがばらばらな順番で届いた場合、TCPがそれらを蓄積し、正しい順番に並べ替えてアプリケーションに渡す。 オーバーヘッド TCPでは、ユーザーのデータを送信する前に必ず3つのパケットをやり取りしてコネクションを確立する必要がある。また、信頼性と輻輳制御のためのオーバーヘッドもある。 ストリーミング アプリケーションから見ればデータはバイトストリームであり、個々のメッセージ(セグメント)の境界を示す印はない。 UDPはより単純なメッセージベースのコネクションレス・プロトコルである。コネクションレス・プロトコルはエンドツーエンドのコネクション確立を行わない。通信は送信側から受信側へ、特に相手の状態を確認することなく一方的に行われる。UDPがTCPに対して優れているのはリアルタイム性であり、VoIPなどの用途で重視される。 信頼性 メッセージを送ったとき、それが相手に届いたかどうかを確認できず、喪失したらそのままである。チェックサムで誤りを検出したメッセージも廃棄され、廃棄したことはどちらのアプリケーションにも通知されない。確認応答、再送、タイムアウトといった概念がない。 順序性 2つのメッセージを相手に送ったとき、どちらが先に届くかは予測できない。 オーバーヘッド メッセージの順序を保証せず、コネクションも保持しないなど、トランスポート層プロトコルとしてはオーバーヘッドが小さい。 データグラム パケットは個別に送信され、受信されたときだけ完全性をチェックする。メッセージ単位の送受信であり、送信元のアプリケーションが1つのメッセージとして送ったものが、そのまま相手側アプリケーションに1つのメッセージとして届く。 輻輳 UDP自身は輻輳を防げない。広帯域アプリケーションでは輻輳が発生する可能性があり、必要ならば上位層で輻輳制御を実装しなければならない。
※この「UDPとTCPの比較」の解説は、「User Datagram Protocol」の解説の一部です。
「UDPとTCPの比較」を含む「User Datagram Protocol」の記事については、「User Datagram Protocol」の概要を参照ください。
- UDPとTCPの比較のページへのリンク