2011-02-03 5 views
6

私は昨日IPtableを設定していました。私の同僚はちょうど私にこの質問をしました、そして私は理解できませんでした。私はシステム管理者よりもはるかに優れた開発者であり、それを改善する必要があることに気付きました。UDPパケットとTCPパケットの違いは何ですか?あなたはそれらを何のために使うのですか?

だから何ですか?それらは何のため?短所/長所(該当する場合)

+0

typo in Qタイトル:U ** PD ** - > U ** DP ** –

+0

パケット間またはプロトコル間の差異を確認しますか?そして、それは話題です。 –

+0

@nick:私は今でもパケットと区別するためのプロトコルではありませんでした。 @アレクサンダー。修正をありがとう。 –

答えて

10

これは基本的な質問に似ています。

UDP ::ユーザーデータグラムプロトコル

1)マシンの間の接続を終了するには終わり(インターネットでのローカルネットワーク内のどこかでもよいです)。

2)受信側で受信されたデータは、TCPの場合のようにストリームではなく、完全なデータブロックです。

3)トランスポート層では、パケット順序チェックは実行されません。受信したパケットに誤りがある場合、受信側は同じパケットを送信側に再送することを要求しません。

4)上記の挙動のため、送信側では送信バッファは必要ありません。

5)エンドツーエンド接続はestldではありません。 UDPはハンドシェイクが必要ないため、UDPはTCPよりはるかに高速ですが信頼性は低くなります。したがって、ゲームやDNSなどで主に使用されます。

6)パケットを受信した後に送信する必要はありません。接続を終了する

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

1)の端部は、(ローカルネットワークまたはインターネットのどこかにあってもよい)のマシンの間で維持されています。

2)受信側で受信されるデータは、TCP内のストリームです。したがって、サーバーのネットワークプログラミングを行うときには、最初にヘッダーを解析し、ヘッダーに記載されているサイズに応じて、バッファーからずっと多くのバイト数を取得します。

3)エラーチェックとシーケンス番号はすべて完了しています。したがって、パケットが順序通りに(まれに)受信されるか、または誤って受信された場合、そのパケットは再送されます。また、フロー制御(エンドツーエンドフロー制御)には他の多くのプロトコルが必要です。接続の確立、ハンドシェイクと確認応答として

4)は、TCPは基本的にUDPよりも動作が遅くされて行われるべきである。(未大幅に私は信じている)

5)プロトコルの多くは、基礎となるトランスポートプロトコルとしてTCPを使用しています。 HTTP、FTP、TELNETなど。

6)通信手順を含む:

サーバ:: 1)ソケットを開き 2)ソケットバインド 3)ソケット 4を聞く)ソケットが 5を受け入れます)ソケットソケット接続は 3)ソケットの送信/レシーバ クライアント:: 1)ソケットを開き 2)を送信/レシーバ

他の多くの相違もありますが、上記は最も一般的なものです。

+0

受理されました。非常に素晴らしいanwser。 –

5

TCPは、パケットが確実に宛先に到達し、すべてのデータを当事者間で正確に転送しなければならないアプリケーションで使用される確実なプロトコルです。 TCPは、データ転送が開始される前に両者が接続をネゴシエートすることを要求し、意図した受信者がそのパケットを受信するまでパケットを繰り返し再送信するので、復元プロトコルです。

UDPは、転送中に一部のパケットが失われるという意味では信頼性がありません。 UDPの一部のアプリケーションは、実際にフレームを失うことができ、映画の品質を危険にさらすことができないムービーストリーミングで検出されます。 UDPは両当事者の間のバインディングを必要とせず、しばしばTCPの軽い代替手段と見なされます。

素敵なテーブルがここに発見された:TCP vs UDP

+0

パッケージワイズ配送保証は違いの1つに過ぎません。 –

1
+1

-1。 "Look on google"は、あなたができることは最悪のアンサーです。 –

+0

@ e-satis:なぜ私は関連するヒットへのリンクも追加しています。 – chris

1

This websiteがあり、おそらくUDPとTCPの実際の差に最も簡単な説明を提供しています。実装の観点からは、this questionを参照してください。

短い答え:TCPは、UDPが通常の文字のようなものであれば登録された文字のように機能します。後者では、受信者が送信したパケットを受け取ったかどうかわかりません。

+0

+1の文字の類推。 –

0

クリスが正しい! Googleから抜け出す華麗なリンクは次のとおりです。http://www.skullbox.net/tcpudp.php

+1

彼はいません。そのような文章を作る前に、SOの規則をお読みください。 Meta SOについては、何をすべきか、何もしないことについて議論が行われ、「googleでanwsersを探す」という付加価値はなく、このウェブサイトでは歓迎されません。http://meta.stackexchange.com/questions/76195 /あなたが試したことがあるGoogleのコメント –

+0

@ e-satis:私の答えは「あなたはGoogleをやったことがありますか?」とは考えられません。私は関連する文書をリンクしました、私はちょうどその内容をコピーしていませんでした。 – chris

+0

@ e-satis:OK私はあなたの意見を見ていますが、私とクリスの答えの後ろに関連するリンクがいくつかありました。これらのリンクの内容は役に立ちます。私たちが見つけたコンテンツを精緻化(圧縮)し、ここで再フォーマットすることができたので、私たちは怠け者でした。私はこれを謝罪し、広範囲に公式化された質問に答えることはおそらくここでは適切ではないことを見てください。 – fausto

2

P.R.の回答はほとんど正確ですが、不完全です。

TCPは信頼できる接続ストリームプロトコルです。データの見方は、ホスト間の双方向のバイトストリームです。少なくとも、アプリケーションが関係する限り、送信するバイトはすべて同じ順序で相手先に届きます(OSは必要に応じてパケットを並べ替えます)。

UDPは、未接続のデータグラムプロトコルです。データの見方は、個別のデータグラムやメッセージのことであり、これらのメッセージが実際に受信者に届くか、送信された順序で到着するという保証はありません。メッセージが到着した場合、そのメッセージは完全に修正されずに到着することを保証します。

関連する問題