blog

TCPバイト・ストリームとUDPデータグラム

TCP\nTCPは、家に貯水槽があり、貯水槽の中に水を注ぐことができ、貯水槽には蛇口があり、蛇口から貯水槽の中の水を放出することができ、その後、さまざまな容器を使って水を受けることができるとします。\...

Dec 26, 2015 · 4 min. read
シェア

1. TCP

TCPで例えるなら、家の中に貯水槽があり、そこに水を入れることができます。貯水槽には蛇口が付いていて、そこから貯水槽の水を出すことができ、さらに様々な容器を使って水を受けることができます。

上記の例では、シンクに水を注ぐ回数と水を受ける回数に必然的な関係はありません。つまり、水を注ぐのは1回だけで、受けるのは10回以上ということになります。また、シンクに水を受ける回数は少なくなり、水を注ぐ回数は増えますが、シンクの容量を超えることはなく、余分な水は溢れます。

TCPの概念と組み合わせることで、プールは受信キャッシュに類似しており、水を注ぐと、データを送信することに相当し、水を受信すると、データを読み取ることに相当します。あなたはTCP接続の相手側にデータを送信する場合のように、あなただけの書き込みを呼び出すと、100バイトを送ったが、相手側は毎回10バイトの終わりを受信するために10回に分けることができます。しかし、あなたが送信するデータの量は、相手の受信キャッシュよりも大きくすることはできません、あなたはあまりにも多くのデータを送信することを主張する場合、相手のキャッシュがいっぱいに余分なデータを破棄されます。

2. UDP

UDPはTCPと異なり、送信側は書き込みを何度か呼び、受信側は同じ回数の読み込みを行わなければなりません。UPDはメッセージベースであり、受信時には一度に最大1つのメッセージを読み込むことができます。メッセージは互いにマージされず、バッファがメッセージの長さよりも小さい場合、余分な部分は破棄されます。つまり、MSG_PEEKフラグが指定されていない場合、各読み取り操作で1つのメッセージが消費されます。

3.なぜ

実際には、この違いは、TCPとUDPの特性によって決定されます。 TCPは、接続指向である、つまり、接続の継続性の過程で、ソケットで受信したデータは、同じホストによって送信されるため、データが行に到着する順序であることを確認するために、各時間のように、どれだけのデータを自分で読んで行うことを知っています。

一方、UDPはコネクションレス・プロトコルなので、受信側のIPとポートがわかっていて、ネットワークに到達可能であれば、どのホストも受信側にデータを送ることができます。このとき、一度に複数のメッセージのデータが読み取れると、メチャクチャになってしまいます。例えば、ホスト A がメッセージ P1 を送信し、ホスト B がメッセージ P2 を送信したとします。

2つのプロトコルのその他の違い

TCP(伝送制御プロトコル):

プロトコルは、主にパケット交換の高い信頼性を達成するために、ホスト間の仮想接続を確立するために使用されます。ipプロトコルを分割し、ipパケットを組み立てることができますが、ipプロトコルを介して明確にパケットが正常にターゲットコンピュータに送信されるかどうかを知っていません。TCPプロトコルの使用は、このプロトコルの伝送モードでは、パケットが正常にターゲットコンピュータに送信された後、TCPは、確認応答を送信するように要求されます異なっている、確認応答が一定の制限時間内に受信されない場合は、TCPは、パケットを再送します。さらにTCPは、送信中に受信したパケットの乱れ、紛失、破損の回復も担当します。

Transmission Control Protocolは、コネクション指向の信頼性の高いバイトストリームベースのトランスポート層通信プロトコルで、通常はIETFのRFC 793で記述されています。コンピュータネットワークの簡略化されたOSIモデルでは、トランスポート層で指定された機能を果たします。

UDP User Datagram Protocol(ユーザー・データグラム・プロトコル):

ほとんどのネットワーク・アプリケーションは同じマシン上で実行されるため、コンピュータは、宛先マシンのソフトウェア・プログラムがソース・マシンからパケットを受信し、ソース・コンピュータが正しい応答を受信することを保証できなければなりません。これには、UDPの「ポート番号」を使用します。

区別:

1.コネクションベースとコネクションレス

TCP - Transmission Control Protocolは、コネクション指向の信頼性の高いバイトストリーミングサービスを提供します。TCPは、タイムアウト再送、重複データの破棄、データのチェック、フロー制御などの機能を提供し、データが一方から他方へ確実に送信されるようにします。

各パケットは、リンクを確立し、データを送信し、リンクをクリアすることによって送信されます。パケットには宛先アドレスは含まれません。受信者と送信者の順序が同じであるだけでなく、内容も同じです。信頼性が高い

UDP - User Datagram Protocolはコネクションレス指向で、各パケットには完全な送信元アドレスと宛先アドレス、パケット番号があり、それぞれがネットワーク内で独立して送信され、送信時の順序に関係なく、データは受信側に到着した後、ソートされて組み立てられ、損失やエラー、順序ずれなどが発生した場合は、再送信を要求することで解決されます。より効率的です。

UDPは単純なデータグラム指向のトランスポート層プロトコルです。UDPは信頼性を提供しません。UDPは単にアプリケーションからIP層に渡されたデータグラムを送信しますが、宛先に到達するという保証はありません。UDPが高速なのは、データグラムを送信する前にクライアントとサーバ間の接続を必要とせず、タイムアウト再送などのメカニズムがないからです。

2.システムリソースの要件

3.よりシンプルなUDPプログラム構造

4.ストリーミングモードとデータグラムモード

5、TCPはデータの正しさを保証、UDPはパケットを失う可能性あり、TCPはデータの順序を保証、UDPは保証なし

6、TCPは信頼性の高いバイトストリームサービスですが、UDPはIPプロトコル、フロー制御、エラー回復のための信頼性の高いメカニズムを提供していません。

Read next

Win8.1では、「ディスプレイドライバが応答しなくなった」ユーザーもいた。

Windows 8.1では常に問題が発生しており、Windows 8.1にアップグレードした後、マシンがスリープモードから復帰するたびにディスプレイドライバが応答しなくなるという報告もあります。

Dec 23, 2015 · 1 min read