【ネットワーク基礎】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による解説より引用
-
パケットの送信
送信元ホストは、宛先IPを含むIPヘッダーを付けてパケットをネットワークに送信。 -
ルーターでの処理
・ルーターがパケットを受信すると宛先IPアドレスを見て、自分のルーティングテーブルを参照
・最適な経路を選び、次のルーター(または最終宛先)を決定
・TTLを1減らし、再度IPヘッダーを更新
・更新後のパケットを転送 -
最終ホストでの受信
最終的な宛先に届くと、OSがプロトコル番号を見て、TCP/UDPなど適切なアプリケーションへデータを引き渡す。
まとめ
IPヘッダーは、データパケットがネットワーク内を正しく進むための「案内標識」のような役割を果たしています。送信元や宛先IPアドレスはじめ、TTLやプロトコル番号などの情報をもとにルーターと受信ホストがデータの送り先を決めていることが理解できたと思います。
最後までお読みいただき、ありがとうございました。
参考・画像引用元URL
Discussion