| この記事の要点 |
|
概要
ルーティングとは、IP パケットを宛先のネットワークまで届けるために、「どの方向(どの出口)へ転送すればよいか」を選ぶ処理のことです。OSI 参照モデルではネットワーク層(レイヤ 3)の機能にあたり、この役割を担う装置がルータです。手元の端末から遠く離れたサーバへ通信が届くのは、途中にある複数のルータが「次はこちらへ送ればよい」とパケットをバケツリレーのように中継しているからです。
各ルータは自分が知っている経路情報をルーティングテーブル(経路表)として保持しています。パケットを受け取るたびに宛先 IP アドレスをこの表と照合し、最適な転送先を決めます。インターネット全体は、無数のルータがそれぞれのテーブルに従って局所的な判断を繰り返すことで成り立っている、巨大な分散システムだと言えます。
仕組み
ルーティングテーブルの 1 行(エントリ)は、おおむね次の要素で構成されます。
- 宛先ネットワーク — どのネットワーク宛てのパケットに適用するか。
192.168.10.0/24のようにプレフィックス長付きで表します。 - ネクストホップ — そのネットワークへ向かうために次に渡す相手ルータの IP アドレス。直接つながっている場合は「直接接続(directly connected)」となります。
- 出力インタフェース — パケットを送り出す自分側のポート。
- メトリック — 経路のコスト(良し悪し)を示す数値。同じ宛先への経路が複数あるとき、より小さい値が選ばれます。
ルータがパケットを受け取ると、宛先 IP がどのエントリの宛先ネットワークに含まれるかを調べます。複数のエントリに一致した場合は、ロンゲストマッチ(最長プレフィックス一致)の原則に従い、最も具体的な(プレフィックス長が長い)経路を選びます。たとえば 10.1.2.5 宛てのパケットに対して 10.0.0.0/8 と 10.1.2.0/24 の両方が一致するなら、より長い /24 の経路が採用されます。
宛先 10.1.2.5 へのパケット
ルーティングテーブル
宛先ネットワーク ネクストホップ メトリック 一致?
0.0.0.0/0 203.0.113.1 1 〇 (/0)
10.0.0.0/8 172.16.0.1 5 〇 (/8)
10.1.2.0/24 172.16.0.9 2 〇 (/24) ← 最長一致で採用
設定・実用例
Linux でルーティングテーブルを確認するには ip route コマンドを使います。各端末も「自分が直接通信できる範囲」と「それ以外はどこへ渡すか」という小さなルーティングテーブルを持っています。
# Linux: ルーティングテーブルの表示
$ ip route
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.20
# 特定の宛先がどの経路で送られるかを確認
$ ip route get 8.8.8.8
8.8.8.8 via 192.168.1.1 dev eth0 src 192.168.1.20
# Cisco IOS: ルーティングテーブルの表示
Router# show ip route
C 192.168.1.0/24 is directly connected, GigabitEthernet0/0
S* 0.0.0.0/0 [1/0] via 192.168.1.1
上の例で default(= 0.0.0.0/0)は「テーブルに該当がない宛先はすべてここへ送る」というデフォルト経路です。192.168.1.0/24 は直接接続されたネットワークで、同一セグメント内の端末へはルータを介さず直接届きます。
主な用途
- ネットワーク間の相互接続 — 社内 LAN とインターネット、拠点間 VPN など、異なるネットワークをつなぐすべての通信でルーティングが使われます。
- 経路の最適化 — 複数の経路があるとき、メトリックに基づいて最短・最良の経路を選びます。
- 冗長化とフェイルオーバー — 主経路が落ちたら代替経路へ自動的に切り替え、通信を継続します。
- トラフィック制御 — 宛先ごとに通る道を分け、帯域や用途に応じた経路設計を行います。
関連技術との比較
| 項目 | ルーティング(L3) | スイッチング(L2) | ブリッジング(L2) |
|---|---|---|---|
| 動作レイヤ | ネットワーク層 | データリンク層 | データリンク層 |
| 判断に使う情報 | 宛先 IP アドレス | 宛先 MAC アドレス | 宛先 MAC アドレス |
| 参照する表 | ルーティングテーブル | MAC アドレステーブル | 転送テーブル |
| ネットワークをまたぐ | できる | 同一ネットワーク内のみ | 同一ネットワーク内のみ |
| ブロードキャスト | 分割(通さない) | 同一 VLAN 内に転送 | 転送する |
注意点・落とし穴
- 経路の不整合(ブラックホール) — 行きと帰りの経路設定が食い違うと、パケットが届いても応答が返らず通信が片方向で失敗します。
- ルーティングループ — 設定ミスや動的プロトコルの収束途中で、パケットが同じルータ間を行き来し続けることがあります。TTL の減算でいずれ破棄されますが、通信は失敗します。
- デフォルト経路の欠落 — 直接接続以外の宛先へ送れず、インターネットに到達できなくなります。
- メトリックの単位はプロトコルごとに異なる — ホップ数・帯域・遅延など基準が違うため、異なるプロトコル間で単純に値を比較してはいけません。
関連リンク
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- djangoのテンプレートの作成とヘッダー・フッターの共通化 2026-10-03 21:41:49
- テンプレートフラグメント(ヘッダー等の共有化) 2026-10-03 21:41:49
- reCAPTCHA v3 使い方(サンプル付き) 2026-10-03 21:37:05
- Content-Type一覧|MIMEタイプとはとHTTPでの主な使用場面 2026-10-03 21:37:05
- SpringにおけるAOPの使い方 2026-10-03 21:37:05
- X (Twitter) API でツイートできないがエラーが出ない問題の原因と対処 2026-10-03 11:33:01
- X (Twitter) API アプリケーション登録完全ガイド|v2・Bearer Token・OAuth 2.0 PKCE 2026-10-03 11:33:01
- X (Twitter) API 完全ガイド|従量課金の料金・単価(2026年10月)と v2 移行 2026-10-03 11:32:40
- Google DeepMind とは?Gemini・AlphaFold の開発元 2026-10-03 11:26:56
- Cursor とは?AI 統合型コードエディタの使い方・料金 2026-10-03 11:26:56
- Claude (Anthropic) とは?AIチャットの使い方・モデルファミリ・API 2026-10-03 11:26:56
- AIベンダー一覧:OpenAI・Anthropic・Google DeepMind・Microsoft・Meta 2026-10-03 11:26:56
- クラウド・インフラ完全ガイド — AWS/Azure/GCP/Kubernetes 2026-10-03 11:26:56
- テキストエディタ完全比較 (VS Code / Cursor / Vim / Emacs / IDE) 2026-10-03 11:26:56
- プログラミング学習プラットフォーム|Scratch・micro:bit ほか 2026-10-03 11:26:56