本記事を読んでいただきありがとうございます!
初めて作る記事になるので不備も多々あると思いますが何卒ご容赦ください。
はじめに
私がネットワークについて学習し始めた頃、簡単なネットワークを構築しPingコマンドを用いて疎通確認をしていたのですが、最初のエコーのみ応答が得られず疑問に思ったためそのころ学んだことをまとめていきます。
Pingコマンドとは
Pingコマンドとは、ICMPパケットを送り、エコーが返ってくるかどうかによって相手までのネットワークの経路が正しく設定されているかどうかを確認することができるコマンドです。
実行環境
今回はCisco Packet Tracerというネットワークシミュレーションツールを使用します。
Cisco Packet Tracerのダウンロードはこちら
実際にPingコマンドを実行してみる
今回は以下のネットワークを構築し、Pingコマンドを実行してみました。
まずは同一ネットワークであるPC0(192.168.1.1)からPC1(192.168.1.2)に対してPingコマンドを実行してみました。
C:\>ping 192.168.1.2
Pinging 192.168.1.2 with 32 bytes of data:
Reply from 192.168.1.2: bytes=32 time<1ms TTL=128
Reply from 192.168.1.2: bytes=32 time<1ms TTL=128
Reply from 192.168.1.2: bytes=32 time<1ms TTL=128
Reply from 192.168.1.2: bytes=32 time<1ms TTL=128
Ping statistics for 192.168.1.2:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
同じネットワーク内であれば問題なくエコーが返ってきていることが確認できました。
次に、異なるネットワーク同士であるPC0(192.168.1.1)からPC2(192.168.2.1)に対して
Pingコマンドを実行してみると以下のような結果となりました。
C:\>ping 192.168.2.1
Pinging 192.168.2.1 with 32 bytes of data:
Request timed out.
Replay from 192.168.2.1: bytes=32 time<lms TTL=127
Replay from 192.168.2.1: bytes=32 time<lms TTL=127
Replay from 192.168.2.1: bytes=32 time<lms TTL=127
Ping statistics for 192.168.2.1:
Packets: Sent = 4, Received = 3, Lost = 1 (25% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
異なるネットワーク間での通信では最初のPingのみ失敗となっていることが確認できました。
原因
最初の1回目のみが失敗する理由として、異なるネットワーク通信においてMACアドレスの情報が得られていないことが挙げられます。
異なるネットワークと通信する場合、ルータのMACアドレス情報が必要となるのでまずルータに対してARPを実行します。MACアドレス情報が得られてARPテーブルができればデフォルトゲートウェイ(ルータ)に対してパケットを送り始めますが、ARPを実行している間にその最初の1回はPingが失敗してしまいます。
しかしながら、事前に通信先のMACアドレスの情報が分かっていれば失敗を回避することができます。