WiresharkによるICMP解析 | Hello, Stupid World!

Hello, Stupid World!

いろいろとメモ代わりに書いていきます。

前回はTCPの解析だったんで続いてUDPと思わせてICMPです。

ICMPとは通信エラーを通知したり、送信先と通信できるか調べるために使われる
プロトコルです。
パソコンだけでなくルーターも機能を持っています。

ではWiresharkを起動してパケットキャプチャ状態にしてpingを打ってみます。
pingの説明はいいですよね。相手と通信できるか確かめる為のアレです。
ICMPを知らない人でもpingは知っているかもしれませんね。



googleにpingして確かめようとしたのですがIPアドレスが分からなかったので
まずはnslookupでIPアドレスを確認しています。

その後、pingを実行。無事に成功しています。
ではキャプチャの内容を見てみましょう。



ProtocolがICMPと表示されています。
infoにはEcho (ping) と分かりやすく書いてあります。

ICMPはネットワーク層のプロトコルですが
トランスポート層でもありTCPやUDPは使用していません。

wiresharkで見るとTCPやUDPヘッダが無い事が確認できます。

infoの一番右にあるTTLですが、これはTime to liveの略で
パケットの届く距離(経由できるサーバ数)を表しています。
wiresharkの画面を見ると今回はリクエスト時 128、レスポンス時 52に
なっています。
Windowでは128がデフォルト、Linuxだと64がデフォルトらしいです。

こうしてpingはEcho request(エコー要求)とEcho reply(エコー応答)を
繰り返す事で通知可能か確認する訳です。

今回初めて知ったのですが、データは「abcdefghijklmnopqrstuvwabcdefghi」
が入ってました。
アルファベットが順番に入るようです。



次にpingに-l オプションをつけて4096バイトを送信してみました。

[Fragmented IP Protocol]と表示され、フラグメント化(分割)されたことが
分かります。
さらに、このフラグメント化されたデータの詳細を見るとイーサネットの
MTUである1500バイトでフラグメント化されていることも分かります。

MTUはMaximum Transmission Unitの略で1回で送信できる最大バイト数
です。前回、説明したMSSはMTUからヘッダ分を除外した最大バイト数です。