![見出し画像](https://assets.st-note.com/production/uploads/images/83317224/rectangle_large_type_2_58cc9cb5d6b869cb202898a7d37c700b.png?width=800)
JavaでのTCPとUDPプロトコルの違い
TCPとUDPの違いは、海外でのJavaのインタビューでよくあるネットワーキングの質問です。
TCPとUDPはインターネットの最も重要なトランスポートプロトコルの2つでありますが、両方の違いを分かりやすく答えられるプログラマーは中々少ないです。
TCP / IPプロトコルの最大の利点は、メッセージの配信が保証され、クライアントがメッセージを送信した順序で提供されることです。
一方、UDPプロトコルは、非常に必要な速度を提供し、マルチキャストネットワークの実装に使用できます。
この記事では、Javaインタビューの観点からのTCPプロトコルとUDPプロトコルの違いについて説明します。
TCPとUDPプロトコルの違いは?
Javaアプリケーション開発者の観点から見たTCPプロトコルとUDPプロトコルの重要な違いは次のとおりです。
1.信頼できる
TCPは、信頼性が低く、データグラムに基づくUDPとは対照的に、信頼性の高いストリーム指向のプロトコルです。失うわけにはいかない重要なメッセージを送信するためにUDPを使用することはできないため、これは実際にはTCPとUDPの最も重要な違いです。
メッセージが配信されるかどうかの追加チェックを実装し、再送信を容易にするTIBCO認定メッセージングのようなUDP上に構築された信頼できるプロトコルがいくつかありますが。
2.スピード
TCPとUDPのもう1つの重要な違いは、速度にあります。 TCPは信頼性が高く、コネクション型であるため、UDPと比較して多くのオーバーヘッドがあります。つまり、TCPはUDPよりも低速であり、ライブテレビ放送、ビデオ、オーディオストリーミングなどの速度が重要なメッセージの転送には使用しないでください。これが、UDPがメディア伝送の世界で広く使用されている理由です。
3.データ境界
TCPとUDPのもう1つの構造上の違いは、UDPの場合はデータが1つのメッセージとして送信されるため、UDPの場合はデータ境界が保持されるが、TCPの場合は保持されないことですが、TCPプロトコルは送信側と受信側。
4.コネクション型
TCPプロトコルとUDPプロトコルのもう1つの重要な違いは、TCPはコネクション型プロトコルですが、UDPはコネクションレス型プロトコルであるという事実にあります。これが意味するのは、メッセージを送信する前に、TCPで送信者と受信者の間に接続が確立されますが、UDPプロトコルでは送信者と受信者の間に接続が存在しないということです。
![](https://assets.st-note.com/img/1658690865292-vF9nzElRc6.png)
5.注文
UDPプロトコルとTCPプロトコルのもう1つの違いは、それらが順序付けをどのように処理するかということです。 TCPは注文保証を提供しますが、UDPは注文保証を提供しません。たとえば、送信者が3つのメッセージを送信する場合、受信者は送信した同じ順序でこれら3つのメッセージを受信します。受信側で異なる順序で受信された場合でも、TCPはそれらが確実にその順序でクライアントに配信されるようにします。それらは送信者によって送信されます。 UDPはこの機能を提供しません。つまり、最後のメッセージを最初に受信したり、その逆を行ったりすることができます。
6.オーバーヘッド
TCPプロトコルによって送信されるメタデータ情報が多すぎるため、TCPヘッダーサイズがUDPヘッダーサイズよりも大きくなっています。これらは、TCPプロトコルによって提供される保証を保証するために必要です。注文配送を保証します。また、TCP / IPガイド:包括的で図解されたインターネットプロトコルリファレンス第1版を読むこともできます。これは、Javaで信頼性の高いネットワークプログラムを作成する方法とともに、TCP / IPおよびUDPプロトコルの基礎を読みやすく、興味深く、改善するものです。
7.フルフォーム
TCPはTransmissionControlProtocolの略で、UDPはUserdatagramprotocolの略です。
8.マルチキャスト
マルチキャストはUDPでのみ使用できますが、コネクション型プロトコルであるためTCPでは使用できません。
![](https://assets.st-note.com/img/1658690926106-wfozdEEH6V.png)
簡単にまとめると、
TCPは信頼性が高く保証されていますが、UDPは保証されていません。 UDPでメッセージを失うリスクがあります。
TCPは、メッセージが送信されたのと同じ順序で受信されることを意味する順序保証を提供しますが、UDPプロトコルはそのような保証を提供しません。
TCPは、コネクションレス型のUDPと比較して、コネクション型プロトコルです。
UDPはTCPプロトコルよりもはるかに高速です。
UDPプロトコルは、TIBCORVのようなマルチキャストに使用できます
すべてのデータが同じパケットで送信されるため、UDPもデータ境界を保持しますが、TCPは、送信前に1つのメッセージが複数のパッケージに分割される可能性があるためではありません。
以上が、JavaのTCPプロトコルとUDPプロトコルの違いです。 実際にJavaインタビューで必ず出てくる質問ではないが、基本的なネットワークプロトコルとコンピュータネットワークに関する知識を求められます。
その他にご参考できるJavaTCP/IPのインタビュー記事は下記となります。
Top 15 Java NIO and Socket Programming Interview Questions (list)
How to create an HTTP Server in Java using ServerSocket? (solution)
How to fix java.net.SocketException: Too many files open java.io.IOException? (solution)
How to solve java.net.SocketException: Failed to read from SocketChannel: Connection reset by peer (solution)
How to find the IP address of the localhost in Java Program? (solution)
What is TIBCO Rendezvous or TIBCO RV messaging? (answer)
追伸-サーバー側のJava開発ジョブについてインタビューする場合、TCP / IP、UDP、およびマルチキャストの知識が非常に重要になります。これらのテクノロジーは、Javaで高性能サーバーを作成するために使用されるためです。
この記事が気に入ったらサポートをしてみませんか?