ルーターはどのようにして接続を追跡するのでしょうか? HTTP リクエストを送信すると、リクエストはルーターに送信され、そこからインターネット経由で別のルーターなどに送信されます。しかし、サーバーへの送信先をどのようにして知るのでしょうか。ロード バランサーにポート転送されるのでしょうか? 最後に、パケットが戻ってきたときに、パケットは PC ではなくルーターに送り返されたため、どのようにして PC への送信先を知るのでしょうか? ルーターによって制御される PC への接続を、そのルーターの外部から確立することは可能ですか? つまり、インターネットに直接接続されていない PC にパケットを送信できますか?
答え1
私は、このようなことを探している誰かの役に立ちたいと思い、この古い質問に答えようとしています。また、間違いがあったら教えてください。
コンピュータからインターネット上の Web サーバーに情報が流れるためには、さまざまなコンポーネント、デバイス、アルゴリズムが関係しますが、ここではこれを可能にするネットワーク アルゴリズムに焦点を当てます。
コンピュータとインターネット Web サーバー間の情報の流れを可能にする上で、最も大きな役割を果たすインターネット テクノロジは主に 2 つあると私は考えています。それは、ルーティング プロトコルと NAT です。
ルーティング プロトコルと NAT が動作するデータの単位である IP パケットに焦点を当てます。
- ブラウザからインターネットサーバーに送信されたIPパケットがホームルーターに到達すると、検査され、送信元IPが元の送信者のローカルLAN IPからホームルーターのパブリックIPに変更され、宛先IPにルーティングされます。この変換は、接続テーブル。これはNATの仕事だ。
- 宛先がルーターのパブリック IP のネットワークの一部である場合、パケットはその IP に送信され、そうでない場合はルーティング テーブルで一致するかどうかが評価されます。ルーターが一致するものを見つけられない場合、パケットはルーターのデフォルト ゲートウェイに転送されます。このプロセスは、ルーターが最終的に一致するものを見つけるまで続きます。ここでルーティングプロトコルが役立ちます。
- ルートが見つからない場合、ICMP 宛先到達不能 - ホスト到達不能メッセージが送信元ホストに送信されます。
- 最終ホストが見つかると、IP パケットを受け入れてカプセル化を解除し、そこに含まれる要求を処理して応答を送り返します。応答の宛先 IP には、送信元ルーターの IP が含まれます。
- 応答は、送信元に到達するまで、要求と同じプロセスに従います。パケットが特定のルートで宛先に到達する場合、必ずしも同じルートで戻る必要はないことに注意してください。
- 宛先のインターネット IP に到達すると、ルータは着信トラフィックを接続テーブルと照合し、逆変換を実行して、パケットを適切なマシンに転送します。
これは、IP パケットがブラウザからターゲット Web サーバーに流れる仕組みです。
- 開いたページはページを構築するために 4 つの異なるリクエストを使用したと思われるため、接続は 4 つあります。
- 接続を開始するクライアントは、利用可能なソース ポートを使用できます。このポートは、両方のマシンが接続を閉じることに同意するまで、一時的に使用するために予約されます。IANA は、これらのいわゆる「一時ポート」に 49152 ~ 65535 の範囲を使用することを推奨しています。Web サーバーは通常、HTTP トラフィックのデフォルト ポートであるポート 80 で実行されるため、クライアントは Web ページを表示するための要求をそのポートに送信します。
- ホーム ルーターのスイムレーンには、ルーターの接続テーブルのスナップショットが表示されます。
- SuperUser サーバーのスイムレーンには、サーバーと確立された接続のスナップショットが表示されます。
接続テーブルは、主に送信元IP、送信元ポート、宛先IP、宛先ポートの組み合わせを使用して一意性を保証します。明らかに、一意性を決定する最も重要な要素は送信元ポートであるため、別の内部ホストが既存の送信元ポートを使用しようとすると、ルータはそのポートを変更し、その変更を接続テーブルに記録します。
これで、この質問以外のすべての質問に答えられるはずです。ルーターの外部から、ルーターによって制御される PC への接続を確立することは可能ですか? つまり、インターネットに直接接続されていない PC にパケットを送信できますか?
特定のインターネット IP に対してルーターで使用されている NAT ポートを知っていて、ルーターの NAT ポートが開いている間に IP パケットを偽装してルーターに送信できる場合は、理論的には可能であるはずですが、ほとんどのルーターは IP パケットの一意性と信頼性を識別するためにさらに多くのパラメータを使用していると確信しています。
私は回答を作成するために以下の参考資料を使用しました。
答え2
簡単に言えば、ルータはゲートウェイまたはインターフェースを介してネットワークを接続します。
Do I know where this packet should go?
yes - is it one of mine?
yes - send to appropriate interface.
no - send on to next gateway
no - return a packet saying unreachable
家庭用ルーターは接続追跡ソフトウェアを実行し、ネットワーク上のマシンがインターネット上で通信した接続のリストを保持します。これにより、応答を返すアドレスとポートがわかります。
TCP パケットには、元のマシンのアドレスを含めることができる特別なフィールドがあります。ルーターはマスカレードと呼ばれるものを使用して返信アドレスを挿入し、宛先マシンにもそのアドレスを含めます。これにより、接続トラッカーの作業が少し軽減されますが、内部 IP アドレスがリモート サーバーに公開されることになります。
一方、UDP パケットを返す場合は、ルーターの接続トラッカー モジュールを利用して元のマシンに応答を返します。これは数年前まで解決が難しい問題でした。
新しい着信接続は接続トラッカーにエントリがないため、その種類のパケットに特定の転送指示が与えられない限り、ルータはどこに送信すればよいかわかりません。また、すべてのルータには、たとえばポート 80 の新しい要求を受信するネットワーク上のマシンを指定できる方法があります。
TCP は複雑で驚くべき状態駆動型プロトコルです。パケットは同じルートをたどる必要はなく、小さな断片に分割でき、順序に関係なく到着し、エラー訂正により個々のパケットの再送信が要求されます。パフォーマンスに影響するほど大きな問題でない限り、両端のアプリケーションは問題に気付かずにデータ ストリームを再構成できます。多くの博士号が TCP を通じて取得されています。
答え3
ルーティングを理解するには、まずOSIモデルまた、以下のことを理解しておく必要がありますCIDR。
これはかなり基本的なことです:
パケットが標準的なホーム ネットワーク上のコンピューターから送信されると、コンピューターはそれがプライベート ネットワークであることを認識し、CIDR により最終宛先がネットワーク外であることを理解して、パケットをデフォルト ゲートウェイに送信します。デフォルト ゲートウェイは IP を確認し、パケットがターゲット ネットワークに到達するまでルーターのチェーンに送信します (パケット ヘッダーの IP 情報に基づく)。その後、そのゲートウェイはネットワーク上の適切な IP にパケットを転送します (遠端のサーバー/ネットワークによっては、パケットの詳細のポートに基づく場合もあれば、IP のみに基づく場合もあります)。要求された情報が返送されると、ルーターはセッションをマークするために選択されたポートに基づいて、パケットがどのコンピューターに送信されたかを認識し、そのセッションがどのプライベート IP に属しているかを認識します。これ以外にも多くのことが含まれますが、これはルーティングの概念を理解するためのかなり高度な説明です。他の人がこれを訂正したり、追加したりすると思います。
質問に対する答えは、はい、可能です。エンドポイントのパブリック IP と接続に必要なポートだけを知っておく必要があります。ルーターは、プライベート ネットワーク上のサーバーに到達するためにどのコンピューターにそのポートを転送するかを知る責任があります (NAT ルールに基づく)。
答え4
私がこれを正しく理解しているかどうかはわかりませんが、できるだけ正確に推測してお答えします。「ルーターで制御されている PC への接続を確立することは可能ですか?」と質問されていますが、リモート アクセスについて言及されているものと思います。vnc やリモート デスクトップなどを使用できます。インターネット経由で接続された 2 台の PC についておっしゃっている場合は、VPN を調べてください。一方が他方から IP を割り当てることを意味している場合は、サーバー/クライアント接続となり、WAN 経由では VPN のようなものになります。
TCP パケットには、パケット内に LAN 宛先への情報が含まれています。