web-dev-qa-db-ja.com

送信元アドレス/送信元ポートと宛先アドレス/宛先ポート

私はTCP/IPに不慣れで、基本を一生懸命勉強しています。ええと、ファイアウォールの受信ルールと送信ルール、および送信元アドレスポート、宛先アドレスポートの概念については本当に不思議に思います。

たとえば、ポート80を調査しています。HTTPがポート80を使用していることがわかっています。しかし、トラフィックをリッスンしようとすると、ブラウザがポート80を使用していないことがわかります。図からわかるように、宛先ポート80のみが使用され、 「宛先」は、Webページをホストするサーバーである必要があります。また、送信元ポートに使用されているポート80はありません。「送信元」は私のコンピュータである必要があります。

enter image description here

私のブラウザーは他のいくつかのポートをソースとして使用し、サーバーのポート80に移動します。それから、私のコンピューターのポート80がHttpに使用されず、Webページをホストするサーバーコンピューターのみがポート80を使用することを理解しましたが、ポートを閉じるとアウトバウンドルールからの私のコンピューターの80はインターネットが機能しません。しかし、前の図から理解したように、ポート80は私のコンピューターでは使用されていません。

本当に混乱しています。誰かが私のためにそれを明確にできますか?

6
osman

では、IPv4の詳細について見ていきましょう。各IPパケットには、送信元IPアドレスとポート、および宛先IPアドレスとポートがあります。 IPアドレスはコンピューター全体のIPアドレスであるため、コンピューターAからコンピューターBにパケットを送信するのに十分です。eMailやWebserverなどの1つのコンピューターで2つのサービスを実行している場合、IPパケットは適切なサービスに到達する必要があります。適切なサービスの選択は、ポートに基づいて行われます。

クライアントがWebサーバーやメールサーバーなどのサーバーに接続する場合、クライアントはサーバーのIPアドレスを知っている必要があります。 Webブラウザーで、サーバーのDNS名またはIPアドレスを入力します。メールクライアントでは、メールサーバーの名前を入力したのもあなたでした。したがって、クライアントがサーバーに接続したい場合、欠けているのはポートだけです。これを簡単にするために、どのポートがどのサービスに使用/予約されるかを定義する標準があります。たとえば、httpではポート80が予約されています。ウェブサーバーはポート80のみをリッスンしていますが、他のポートは無視しています。

必要に応じて、必要なポートをリッスンするようにWebサーバーを構成できます。たとえば、ポート12345にすることもできます。ただし、クライアントがhttp://ip:12345/を入力して、Webブラウザーがどのポートで接続するかを認識できるようにする必要があります。ウェブサーバー。 http://ip/を与えるだけでhttp://ip:80/のショートカットになります。

ご覧のとおり、サーバーは明確に定義されたポートで動作しており、destination = server-ip:server-portに送信されたパケットを受信し、source = server-ip:server-portでパケットを送信しています。科学側では、オペレーティングシステムが新しい接続ごとに新しいソケットを開き、そのソケットに一意の(まだ使用されていない)ポートを割り当てています。使用されるポートは関係ありません。接続を開始しているのはクライアントであり、source = client-ip:client-portのパケットをサーバーに送信します。サーバーはパケットの送信元を見ることができ、誰が彼を接続しているか、そしてどこに答えを送り返すかがわかります。

各4つのserver-ip:server-port:client-ip:client-portは、接続を一意に識別します。

クライアントは接続を発信と見なし、サーバーは接続を着信と見なします。ファイアウォールには送信ルール(パケットの送信)があり、ファイアウォールには受信ルール(パケットの受信)があります。コンピューターとの間のhttp接続をブロックする場合は、サーバーが使用しているポートのみがわかります。そのため、コンピューターでWebブラウザーをブロックする場合は、destination = port 80の拒否送信ファイアウォールルールを定義する必要があります。コンピューターで実行しているWebサーバーに接続できないように他のコンピューターをブロックする場合の場合、destination = port 80の受信ファイアウォールの拒否ルールを定義する必要があります。

あなたが求めなかったいくつかの他のもの:

  • すべてのサービスに指定/予約済みのIPポートがあるわけではありません。
  • 特別なサービス検出手順のためのプロトコルもあります。
  • (16ビット)ポートの範囲は2つの部分に分かれています。 1〜1024のポート番号は管理/システムプロセス用に予約されていますが、より大きなポート番号は誰でも使用できます。
7
Werner Henze

ポート80へのアウトバウンド接続を閉じます。アウトバウンド接続は、Google、StackOverflow、その他のウェブサイトなどのサーバーに接続されることを覚えておく必要があります。

ブラウザーはポート80で他のサーバーへの接続を作成し、ブロックすることで、その接続を行うブラウザーを停止します。

ブラウザを介してIPに接続している誰かが、ポート80(またはhttpsの場合は443)TCPの受信トラフィックとして分類されるとします。受信トラフィックに対してそのポートをブロックすると、そのポートに接続できなくなります。

ブラウザを介してIPまたはDNSレコードに接続したとします。これは、ポート80/443 TCPの発信トラフィックとして分類され、発信でそのポートをブロックすると、そのサーバーへの接続は行われません。

ポートの説明

Webサーバー用の2つの共通ポート:80および443(安全なHTTPS接続用)。

ポート0-1024は、一般的に使用される機能に使用される「予約済み」ポートです。この場合、HTTPおよびHTTPSの場合は80および443です。この Wiki エントリは、それらすべてのポートのリストと、それらのポートの「通常の」使用を示しています。これらのポートは独自に使用するためにオーバーライドできますが、多くの場合推奨されません。注:Wikiは65536まで続きますが、予約済みポート(0から1024のみ)です

OUTBOUNDルールのファイアウォールをポート80にブロックすると、ポート80へのすべての発信接続がブロックされるため、HTTP要求はすべてブロックされます。ポート80はOUTに使用されます。そして、あなたはそれをブロックしました。ただし、セキュリティで保護されたサイト(HTTPSを使用するサイト)をチェックしている場合は、OUTGOINGポート443もブロックしない限り、引き続き機能します。

ブラウザの説明

ご使用のブラウザーはWebサーバーではないため、ブラウザーには他のユーザーが接続するためのポート80オープンがありません。コンピューターでポート80を開いている場合は、Webサーバーを実行していることを確認できます。意図的にWebサーバーを実行していないが、ポート80が開いている場合は、PCでスパイウェア/ウイルス/アドウェアの可能性を確認することをお勧めします。

お使いのブラウザにランダムに見えるこれらのポート番号がある理由は、OSが出てくるすべての異なる接続を識別する方法が必要だからです。したがって、OSは、PC上のソフトウェアによって行われるすべての発信接続に対して、1024(または通常は10000を超える任意の数)を超えるランダムなポート番号を割り当てます。ポート割り当ての理由は、Webサーバー、または接続している他のサーバーから返された着信データを識別するためです。 OSは、Chromeブラウザ、またはインターネットアクセスを必要とする他のいくつかのソフトウェアのいずれにアクセスする場合でも、データを返す場所を知る必要があります。

ポート番号が65536に達すると、1025(または、OSによってランダムに設定された任意の番号)に戻り、再び増加します。

これで問題が解決することを願っています。

1
Darius