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


26

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

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

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

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

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

この時点で非常に混乱するのは、以前のポート転送なしで、ルーターがどのコンピューターから着信データを送信するのかを知る方法です(ルーターが複数のコンピューターでLANに接続されている場合)。


:ちょうどトピックに関する素敵なビデオを見Computerphile -ネットワークアドレス変換
デアHochstapler

回答:


56

質問は完全にカバーされていますが。このプロセスは、ステップごとに説明するのが最適だと思います。

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

したがって、superuser.com多くのIPパケットを生成するページを要求すると。単一のものを見てみましょう。

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パケットのDestinationフィールドは自分のネットワーク異なるネットワークを指しているため、(コンピューターに直接ではなく)デフォルトゲートウェイに送信されます。

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

イーサネット

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

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

これでゲートウェイはパケットを取得し、パス上でパケットを送信できます。しかし、確実に答えを得るために、最初にパケットの送信アドレスを置き換える必要があります(そうしないsuperuser.comと、ネットワーク上のIPアドレスを使用し(おそらく)存在しないデバイスに答えを送信しようとします。)非常にいいです。)
だから私のルーターはソースフィールドにパブリック IPアドレスを配置します:

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サーバーは通常portで実行されることをご存じでしょう80。IPにはポートの概念がありません。それはTCPから来ています。TCPには(IPのように)送信元ポート宛先 ポートがあります

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

ルーターが(superuser.comportでアドレス指定された80)最初のパケットを送信すると、新しいソースポートがそこに置かれます(など12345)。
そして、これは重要な部分です!彼はその交換を覚えているでしょう!

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

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

そのため、彼はそのパケットを取得し、以前に記憶していたIPアドレス192.168.1.12(自分のIPアドレス)のNAT操作に割り当てられたポート用であることを確認します。

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


1
私はあなたの答えを編集しましたが、ポート番号に何が起こっているかを明確に示していませんでした。中間ステップと各ステップのポート番号にさらに例を追加しました。
スコットチェンバレン

1
@OliverSalzburg私は答えられた同じ質問を探していました、そして、あなたの説明は私が思い出すのを助けました、これに関する簡単な質問。ルーターがこの逆マッピング(ソースポート)をどれだけ長く保持するのか疑問に思うのは、非常に多くの要求に対してこれを実行し続けるとスペースが足りなくなるように感じますが、定期的にそれらをフラッシュしますか?
アーメド

@Ahmed:その情報を追跡するメモリの量は限られています。65536の可能なポート番号があり、それらは2バイトで保存されます。したがって、各ポートのIPアドレス(4バイト)を覚えておくと、合計で65536 x 4バイト= 262144バイト= 256 kBになります。ただし、詳細はルーターに実装されているため、メモリはそれほど多くありません。
デアホッホステープラー

@Oliverすばらしい答え、まさに私が探していたものです!いくつか質問があります-(1)「世界中のすべてのルーターで同じゲームが続けられている」 -それは正確ですか?確かに、ソースフィールドは各ステップで置換され続けませんか?(2)ルーターは開いたポートを長期的に記憶していますか、または応答しない要求のために定期的にドロップしますか?(3)これは、ハッカーが中間者攻撃でルーターのファイアウォールを通過してパケットを取得できることを意味しますか?発信TCPパケットをスヌーピングし、宛先に一致するスプーフィングされたソースIPでルーターの開いているTCPポートをターゲットにしますか?
ジョンベントレー

1
ICMP ping応答は、LAN内のコンピューターにどのように返されますか?TCPのポートに似たものがありますか?他のプロトコルはどうですか?
ジャン

11

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


2
JRobert:tcpまたはudp以外の、ポート番号を持たないIPプロトコル(ICMPなど)はどうですか?
ウリ14年

0

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

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

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


0

ポート転送は通常、ルーターまたはそれに隣接するデバイスで行われます。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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.