27 ポイント 投稿者 GN⁺ 2025-11-09 | まだコメントはありません。 | WhatsAppで共有
  • ユーザーの パケットがインターネットを通ってウェブサイトのサーバーに到達する経路 をリアルタイムで可視化したインタラクティブページ
  • 自作の traceroute プログラム「ktr」 が ICMP パケットの TTL 値を活用して各ネットワークホップの情報を収集
  • ウェブサイトは JavaScript なしでも動作し、サーバーが traceroute の結果をストリーミング形式で HTML に反映
  • 経路分析には WHOIS・PeeringDB データ を用いて、各 IP が属する 自律システム(AS) と企業情報を表示
  • traceroute と BGP ベースのインターネット構造 を組み合わせ、インターネットが企業間の ピアリング関係で構成されたネットワークの集合 であることを示す

あなたのパケットがたどった旅

  • ページ上部の traceroute は、ユーザーのコンピューターからサーバーまでの パケット移動経路 を示している
    • ルーター、ISP、Amazon、NTT Global IP Network、Hetzner などのネットワークを順番に通過
    • 一部区間は「(no response)」と表示されるが、これは応答しないサーバーがあるため
  • Hetzner ネットワーク内部では複数のルーターを経由して最終サーバーに到達
  • IP アドレス 213.239.252.10逆引き DNS 参照 によって core0.fra.hetzner.com と表示される

Behind the Scenes

  • ウェブサイトはユーザーのリクエストを受けると サーバー上で traceroute を実行 し、結果をリアルタイムで送信
  • traceroute は ICMP プロトコル を使い、TTL(Time To Live)値を 1 ずつ増やしながら各ホップの応答を収集
  • TTL が 0 になると該当ルーターがエラーメッセージを返し、これによって パケットが通過した経路を追跡 する
  • ktr は traceroute の結果をストリーミングしながら、各ホップの IP・ASN・所有ネットワーク情報 も同時に照会

Frontend Fun

  • JavaScript なしでも動作し、ブラウザーには単に ゆっくり読み込まれるページ のように見える
  • サーバーは HTTP 接続を維持したまま traceroute の結果を順次 HTML に挿入
  • 各更新ごとに CSS ブロックを挿入して前の結果を隠す方式 でリアルタイム更新の効果を実現

Front to Back, Back to Front

  • 実際には サーバーからユーザーの IP に向けて traceroute を実行 し、その結果を 逆順で表示 している
  • これは「reverse traceroute」であり、双方向の経路が完全に同一ではないものの おおむね似た経路 を示す

ネットワークと自律システム(AS)

  • インターネットは 自律システム(Autonomous System, AS) と呼ばれる 企業単位のネットワーク同士の接続網 で成り立っている
  • 各 AS は固有の ASN(Autonomous System Number) を持ち、相互の ピアリング(peering) を通じてトラフィックを交換
  • インターネットは個人ではなく 企業が所有するネットワークの集合 であり、接続は 金銭的契約と事務手続き によって決まる
  • ASN は 5 つの地域インターネットレジストリ(RIR) のいずれかを通じて申請できる

WHOIS と PeeringDB

  • traceroute の各 IP が属する AS を調べるために WHOIS プロトコルPeeringDB データベース を使用
  • WHOIS は TCP 接続後にクエリーを送るとサーバーが情報を返すシンプルな構造
  • サーバーごとにフィールド名や形式が異なるため、パーサーは 人間が読むやり方に近いシンプルなシミュレーター形式 で実装
  • PeeringDB は全 AS の約 3 分の 1 について企業情報を提供

BGP(Border Gateway Protocol)

  • BGP はインターネットの形を決める中核プロトコル であり、AS 間で経路情報を交換する
  • 境界ルーター(border router)は BGP ルーティングテーブル を保持し、各経路の ASN 一覧を保存
  • 2 つの AS がピアリングすると、それぞれのルーターが BGP セッション を張り、経路広告(route advertisement) を交換
  • ルーターは複数の経路の中から 最短、または選好度の高い経路 を選んでパケットを転送

BGP の歴史

  • 1969 年の ARPANET に始まるネットワーク実験は、1989 年の Cisco と IBM の RFC 1105 へとつながり、BGP v1 が登場
  • その後 BGP v2(1990)v4(1994) が発表され、v4 は現在まで使われている
  • BGP は インターネット上のあらゆるネットワーク間の接続経路を決める 標準プロトコルとして定着した

Traceroute と BGP の関係

  • 例の経路: AS16509 → AS2914 → AS24940
    • Amazon(AS16509)→ NTT Global IP Network(AS2914)→ Hetzner(AS24940)の順
  • 同じ ASN 内にも複数のホップが存在し、これは内部ルーティングプロトコルや固定経路で処理される
  • AS 間のピアリング関係 がインターネット上で実際に到達可能かどうかを決定する

Recap まとめ

  • ウェブサイトはユーザーの IP に対して traceroute を実行し、その結果を HTTP ストリームで送信
  • traceroute は ICMP パケットの TTL を活用して ルーター間の経路を可視化 する
  • 各ルーターは 自律システム(AS) に属し、BGP によって相互接続されている
  • ピアリング関係 がインターネットの到達性と構造を決める

Epilogue

  • 作者はインターネット構造への理解不足を感じ、プロトコル中心の教育用インタラクティブ記事 を制作
  • 完成度の高い大規模プロジェクトではなく 小さくても公開することを選択 した
  • Hack Club コミュニティの励ましで完成し、オープンソースの traceroute プログラム を活用
  • 「小さくても完成しているほうがよい」というメッセージとともに、持続可能なウェブコンテンツ として残ることを願っている

まだコメントはありません。

まだコメントはありません。