IP パケットの TTL
ホスト A が,TTL を 3 に設定した IP パケットをホスト B 宛てに送信した。A から B までの経路上には,ルータ R1〜R5 がこの順に存在する。各ルータはパケットを転送する際に TTL を 1 減らすものとするとき,このパケットの扱いとして,適切なものはどれか。
- アTTL は秒単位の時間を表すので,3 秒以内に B に届けば,経由するルータの台数にかかわらず B に到達する。
- イR3 は TTL が 0 になったパケットを R4 に転送し,R4 がそのパケットを破棄してホスト A に通知する。
- ウR3 がパケットを破棄し,ホスト A に ICMP の Destination Unreachable(宛先到達不能)メッセージを送信する。
- エR3 が TTL を 0 に減らした時点でパケットを破棄し,ホスト A に ICMP の Time Exceeded(時間超過)メッセージを送信する。
正解と解説を見る
正解 エ
この問題の基礎知識
- IP ヘッダの TTL(Time To Live)は,ルータが転送するたびに 1 ずつ減らされ,0 になったパケットは破棄される。経路のループによってパケットが転送され続けることを防ぐ。
- ICMP はエラー通知などに使うプロトコルであり,TTL が 0 になって破棄したときは Time Exceeded(時間超過),宛先に到達できないときは Destination Unreachable(宛先到達不能)が送信元に送られる。
- traceroute は TTL を 1 から順に増やしたパケットを送り,各ルータから返る Time Exceeded によって経路上のルータを調べる。
アTTL は秒単位の時間を表すので,3 秒以内に B に届けば,経由するルータの台数にかかわらず B に到達する。
TTL の単位は秒と定義されているが,各ルータは処理が 1 秒未満でも TTL を少なくとも 1 減らす。実質的には経由できるルータ数の上限として働くので,ルータを 5 台経由する B には届かない。
イR3 は TTL が 0 になったパケットを R4 に転送し,R4 がそのパケットを破棄してホスト A に通知する。
ルータは TTL を減らした結果が 0 になった時点でパケットを破棄する。TTL は R1 で 2,R2 で 1,R3 で 0 となるので,破棄するのは R3 であり,TTL が 0 のパケットが次のルータに転送されることはない。
ウR3 がパケットを破棄し,ホスト A に ICMP の Destination Unreachable(宛先到達不能)メッセージを送信する。
TTL が 0 になってパケットを破棄したときに送るのは,ICMP の Time Exceeded(時間超過)メッセージである。Destination Unreachable は,宛先のネットワークへの経路がない場合などに送られる。
エR3 が TTL を 0 に減らした時点でパケットを破棄し,ホスト A に ICMP の Time Exceeded(時間超過)メッセージを送信する。正解
TTL は R1 で 2,R2 で 1,R3 で 0 になる。TTL が 0 になったパケットは破棄され,ルータは送信元に ICMP の Time Exceeded メッセージを送る。TTL は,経路のループによってパケットが転送され続けることを防ぐ。
検証用の出典出典照合済み
RFC 791 Internet Protocol / RFC 792 Internet Control Message Protocol / RFC 1812 Requirements for IP Version 4 Routers照合の根拠(4 件)
- エ(正解)・イ(誤り)・ウ(誤り): TTL を減らして 0 になったルータが破棄し,送信元に Time Exceeded を送る
If the TTL is reduced to zero (or less), the packet MUST be discarded, and if the destination is not a multicast address the router MUST send an ICMP Time Exceeded message, Code 0 (TTL Exceeded in Transit) message to the source.
RFC 1812 · Section 5.3.1(新しいタブで開きます) - ア(誤り): 単位は秒だが各ルータが少なくとも 1 減らすので,実質はホップ数の上限
Since this is very often the case, the TTL is effectively a hop count limit on how far a datagram can propagate through the Internet.
RFC 1812 · Section 5.3.1(新しいタブで開きます) - ア(誤り): 1 秒未満の処理でも TTL は少なくとも 1 減る
The time is measured in units of seconds, but since every module that processes a datagram must decrease the TTL by at least one even if it process the datagram in less than a second,
RFC 791 · Section 3.1 Time to Live(新しいタブで開きます) - ウ(誤り): Destination Unreachable は宛先ネットワークに到達できない場合などに送られる
the network specified in the internet destination field of a datagram is unreachable, e.g., the distance to the network is infinity, the gateway may send a destination unreachable message
RFC 792 · Destination Unreachable Message(新しいタブで開きます)
検算: TTL 3 → R1 で 2 → R2 で 1 → R3 で 0。R3 で破棄され,R4・R5・B には届かない。