pingコマンド

pingとは

 pingはターゲットのホストが存在しているかを調べることができる仕組みで、ネットワーク障害を調べる時などに利用される。
 pingはICMPプロトコルを利用して実装されている。ターゲットにICMPのEcho Request(type 8)を送り、Echo Reply(type 0)が返ってくると到達成功となり、ターゲットホストが存在しているということになる。しかし、今は設定によって電源が入っていてもpingを受け取らない(返事をしない)ホストもあるためpingが到達しないからホストが存在していないというわけではない。

pingのやり取りを見る

実際にICMPを用いてやり取りをしているのかをwiresharkを利用して調べる。

以下のコマンドを実行してその流れを見ていく。

ping -c 1 172.217.25.195

※-cオプションはpingを送る回数を決めるもので今回は1回だけ送る。
  172.217.25.195はgoogle.co.jpのIPアドレス

送ったパケットをwiresharkでキャプチャする。

f:id:kisaragi211:20181205212639p:plain

送ったパケットを見るとまず画面上部からICMPを用いてEcho Requestを送っていることががわかる。
その1行下を見ると172.217.25.195からEcho replyが返ってきている。
画像下の方を見るとICMPの内容を見ることができる。青ラインのところを見ると、Echo requestがType 8であることも確認できる。

f:id:kisaragi211:20181205213444p:plain
返ってきたパケットについても見てみる。
Type 0 でEcho replyがきていることが確認できる。

Checksumまで確認できてテンションが上がる。

おわりに

実際にpingコマンドを実行してパケットを見るまでの流れを記事にした。
浅い内容ではあったが実際にプロトコルやその中身を意識して実行するのは初めてだったのでとても勉強になった。
機会(モチベーション)があればtracerouteのデフォルトプロトコルと使用プロトコルを指定した際のパケットをキャプチャし使用されているプロトコルを確認する記事を書きたい。
いずれはパケットを実際に作ってそれを確認するまでに至りたい。