web-dev-qa-db-ja.com

ルーターはどのようにしてパケットの宛先を決定しますか?

ネットワークに関する基本的な質問があります。 2台のPCがWLANで通信しています。両方のPCは、ルーターまたはモデムの背後にあります。

両方のPCは同じパブリックIPを持っています。そのパブリックIPは、ほとんどの場合、ルーターまたはモデムのいずれかです。これらのルーターとモデムの背後には、複数のPCが存在する可能性があります。 PCはどのように通信していますか?パケットがそれらのルーターやモデム、そしてインターネットに到達する可能性があることは理解できますが、その後はどうなるでしょうか。パケットでは、宛先IPがパブリックIPとして設定されています。パケットが戻ってきたとき、ルーターまたはモデムはどのようにしてパケットの送信先を決定しますか?誰かが私にこれを説明してもらえますか?.

5
user58859

このミステリーの背後にあるメカニズムのほとんどは NAT-マスカレード

  • あなたのPCは外部と通信します

たとえば、PCはIP10.1.2.3のプライベートネットワーク上にあります。
ルーターはPCのIP /ポートを記憶しており、リモートIP /ポート(WAN)への接続を初期化しました。したがって、同じチャネルに応答がある場合、ルータはパケットをLAN側のPCに転送します。

  • 外部デバイスがPCと通信します

この場合、内線。デバイスは接続を初期化します。したがって、ルーターは、パケットを転送することになっている10.x.x.xクライアントを認識しません。
これが、たとえばPCがWebサーバー(httpポート)である場合など、ルーターに特定の設定が必要な理由です。

  HTTP (WAN) ==> (LAN) 10.1.2.3:80

つまり、HTTPポートに着信するパケットは、ポート80の内部LANアドレス10.1.2.3(PC)に送信されます。

4
Ring Ø

基本的なセットアップでは、デバイスは常にネクストホップのみを認識します。これは、目的の宛先へのネクストホップも知っているだけです。宛先がホスト/ルーターに対してローカルでない場合は、パケットをデフォルトゲートウェイなどに送信します。

より複雑な状況では、特定のネットワーク宛先の明示的なゲートウェイを指す静的ルートを持つことができます。

これらのルートを手動で管理するには複雑すぎる場合は、動的ルート配布プロトコルが次のように使用されます [〜#〜] rip [〜#〜]

さらに複雑なプロトコルは、( AS番号 を介して)IPブロックのグローバルな配布について詳しく知っており、コストと距離でパケットをルーティングする場所を決定しようとします。例は [〜#〜] bgp [〜#〜] および [〜#〜] ospf [〜#〜]

0
lepole

私はあなたの「ほとんどの場合」に少し戸惑っています:それは常にまたは決してないかのどちらかだと思います。 PCのパブリックIPが常にルーター/モデムと一致している場合、ローカルネットワークはNATを使用して、ローカルネットワークの外部からPCにアクセスできるようにします。=>最初の回答を参照してください。

PCのパブリックIPがルーター/モデムと一致しない場合、ローカルネットワークはWAN(邪魔になる可能性のあるファイアウォールを無視した場合)から直接アクセスできます)= > 2番目の回答を参照

ルーティングがどのように機能するかを理解し始めたばかりの場合は、おそらく最初に後者のシナリオに集中し、次のように単純化する必要があります。

PC1 <-LAN1-> Router1 <-WAN_link-> Router2 <-LAN2-> PC2 

(周りに他に何もないように)

0
bitwelder

良い質問。実際にはいくつかの戦略がありますが、基本的にルーターはすべてのNAT接続(クライアントポート、クライアントIP、宛先IP、宛先ポート)のテーブルを保持します。リターンパケットが戻ってくると、パケットの送信元とポートに基づいて、転送先のクライアントと一致します。

ほとんどのNAT実装はPAT(ポートアドレス変換実装)でもあり、2つのクライアントが同じ送信元ポートを選択するのを防ぎます。

一部のルーター、例: Ciscoデバイスは、セキュリティ上の理由からシーケンス番号のランダム化を行います。これは、NATの背後にあるクライアントの数とタイプを隠すのに役立ちます。また、シーケンス番号を標的とするタイプ攻撃からクライアントを保護しようとしたり、次の接続のために次のシーケンス番号を推測したりすることもできます。

0