2017-12-21 9 views
3

私が理解しているように、TCPは、輻輳制御とエラー回復、またはノード間の情報の信頼性の高い配信に必要であり、情報を配信するための最速のプロトコルではありません。一部のプロトコルがIP経由で直接接続されている場合、なぜUDPが必要なのですか?

EIGRPやOSPFなどのルーティングプロトコルの中には、IPの上に直接乗るものがあります。 ICMPでもIP経由で直接乗ることができます。

なぜUDPも必要なのですか?開発者/プログラマは、パケットに含まれる宛先ポート番号に基づいて、インバウンドパケットをどのアプリケーションに送信すべきかを識別できるようにする必要がありますか?

この場合、ポート番号情報がない場合、IPの上に直接乗っているプロトコルから収集された情報は、適切なプロセスにどのように送信されますか?

なぜUDP経由で音声とビデオが送信されるのですか?直接IP上ではなぜですか?

(私は完全にTCPのユースケースを理解していますが、なぜUDP over TCPを使用するのか、その逆であるのか尋ねることはありません。 IP上のUDPの付加的な利点や目的?)

+1

他のプロトコルの場合は「プロセス」がないため、ポート番号は必要ありません。プロトコルは、IPスタック自体によって使用されます。明確に定義されたセマンティクスを持つポート指向のユーザーデータグラムプロトコルは、アプリケーションプロセスに必要です。 – EJP

答えて

1

まず、IPとUDPは異なるレイヤー上のプロトコルで、IPはUDPがtransport layerの場合は定義上のインターネットレイヤーです。ネットワークプロトコルアーキテクチャを簡素化し、懸念を分けるためにレイヤーが導入されました。アプリケーション層プロトコルは、トランスポート層に基づいていると想定されています(例外はあります)。

最も一般的なトランスポートプロトコル(IPネットワーク内)はUDPとTCPです。 TCPは豊富な機能を備えていますが、多くのトレードオフがありますが、UDPは非常にシンプルですが、多くの自由度があり、通常は他のプロトコルの基礎となります。

UDPの主な特長は、多重化です。複数のプロトコルインスタンス(別名ソケット)を同じノード上に共存させることができるポートです。つまり、UDPの代わりにIP経由で独自のプロトコルを実装すると、同じマシンに複数のプロトコルインスタンスを持つことができないか、自分で多重化を実装する必要があります。

セグメンテーションやチェックサムなどの機能があります。これらの機能は必須ではありません。

もう1つの答えでは、ルータ、NAT、ファイアウォールなどのミドルウェアがたくさんあり、独自の「IP上の権利」という考え方を崩壊させる可能性がありますが、UDPの機能。

2

は、あなたの質問は理由の面で、より理にかなって(はなぜUDPはを必要とされるよりも)UDP便利です。

UDPは、Internet Assigned Numbers Authorityによって認識されたプロトコルです。 UDPは、データグラムベースのネットワークプロトコルを作成し、インターネットデバイスでよりうまくやりたい場合に役立ちます。

ルーターは、のような意味を持たないパケットをドロップするルールを持つことができます。。したがって、1つまたは複数のルータで区切られたホスト間の未割り当てのIPプロトコル番号を使用してパケットを送信しようとすると、意図したとおりにパケットが届かないことがあります。認識されないUDPプロトコルからのパケットでも同じことが起こる可能性がありますが、パケットが通過できるかどうかを心配することは少なくなります。

インターネットエンドポイント(ホストなど)も同様のフィルタリングを行う可能性があります。独自のデータグラムベースのプロトコルを作成し、一般的なホストオペレーティングシステムを使用する場合は、カーネル拡張機能ではなく、特権プロセスとしてソフトウェアを書く必要があります。 IPプロトコル(UDPを使用する場合よりも)。

この回答は役に立ちましたか?

関連する問題