技術メモ

神奈川在住のITエンジニアの備忘録。おもにプログラミングやネットワーク技術について、学んだことを自分の中で整理するためにゆるゆると書いています。ちゃんと検証できていない部分もあるのでご参考程度となりますが、誰かのお役に立てれば幸いです。

icmpパケットのIDとシーケンス番号

icmpパケットには、ID(Identifier) と シーケンス番号(Sequence Number) が含まれている。これらがどのように使用されるのかイマイチ分かっていなかったので、ちょっと調べてみた。いつも通り、大正義 rfc を見に行く。すると、

https://tools.ietf.org/html/rfc792

に、以下の記載を見つけた。

The identifier and sequence number may be used by the echo sender
to aid in matching the replies with the echo requests. For
example, the identifier might be used like a port in TCP or UDP to
identify a session, and the sequence number might be incremented
on each echo request sent. The echoer returns these same values
in the echo reply.

Identifier と Sequence Number は、icmpリクエストを送信した側が要求パケットと応答パケットとを紐付けるために使用されるかもしれないとあり、rfc として使い方を規定しているわけではない。なお、icmpリクエストを受信したら、その応答には同じ Identifier と Sequence Number を入れるとある。

 

つまり、rfc としては、

「icmpリクエストを受信した時は、Identifier と Sequence Number にリクエストと同じ値を入れて応答してね。」

ということを規定しているくらいで、icmpリクエスト送信時に Identifier と Sequence Number に何を入れるのかは自由のように読める。

rfc の「For example・・」にあるように、Identifier は icmpリクエストを送ったプロセスを識別するものとして、Sequence Number は各 icmp 要求と応答を紐付けるものとして、使用するのが多いのだろうか。