web-dev-qa-db-ja.com

ポートの目的は何ですか?

私が見つけたポートの説明に従う に関していくつか質問があります。

アプリケーション層は、ポートを介してトランスポート層と通信します。ポートには番号が付けられており、標準アプリケーションは常に同じポートを使用します。

ポート番号を使用すると、トランスポートプロトコル(通常はTCP)がパケット内のコンテンツの種類を知ることができ、受信側で、受信したデータをどのアプリケーションプロトコルに配信するかを知ることができます。

  • 絶対的な保証がないのに、なぜポート番号を使用して、内部にどのような種類のアプリケーションデータプロトコルが存在するかを示すのですか?

    私の理解では、ポートを介して送信するアプリケーションデータの種類に制限はありません(これは単なる提案です)。さらに、この目的のために、プロトコルデータはパケットのどこかにすでに含まれていませんか?

  • また、HTTPまたはその他の種類のプロトコルをポート25(SMTPを想定)の宛先に送信すると、データはどうなりますか?

  • 第3に、どのプログラムにもバインドされていないためにリッスンされていないポートにデータを送信すると、データはどうなりますか?

  • **最後に、ポートを1つのプログラムにしかバインドできない場合、着信HTTPデータに依存する複数のプログラムをコンピューターで同時に実行するにはどうすればよいですか?****

前もって感謝します!

4
Griffin

絶対的な保証がないのに、ポート番号を使用して、内部に存在するアプリケーションデータプロトコルの種類を示すのはなぜですか?

推測は物事を実行するためのひどい方法であり、たとえば、悪意のある誰かがとにかく間違ったものを送信するのを止める方法はありません。だから、みんながニースをプレイしている場合に役立ち、何も悪化させません。

私の理解では、ポートを介して送信するアプリケーションデータの種類に制限はありません(これは単なる提案です)。

正しい。実際、それは提案ではなく、多くの人々がたまたま共有する合意にすぎません。

さらに、この目的のために、プロトコルデータはパケットのどこかにすでに含まれていませんか?

いいえ。少なくとも、ポートが通常示すレベルではありません。送信されている高レベルのIPプロトコルの種類(TCP、UDPなど)はわかっていますが、その内容(HTTP、SMTPなど)はわかりません。 。

また、HTTPまたはその他の種類のプロトコルをポート25(SMTPを想定)の宛先に送信すると、データはどうなりますか?

TCPは、データをアプリケーション層に渡すだけです。アプリケーション層は、必要なことを何でも実行できます。ほとんどの場合、エラーが発生するだけです。悪用可能なセキュリティホールが発生することがあります。

ポートにSSLを使用しない場合に、一部のHTTPSサーバーで発生するプレーンテキストのHTTPエラーなど、誤ったクライアントに対して適切な動作が得られる場合があります。

第三に、どのプログラムにもバインドされていないためにリッスンされていないポートにデータを送信すると、データはどうなりますか?

受信システムからICMPエラーメッセージが表示されます。技術的には、受信者は好きなことを何でもできますが、実際にはそれが起こります。

最後に、ポートを1つのプログラムにしかバインドできない場合、着信HTTPデータに依存する複数のプログラムをコンピューターで同時に実行するにはどうすればよいでしょうか。

ブラウザがリモートサーバーにHTTP接続を確立すると、ランダムなローカルポートを使用し、リモートサーバーの既知のポート(80または443)と通信します。この場合、は個別のアウトバウンド接続ごとに一意です。 (ただし、技術的には、サーバーの場合のように、そうである必要はありません。)

サーバー側では、リッスンすると、ポートで新しい接続を受け入れることができるプロセスは1つだけですが(Unix/BSDソケットの場合)、確立された接続を他のプロセスに渡してサービスを提供できます。セットは一意であるため、トラフィックを適切な接続にルーティングできます。

16
Daniel Pittman