19

NAT ルーターを介して同じ外部 IP アドレスに接続している 2 台の内部コンピューターがある場合、ルーターはどのようにしてトラフィックを正しい内部コンピューターに到達させることができますか? NAT は、[着信パケットの] 送信者の IP アドレスに最近発信パケットを送信したコンピューターに着信パケットを転送することを理解しています。両方のコンピューターが同じアドレスに送信しているため、ルーターはパケットを両方に転送しますか? その場合、どのパケットが関連しているかを判断するのはクライアント ソフトウェアの責任ですか?

両方のコンピュータが同じポートに接続しようとしている可能性はありますか?

4

6 に答える 6

40

ソケットを開くときは、宛先システムのポートをアドレス指定し、応答を受信するために自分のシステムで共役リスニングポートを開く必要があります。宛先システムにリスニングポートを送信する必要があります。

同じモデムを使用する複数のシステムがある

Webブラウザーを起動し、www.google.com:80にアクセスすると、ブラウザーは、リスニングのためにシステムから無料の非システム共役ポートを取得/検索します。コンジュゲートポートが10000であるとしましょう。リスナーポートは、Googleからhttpストリームを受信するためのものです。

次に、あなたの隣に座っているあなたの子供は、偶然にもwww.google.com:80とプレイステーションまたはxboxの彼/彼女のグーグルセッションを閲覧します-偶然にも共役ポート10000が割り当てられています。

両方ともケーブルモデムの後ろに座っており、ケーブルモデムの後ろにはワイヤレスルーターがあります。そして、両方のシステムがワイヤレスルーターの背後にあります-すべてがその順序で、ネットワークトポロジ的に座っています。

ルーター/モデムでのポートアドレスの衝突を防ぐため

ケーブル会社のDHCPがモデムのip4アドレス72.72.72.72を割り当てているとしましょう。ただし、ワイヤレスルーターDHCPは、システムに192.168.0.10を割り当て、子供のシステムに192.168.0.11を割り当てます。

リスナーポートの情報を伝送するフレームがNATルーターを通過すると、一方または両方のリスニングポートが変換されます。あなたのページのポート15000とあなたの子供のページのポート16000を考えてみましょう。

次に、ワイヤレスルーターは、72.72.72.72:15000および72.72.72.72:16000からのリクエストをGoogleサーバーに送信します。

次に、Googleサーバーは72.72.72.72:15000と72.72.72.72:16000に個別に応答し、ワイヤレスルーターが応答に遭遇すると、保存されているマッピングに到達し、72.72.72.72:15000を192.168.0.10:10000に変換します。あなたのシステムに到達しますが、あなたの子供のシステムに到達するために72.72.72.72:16000を192.168.0.11:10000に変換します。

web / game / ftp/etcサーバーの実行

ただし、システムでWebサーバーまたはFTPサーバーを実行している場合はどうでしょうか。2つのシステムがあり、両方にWebサーバーがあり、両方のWebサーバーがポート80でリッスンしている場合はどうなりますか?

最初のWebサーバーシステムのワイヤレスルーターに登録/割り当てられたローカルIPアドレスが192.168.0.30で、2番目のWebサーバーシステムが192.168.0.40であるとします。

ワイヤレスルーターには、変更しない限り、通常、デフォルトで192.168.0.1:80の構成Webページがあります。このページには、アプリケーションのポートマッピングを定義/予約できるタブがあります。

ワイヤレスルーターに登録して、マッピングを予約することができます

192.168.0.30:80 => outgoing port 8080
192.168.0.40:80 => outgoing port 8088

友達に電話をかける必要があるため、Web /ゲームサーバーはそれぞれ72.72.72.72:8080と72.72.72.72:8088を介してアドレス指定できます。この場合、ワイヤレスルーターはポート8080と8088を独自の動的NAT使用から除外します。

もちろん、72.72.72.72は、ISPDHCPがモデムのip4アドレスを72.72.90.200に更新することを決定する前と同じくらい優れています。その後、友達に電話/メールで「ねえ」と言う必要があります。サーバーのアドレスはそれぞれ72.72.90.200:8080と72.72.90.200:8088に変更されました。または、ダイナミックdns(ddns)サービスにサブスクライブして、名前付きドメインを使用することもできます。この場合、ddnsサービスでは、システムに単純なハートビートユーティリティをインストールして、アドレスの変化を監視する必要があります。DDNS変換は別の問題/戦略です。

NATモデム

新しいISP契約では、NATを備えたモデムが提供されます。その場合は、モデムまたはワイヤレスルーターのいずれかをオフにする必要があります。NATは単にアドレスの衝突を防ぐためのものであるため、両方を使用しないでください。2回変換することのポイントは何ですか。ワイヤレスルーターからNATをオフにすると、ルーターではなくハブスイッチとして機能できるようになるため、WANソケットではなくLANソケットの1つを使用してNATをモデムに接続できます。

于 2009-12-31T12:09:05.950 に答える
4

ルーターは、コンピューターごとに個別の「ソース」ポートを管理します。「宛先」のポート 80 に接続している場合、ルーターは送信元ポートを大きな番号のポートに割り当てる場合があります。

ウィキペディアはそれを次のように要約しています

ネットワーク アドレス変換には、送信元および/または宛先 IP アドレスの書き換えが含まれ、通常は IP パケットが NAT を通過する際の TCP/UDP ポート番号も書き換えられます。チェックサム (IP と TCP/UDP の両方) も、変更を考慮して書き直す必要があります。

于 2009-12-30T20:21:01.863 に答える
3

すでに適切な回答が提供されていますが、別の例を次に示します。

    HOST A addr         HOST B addr
    10.1.0.2:4040       10.1.0.3:4040
-----------------------------------------
NAT 200.50.50.28:4040   200.50.50.28:4041 (what external host sees)

200.50.50.28 はルーターのグローバル (インターネット) IP です。

すべてのポート番号は、NAT テーブルで一意です。そしてもちろん、送信元アドレスと宛先アドレスを透過的に変更するという面倒な作業はすべてルーターが行います。

于 2009-12-30T20:57:19.953 に答える
1

着信する外部トラフィックには異なるポートを使用し、NAT は 1 つのポートのパケットを 1 つの内部 IP アドレスにルーティングし、別のポートからのパケットを別の内部 IP アドレスにルーティングします...各内部コンピューターからの最初の要求が、途中でNATを通過し、外部IPアドレスからの着信トラフィックに使用されるポートを確立し、その接続のためにトラフィックを送信するポートを外部サーバーに通知します.

于 2009-12-30T20:19:47.440 に答える
0

RFC3022 は、これがどのように機能するかについて多くの情報を提供します

于 2010-01-13T18:22:13.873 に答える