ルーターは、『ネットワーク』と『ネットワーク』を接続する中継装置です。
それは、ルーティング(経路制御)機能によってIPパケットをフォワーディングします。
(フォワーディング(forwarding)は、パケットなどを送り出すことです。)
IPパケットを受け取ったルーターは、最終目的地までの経路を知っているわけではありません。
内部に存在する経路制御表(routing table:ルーティングテーブル)
または転送データベースと呼ばれるものを参照し、
IPパケット内のあて先ネットワークアドレスから、どのポートに出力するか調べて、
見つかったポートに送出しています。
参考にIPv4パケットのバイナリーイメージを以下に示します。
上記パケット内に、「TTL(Time To Live:生存期間)」の領域があります。
これはパケットの有効期間を表す値で、初期値は送信元ホストで設定されます。
この内容は、ルーターなどを1回経由するごとに1 減らした値に変ります。
そしてこの値が 0になった時点で、そのパケット廃棄され、
「廃棄通知」がパケットの送信元に届くような規則になっています。
これにより、誤りがあるパケットが
インターネットの中を永遠にさ迷うことを防止しています。
上記のIPパケットとイーサーネットのフレーム(IEEE802.3)
を比較してみましょう。
すると分かるように、
フレームには大きなデータを分割して転送する時に使う情報がありません。
よって、ネットワーク層では上位層で使われる大きなデータを、
下位のデータリンク層で使えるハードに合ったサイズに分割する必要があります。
(フレームのデータ部に収まるサイズのIPパケットにしなければなりません。)
分割は、データリンク層の種類によってさまざまですが、
各種データリンクで決定されるIPパケットの
最大転送単位をMTU(Maximum Transmission Unit)と呼びます。
(例えばイーサーネットのMTUは1500オクテット、FDDIでは4352、ATMは9180オクテットです。)
そして送出先のMTUを越えるパケットが送られてきた時、
ルーターで分割処理が行われます。
この分割処理のことをフラグメンテーション(fragmentation)と呼びます。
分割でできたパケットはフラグメント(fragment)と呼びます。
分割されたフラグメントは、途中のルーターでは再構築されずに、あて先ホストで再構築される
規則になっています。
このフラグメンテーションや再構築に使われる情報がIPパケットの
「ID」、「フラグ」、「フラグメント・オフセット」です。
フラグメンテーションの際は、フラグメント・パケットの「ID」に、
オリジナルIPパケットの「ID」をコピーします。
つまり、分割前と同じID持つ規則になっています。
よって受信したコンピュータ側では、
同じ「ID」を持つIPパケットをすべて集めて、
フラグメント・オフセット(オリジナルIPパケットの先頭からアドレス値)
に従い再構築すれば、
元のオリジナルのIPパケットが復元できる仕組みになっています。
なお、IPパケットは可能な限り大きい方が効率的ですが、
経路途中のMTUがIPパケットサイズより、小さいと分割がなされるため効率が悪くなります。
そこで、途中の経路で分割が起きないような最大のMTU(→経路MTUと呼ぶ)を、
パケット送信元で調査して、途中の分割がないようにする方法があります。
これは、経路MTU探索と呼ばれます。
バッファ制御: 速度の異なるネットワークを接続するルーターでは、 遅いパケットをバッファに貯える機能があります。
ルーティングテーブル管理機能: ルーティングテーブルの設定は次の 2通りに分けられます。
IPアドレス変換機能:
家庭用に販売されるルーターには、
プライベートIPとグローバルのIPのアドレス変換機能を持つものがあります。(ルーターの本質的機能ではありません)
インターネットで使われるIPアドレスは、グローバルアドレスと呼ばれ、
世界中に一つだけしか存在しないアドレスです。対して、LAN(local area network)で
使われる範囲のIPアドレスはプライベートアドレスです。よってLANとグローバルネットワーク
の境目で、この変換する機能を持つルーターを使います。
NAT(:Network Address Translation)や、
NAPT(:Network Address Port Translation IPマスカレードと言う呼び名もあります。)
が使われます。