IP とルーティング
IPアドレッシングとルーティングが、相互接続されたネットワーク間でパケットをどのように移動させ、インターネット上の正しい宛先に到達させるか。
IPアドレスとは何か?
- IPアドレスによって、ルーターはネットワークをまたいでデータをどこへ送るべきかを判断できます。
- これはネットワークによって割り当てられ、別のネットワークに移動すると変わることがあります。
- その構造により、インターネットは数十億台のデバイスへ効率的に拡張できます。
詳細
Webサイトにアクセスすると、DNS がドメイン名を IPアドレスに変換します。その IPアドレスによって、インターネットは目的のデバイスがどこにあるかを知ることができます。
ルーターはドメイン名を理解しません。IPアドレスに基づいてパケットを転送します。インターネットを流れるすべてのパケットには、送信元 IP と宛先 IP が含まれています。
IPアドレスには構造があります。一部はより広いネットワークを識別し、もう一部はそのネットワーク内の特定のデバイスを識別します。この構造により、ルーターは世界中のすべてのデバイスごとに経路を保持するのではなく、効率的に転送判断を行えます。
MACアドレス(ハードウェアに結び付いているもの)とは異なり、IPアドレスは論理的です。これはネットワークによって割り当てられ、別の場所に接続すると変わることがあります。たとえば、自宅の Wi-Fi からカフェのネットワークに切り替える場合です。
この「構造」と「柔軟性」の組み合わせこそが、インターネットを世界規模で拡張しながら、なお管理可能にしている理由です。
パブリック IP とプライベート IP
プライベートIPのトラフィックがルーターに入り、NATがそれを書き換え、パブリックIPで外へ出ます。
- プライベート IP は家庭、学校、企業内で使用され、パブリックインターネット上ではルーティングされません。
- パブリック IP は世界中で一意であり、どこからでもデバイスやサービスに到達できます。
- ルーターは NAT を使用して、送信トラフィックのプライベートアドレスをパブリックアドレスに変換します。
詳細
10.x.x.x、172.16.x.x–172.31.x.x、192.168.x.x のようなプライベート IP 範囲は、内部ネットワークでの使用のために予約されています。これらはグローバルインターネット上では見えないため、何百万もの別々のネットワークが同じ範囲を再利用できます。
一方、パブリック IP アドレスはグローバルに一意である必要があります。これらはインターネット管理機関によって割り当てられ、インターネット上で直接通信するために必要です。
一般的な家庭内ネットワークでは、デバイスは内部でプライベート IP アドレスを使用します。インターネットへトラフィックを送信するとき、家庭用ルーターは Network Address Translation (NAT) を実行し、プライベートな送信元 IP をルーターのパブリック IP に置き換えます。
この変換により、複数の内部デバイスが 1 つのパブリックアドレスを共有しながら、適切な戻り経路を維持できます。
ルーティングとは何か?
Network A
ルーター1
ルーター2
宛先
各ルーターは宛先IPのみを個別に確認し、パケットを次のネットワークホップへ転送します。
- ルーターは別々のネットワークを接続し、その間でパケットを移動させます。
- 転送の判断は宛先 IP アドレスを使って行われます。
- ルーターはネットワーク層で動作し、HTTP のようなアプリケーション層のデータは無視します。
詳細
ルーターの役割は狭いですが重要です。受信したパケットの宛先 IP アドレスを調べ、次にどこへ送るかを決定します。
ルーターは異なるネットワーク同士を接続し、トラフィックが単一のローカルセグメントを超えて移動できるようにします。ルーターがなければ、通信は 1 つの孤立したネットワーク内に限定されます。
重要なのは、ルーターはアプリケーションデータを解釈しないことです。HTTP ヘッダーを読んだり、そのパケットが Web リクエスト、動画ストリーム、ファイル転送のどれを含んでいるかを理解したりはしません。
レイヤー 3 では、重要なのは IP の宛先だけです。ルーターは、1 ホップずつパケットを目的のネットワークへ転送します。
ルーティングテーブル
複数の経路が一致する場合があります。ルーターは最も具体的なネットワーク、つまり最長プレフィックスを選択します。
- ルーティングテーブルは、宛先ネットワークを次ホップルーターに対応付けます。
- パケットが到着すると、ルーターは最もよく一致するネットワークエントリを検索します。
- ルーターは、最長プレフィックスのロジックを使って、最も具体的な一致を優先します。
詳細
ルーティングテーブルは、基本的には判断表です。各エントリには次のように書かれています: 宛先がこのネットワークに属する場合は、この次ホップへ転送する。
パケットが到着すると、ルーターは宛先 IP アドレスをテーブル内のすべての既知のネットワークエントリと比較します。
複数のエントリが一致する場合、ルーターは最も具体的なものを選択します。これを 最長プレフィックス一致 と呼びます。概念的には、より小さく、より正確なネットワークを表すルートが、広い範囲を表すルートより優先されるという意味です。
たとえば、1つのルートが組織全体をカバーし、別のルートが特定の部署のサブネットをカバーしている場合、ルーターはより正確な経路を選びます。これにより、ルーティングの正確性と効率が保たれます。
パケットがインターネットをどのように移動するか
- パケットは送信元から受信先へ直接ではなく、複数のルーターを通って移動します。
- 各ルーターは、目的地のネットワークに向けて一歩ずつ転送します。
- 全体の経路は、多くの独立したルーティング判断の結果として決まります。
詳細
ニューヨークのクライアントがカリフォルニアのサーバーにリクエストを送る場面を想像してください。
パケットはまずクライアント端末を離れ、ローカルルーター(多くの場合、自宅やオフィスのゲートウェイ)に到達します。そこから、インターネットサービスプロバイダーのネットワークに入ります。
ISPの内部では、パケットは大量のトラフィックを処理するために設計された大規模なバックボーンルーターを通って移動します。途中で、複数の中継ルーターを経由しながら、地域ネットワークや国内ネットワークを横断することがあります。
やがてパケットは、サーバーのIPアドレスを所有する宛先ネットワークに到達します。最後のルーターがそれをサーバー本体へ転送します。
1台のルーターが旅全体を把握しているわけではありません。各ルーターが知っているのは、次に進むべき最適な一歩だけです。
TTL(Time To Live)とは何か?
- TTL は IP ヘッダー内のフィールドで、あらかじめ設定された数値から始まります。
- 各ルーターは、ホップごとに TTL を 1 減らします。
- TTL が 0 になると、パケットは破棄されます。
詳細
TTL (Time To Live) は、すべての IP パケットに組み込まれている安全機構です。
パケットが作成されると、初期 TTL 値が割り当てられます(通常はオペレーティングシステムに応じて 64 または 128 です)。パケットがルーターを通過するたびに、そのルーターは TTL を 1 減らします。
TTL が宛先に到達する前に 0 になると、ルーターはそのパケットを破棄し、通常はエラーメッセージを返します。
この仕組みにより、無限のルーティングループを防げます。ルーターの設定ミスや一時的なループが発生しても、TTL によって最終的に期限切れになるため、パケットが永遠に循環することはありません。
TTL がなければ、ルーティングの誤りによって帯域幅が際限なく消費され、ネットワークの広い範囲が不安定になる可能性があります。
一般的なネットワーク層の障害
- 宛先 IP が正しくないと、「no route to host」が発生することがあります。
- ルーティングテーブルの設定ミスにより、トラフィックが誤った次ホップに送られることがあります。
- TTL が宛先に到達する前に切れると、パケットが破棄されることがあります。
詳細
パケットが誤った IP や存在しないネットワーク宛てになっている場合、ルーターは有効な経路を見つけられません。その結果、アプリケーション層が関与する前に失敗します。
ルーティングテーブルの設定ミスも、よくある原因です。ルーターがトラフィックを誤った次ホップに向けていると、パケットは誤送されるか、完全に失われることがあります。
TTL の期限切れも、パケット破棄の原因になります。パケットがあまりにも多くのホップを通過すると、たとえば非効率なルーティングやループが原因で、到達前に破棄されます。
より深刻な障害として、ネットワーク分断があります。これは、障害や物理リンクの故障によってネットワークの2つのセグメントが切り離される状態です。この場合、そもそも経路が存在しません。
ネットワーク層では、障害とは単純に1つのことを意味します。つまり、パケットを宛先へ転送できないということです。
IP と TCP の責任
TCPは配信を監視し、失われたセグメントを再送します。
IPはベストエフォートでパケットを転送します。失われたパケットはここでは回復されません。
- IP は、到着や順序について保証のないベストエフォート配送を提供します。
- IP は失われたパケットの再送や輻輳制御を行いません。
- TCP は、確認応答と再送によって IP の上に信頼性を構築します。
詳細
IP はネットワーク層で動作し、送信元から宛先へパケットを運ぶことだけに集中します。パケットが到着すること、1 回だけ到着すること、正しい順序で到着することは保証しません。
輻輳やルーティングの問題でパケットが失われても、IP はそれを回復しません。単にベストエフォートで配送を試みるだけです。
TCP は IP の上で動作するトランスポート層のプロトコルです。接続を確立し、セグメントにシーケンス番号を割り当て、確認応答を待ち、必要に応じてデータを再送します。
TCP は順序どおりの配送も保証し、フロー制御と輻輳制御も管理します。要するに、IP はパケットを届け、TCP はそれらのパケットを信頼できる通信に変えます。
IP はステートレス
- IP はパケット間でセッション状態や接続状態を保持しません。
- 同じアプリケーション要求に属していても、各パケットは独立してルーティングされます。
- ネットワーク層では、パケットの順序は保持されません。
詳細
IP は本質的にステートレスです。ルーターは会話、セッション、アプリケーションのコンテキストを追跡しません。
パケットがルーターに到着すると、ルーターは宛先 IP アドレスだけを見て、ルーティングテーブルに基づいて転送します。以前のパケットがどこへ行ったか、あるいは前のパケットが成功したかどうかは記憶しません。
そのため、同じ要求に属するパケットでも、インターネット上で異なる経路をたどることがあります。順不同で到着したり、一部が完全に失われたりすることもあります。
このステートレスな設計により、ルーターは高速でスケーラブルになります。すべてのルーターで接続ごとのメモリを保持すると、グローバルなインターネットは大幅に遅くなり、より複雑になります。
トレードオフとして、信頼性と順序の保証は IP 自体ではなく、より上位の層で処理する必要があります。
質問セクション
1 / 5