web-dev-qa-db-ja.com

IP応答パケットはどのようにプライベートLAN内の宛先に到達しますか?

これはかなり長い間私を混乱させてきた小さな理論の質問です。

基本的に、私たちがプライベートLAN内にいて、着信パケットが、たとえばマシンの1つにあるHTTPサーバーに到達するようにしたい場合、着信パケットがそのコンピューターに正確に到達するようにポートを転送します。

さて、Webページを開いたときなど、「応答」パケットがLAN内の宛先に到達する方法について、私はかなり混乱しています。そのトピックに関する有用な情報は本当に見つかりません。

誰かが私にいくつかの手がかりを与えるか、それを説明するかもしれないいくつかの情報に私をリンクしてくれることを願っています。ありがとう。

編集:私は明確にすべきだと思います。私が求めていることの例は次のようなものです:
1。単一の外部IPを持つLAN内のコンピューターが、このLAN外のWebサーバーからWebページをロードしようとします(基本的にインターネット上)。
2。 Webサーバーが応答し、Webページをそのコンピューターに送り返します。

この時点で私をかなり混乱させるのは、ルーターが受信データを送信するコンピューターをどのようにして知るかです(ルーターが複数のコンピューターのあるLANに接続されている場合)。

27
InsomniaArray

質問は完全にカバーされていますが。このプロセスは、段階を追って説明するのが最も良いと思います。

この例では、ルーターを介してインターネットに接続されたプライベートLANに座っています。私たちのネットワークは単一のパブリックIPアドレスを共有しているため、NATを使用します。

したがって、ページsuperuser.comを要求すると、多くのIPパケットが生成されます。 1つだけ見てみましょう。

IPパケット
ソース:192.168.1.12(私のIP)
宛先:64.34.119.12(superuser.com)

さて、私のシステムはおそらく問題のシステムと同様にセットアップされています。私は自分のIPアドレス(192.168.1.12)、サブネットマスク(255.255.255.0)、およびデフォルトゲートウェイ192.168.1.1)を持っています。今、私のIPパケットのmyDestinationフィールドはネットワークdifferent私のものよりも、(コンピュータに直接ではなく)デフォルトゲートウェイに送信されます。

しかし、Destinationが完全に別の場所を指している場合、パケットはどのようにデフォルトゲートウェイに到達できますか?

イーサネット

イーサネットプロトコルのアドレス指定を使用しているため、これは簡単です。 Ethernet Frame の宛先として、IPパケットの宛先IPアドレスとデフォルトゲートウェイのMACアドレスを設定するだけです。

これで、デフォルトゲートウェイがsuperuser.comのパケットを取得するようになります。わーい!

これで、ゲートウェイはパケットを取得し、そのパスに直接送信できます。しかし、確実に回答を得るには、まずパケットSourceアドレスを置き換える必要があります(そうしないと、superuser.comが回答を送信しようとしますネットワーク上のmyIPアドレスを持つ一部の(おそらく)存在しないデバイスに送信します。これで、それほどうまくいきません。)
そのため、私のルーターはpublicIPアドレスをSourceフィールド:

IPパケット
ソース:92.69.127.243(私のパブリックIP)
宛先:64.34.119.12(superuser.com)

パケットが最終的にsuperuser.comに到着し、応答が生成されるまで、同じゲームが世界中のすべてのルーターで繰り返し行われます。

答え

応答IPパケット
ソース:64.34.119.12(superuser.com)
宛先:92.69.127.243(私のパブリックIP)

さて、答えは私のルーターに到達しました、今何ですか?私のルーターはどのようにして192.168.1.12に回答を送信することを知っていますか

TCP

ええと、通信のIPとイーサネットの部分しか調べていないので、これは実際に機能します。これを機能させるのはTCP=の部分です。

Webサーバーは通常ポート80で実行されることをご存じでしょう。 IPにはportsという概念はありません。それは [〜#〜] tcp [〜#〜] から来ています。 TCPには(IPのように)asourcedestinationport

My TCP superuser.comへのパケット
ソース:192.168.1.12(私のIP)
ソースポート:11111(私のコンピューターが作成したポート)
宛先:64.34.119.12(superuser.com)
宛先ポート:80

ルーターが最初のパケット(ポートsuperuser.com80宛て]を送信)を送信すると、ルーターはそこに新しいソースポート(12345など)を配置します。
そしてこれは重要な部分です!彼はその置き換えを覚えています!

ルーターのTCP superuser.comへのパケット
ソース:92.69.127.243(私のパブリックIP)
ソースポート:12345(ルーターが作成したポート)
宛先:64.34.119.12(superuser.com)
宛先ポート:80

したがって、ルーターが受信した応答パケットは、実際には次のようになります。
応答TCP superuser.comからのパケット
ソース:64.34.119.12(superuser.com)
ソースポート:80
宛先:92.69.127.243(私のパブリックIP)
宛先ポート:12345(ルーターが作成したポート)

したがって、彼はそのパケットを取得し、それがポートであることがわかります(====-)以前に記憶されていたがNAT IPアドレス192.168.1.12(私のIPアドレス)。

応答TCPルーターからのパケット
ソース:64.34.119.12(superuser.com)
ソースポート:80
宛先:192.168.1.12(私のIP)
宛先ポート:11111(私のコンピューターが作成したポート)

57
Der Hochstapler

ネットワークアドレス変換 。簡単に言えば、プライベートLANのゲートウェイルーターがプライベートLANの送信元アドレスを独自のパブリックアドレスに置き換えると、元のLANノードと発信要求にマップする一意の、またはローカルで意味のないポート番号を割り当てるなど、何らかの方法でパケットを変更します。 。このポートマッピングを記憶しているため、応答がパブリックIP /一意のポート#に戻ってきたとき、それ(ルーター)は、それを元のノードの1つにマッピング解除する方法を認識しています。これは、複数のタブ、ブラウザ、またはブラウザインスタンスを実行する方法でもあり、各ブラウザ要求への応答は正しいブラウザとタブに返されます。

11
JRobert

最初のパケットがルーターの外部インターフェイスに到着すると、ポート転送構成に従ってパケットの宛先IPアドレスを変更し、変更されたパケットを(必要に応じて通常のARPの後に)ルーターの内部インターフェイスに送信します。

パケットはWebサーバーに到達しますが、応答の宛先アドレスとして使用される外部ソースIPアドレスがまだあります。したがって、サーバーは通常の方法で、要求の送信元IPアドレスと等しい宛先IPアドレスを使用して、発信応答パケットをアドレス指定します。リクエスターのIPアドレスは外部であるため、パケットはMACレイヤーでルーターの内部インターフェースにアドレス指定されます。

ネットワーク層ごとに異なるターゲットがあることに注意してください。

0
RedGrittyBrick

ポート転送は通常、ルーターまたはそれに隣接するデバイスで行われます。 LAN上のデバイスが同じLAN上の別のデバイスにトラフィックを送信する場合、ルーターはまったく関与しません。交通はそれにさえ触れません。ポート転送ルールは、LAN-to-LANトラフィックには影響しません。

イーサネットは、各コンピュータが同じ媒体に物理的に接続される「バス」トポロジーを念頭に置いて設計されました。最新のスイッチは、ポートの反対側でMACアドレスを学習し、それに応じてトラフィックを複製することでトラフィックフローを最適化しますが、「バス」トポロジはそのまま残ります。標準スイッチに接続されているものは、ルーターなどの中間デバイスを「経由」することなく、他のもの(同じサブネット内にあると想定)に「直接」到達できます。

すべてのコンピュータを接続しているデバイスに複数の「LAN」イーサネットポートがあり、次に単一の「WAN」ポートがある場合、混乱する可能性があります。これらのタイプのデバイスは、実際には同じシャーシ内のルーターとスイッチの両方です。

したがって、LAN内でHTTPサーバーのアドレスが192.168.1.55の場合、LAN内に到達するには、ブラウザのアドレスに「 http://192.168.1.55 」と入力する必要があります。バー。ルータはそれを見ることはありません。 LANの外部に到達するには、外部IP、つまり「 http://256.99.88.77 :{転送したポート}」またはそれが何であるかを入力する必要があります。これはルーターにヒットし、ルーターのNAT関数が機能し、ルーターが192.168.1.55に送信します。

0
LawrenceC

簡単に言うと、プライベートLAN内のコンピューターが発信接続を開始すると、NATゲートウェイが自動的にそのポートマッピングを生成します。これは、以前に手動で入力したポートマッピングとほぼ同じです。 :{パブリックポート、プライベートアドレス、プライベートポート}、およびほぼ同じ方法で使用されます。ダイナミックマッピングとの最大の違いは、NATゲートウェイは多くの場合、パブリックポートを予想されるポート番号がすでに使用されている場合のマッピング。

0
Spiff