🐙

【ネットワーク基礎】IPヘッダーとルーティング

に公開

はじめに

インターネットを通じてデータを送受信する際、その裏側では「ルーティング」と呼ばれる仕組みによって、データが正しい宛先へと届けられています。ルーティングの判断材料となるのが、各データパケットに付加される「IPヘッダー」です。
本記事では、IPヘッダーに含まれる情報がどのように使われ、ルーターがどのようにパケットを転送しているのか、初心者にもわかりやすく解説していきます。

IPヘッダーとは

IPヘッダのサイズ

https://shinmeisha.co.jp/newsroom/2020/06/08/ipヘッダのフォーマットとサイズの基本/ より

IPヘッダーは、インターネットプロトコル(IPv4/IPv6)において、パケットの先頭に付加される制御情報の部分です。アプリケーション層から受け取ったデータに付与します。このヘッダーには、「このパケットをどこにどうやって届けるか」をルーターが判断するための情報が詰め込まれています。
つまり、ルーターはこのIPヘッダーを見て、送り先を判断しています。

ルーティングに使用されるIPヘッダ

宛先IPアドレス(Destination IP Address)
パケットが最終的に届けられるべき相手のIPアドレスを表します。アプリケーション(例:ブラウザ)が通信要求を出すと、OSはIPヘッダーを作成し、その中に目的のIPアドレス(例:WebサーバのIP)を宛先として書き込みます。ルーターはこのアドレスを使って、自分のルーティングテーブルを参照し、次に送るべき相手(ネクストホップ)を決定します。

TTL(Time to Live)

https://gcore.com/learning/what-is-time-to-live-how-it-works より

TTLは、パケットがネットワーク内で何回ルーターを通過できるかを表すカウンターです。
各ルーターは、パケットを受け取るたびにTTLを1減らします。TTLが0になると、そのパケットは破棄され、「届かなかったよ」というエラー(ICMP)を返します。
これはルーティング設定ミスなどで、同じ経路をグルグル回ってしまうループを防ぐために設定されます。

TTLは、通信を開始する送信元がパケットを生成するときに、IPヘッダーの中に初期値として書き込まれます。つまり、「出発時点」で値が作られます。
このTTLの初期値(最大値)は明確に定められたものはなく、OSやアプリケーションの設計によって決まります。例えば、Linux / Unix系の初期TTL値は64、Ciscoルーターは255といったように決められています。

プロトコル番号(Protocol Number)
この値は「このIPパケットの中に含まれているデータは、どの上位プロトコル(TCP、UDP、ICMPなど)なのか」を示します。IPヘッダーの中に8ビットのプロトコル番号フィールドがあり、これによりルーターや受信ホストは、次にどのプロトコルで処理すべきかを判断できます。
たとえば、プロトコル番号が「6」であれば「これはTCPだ」と判断し、TCPスタックにパケットを渡します。同様に、「17」ならUDP、「1」ならICMPといった具合にパケットを渡します。
この仕組みにより、受信側のホストはパケットを正しいプロトコルで解析し、最終的にアプリケーション層に適切にデータを届けることができます。

IPヘッダとルーティングの流れの関係

以下、ChatGPTによる解説より引用

  1. パケットの送信
    送信元ホストは、宛先IPを含むIPヘッダーを付けてパケットをネットワークに送信。

  2. ルーターでの処理
    ・ルーターがパケットを受信すると宛先IPアドレスを見て、自分のルーティングテーブルを参照
    ・最適な経路を選び、次のルーター(または最終宛先)を決定
    ・TTLを1減らし、再度IPヘッダーを更新
    ・更新後のパケットを転送

  3. 最終ホストでの受信
    最終的な宛先に届くと、OSがプロトコル番号を見て、TCP/UDPなど適切なアプリケーションへデータを引き渡す。

まとめ

IPヘッダーは、データパケットがネットワーク内を正しく進むための「案内標識」のような役割を果たしています。送信元や宛先IPアドレスはじめ、TTLやプロトコル番号などの情報をもとにルーターと受信ホストがデータの送り先を決めていることが理解できたと思います。

最後までお読みいただき、ありがとうございました。

参考・画像引用元URL

https://shinmeisha.co.jp/newsroom/2020/06/08/ipヘッダのフォーマットとサイズの基本/
https://www.pynetlabs.com/what-is-routing-table-in-networking/
https://gcore.com/learning/what-is-time-to-live-how-it-works
https://www.khanacademy.org/computing/ap-computer-science-principles/the-internet/x2d2f703b37b450a3:routing-with-redundancy/a/ip-packets
https://www.civo.com/learn/ip-packets

Discussion