ルーターはパケットを転送する場所をどのように知るか


67

ローカルアドレス(192.168.0。#)を持つ複数のコンピューターがルーターに接続され、各コンピューターがWebブラウザーを開いてHTTP経由でページを要求する場合、これらのTCP:80パケットが送信されると、ルーターはローカルアドレスをサーバーが適切なアドレスに応答できるように、ルーターの静的IP(IPが指定されたプロバイダー)。

しかし、TCPヘッダーにはローカルIPアドレスが含まれておらず(すべてのコンピューターはポート80を使用しているため)、ルーターはどのコンピューターにHTTP応答を転送するかをどのように知るのでしょうか?

これはMACアドレスと関係がありますか?

これはどのくらい正確に機能しますか?

回答:


78

ほとんどのホームルーターは、PATと呼ばれる特別なNATを使用します。

また、NAPTまたはIPマスカレーディングとも呼ばれます。後者の3つの用語はすべて、一般的な使用において同じことを意味します。(頭字語-ネットワークアドレス変換/ポートアドレス変換/ネットワークアドレスポート変換)

パケットが内部マシンから送信されると、送信元アドレスが認識されているように書き換えられます。送信元ポートも変更され、通常は大きな番号になり、ルーターはアドレス変換テーブルを保持します。

たとえば、www.google.comにアクセスするクライアントマシンがあるとします。コンピューター(たとえば、192.168.1.100)はそのアドレスを検索し、ランダムソースポートを使用して、内部IPアドレスからポート80で72.14.204.147へのTCP接続を確立します。

コンピューターへの接続は次のようになります。

192.168.1.100:37641   <-->  72.14.204.147:80

コンピューターはパケットをルーターに送信し、ルーターは新しいランダムな高ポートを選択してパケットを書き換えます。各アウトバウンド接続は、ルーター上の独自のポートを取得します。ルーターは、パケットを接続テーブルに追加した後、ISPに転送します。

PrivateIP        PrivatePort   PublicIP      PublicPort    Remote          RemotePort
-------------    ----------    -----------   -----------   ----------      -----------
192.168.1.100    37641         *10.6.23.5    59273         72.14.204.147   80

*例として、10で始まるアドレスを使用しましたが、これらはパブリックにルーティングできません。また、テーブルはいくぶん単純化されています。

グーグルへの接続は次のようになります。

10.6.23.5:59273   <-->  72.14.204.147:80

Googleはポート59273で10.6.23.5に応答を送信します。ルーターはテーブルでその情報を検索し、パケットを192.168.1.100:37641に転送します。


3
要約すると、ルーターはポート番号を使用して、ローカルネットワークの外部からネットワークの内部に向かうものを記憶します。ただし、これはwww.google.com、最初の要求を送信しなかった場合にどのように検索されるかを説明していません。私が最初にルータを介して要求を送信した場合、他の言葉では、メッセージは、ルータを経由して私に達することができる
CodyBugstein

2
@Imray google.com(またはインターネット上の他のもの)は、コンピューターが要求を開始しなかった場合、コンピューターを見つけることができません。これが、ルーターを持つことで多くのセキュリティが追加される理由です。
ジェイソン14

6
@Jasonそれは危険な神話です。持つファイアウォールはセキュリティを追加します。典型的なSoHoルーターの仕事は、物事を機能させることであり、物事の機能を停止することではありません。Seをここに詳細については。
デビッドシュワルツ14

1
@Jasonコメントを削除しない方がいいでしょう。読む価値のある議論になりますが、読むことはできません。
barlop

2
いい例ですが、これはルーターですべての大きなポートが常に開いていることを意味しますか?
ジグガンジャー

1

ローカルネットワークとその他のインターネット間のルーターは、NATと呼ばれる手法を使用します。

TCP / IP Illustrated Volume 1のNAPTに関する抜粋、およびその単純な従兄弟であるBasic NATの短所についての言葉を以下に示します。

基本的なNATは、IPアドレスの書き換えのみを実行します。本質的に、プライベートアドレスは、多くの場合ISPによって提供されるプールまたはパブリックアドレスの範囲から、パブリックアドレスに書き換えられます。このタイプのNATは、IPアドレスの必要性を劇的に減らすのに役立たないため、最も一般的ではありません。グローバルにルーティング可能なアドレスの数は、同時にインターネットにアクセスしたい内部ホストの数以上でなければなりません。より一般的なアプローチであるNAPTでは、トランスポート層識別子(TCPおよびUDPのポート、ICMPのクエリ識別子)を使用して、NATのプライベート側のどのホストが特定のパケットに関連付けられているかを区別します(図7- 4)。これにより、多数の内部ホスト(つまり、数千)、限られた数のパブリックアドレス、多くの場合1つのパブリックアドレスを使用してインターネットに同時にアクセスします。特定のコンテキストで区別が重要でない限り、通常、NATという用語を使用して従来のNATとNAPTの両方を含めます。

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