先日、仕事でICMPのEcho Request/Reply(わかりやすく言えばpingパケット)のIDとシーケンス番号について調べる必要がありました。このIDとシーケンス番号って、がっつり明確なルールがあって、きちんと採番しないときちんと動かないのかな・・・、と思って、いくつかのWebサイトを参照してみました。
http://www.atmarkit.co.jp/fwin2k/network/baswinlan012/baswinlan012_02.html を見る限り、このIDとシーケンス番号って、エコーを送る側のアプリケーションで勝手に決めていいみたいですね。
念のためRFCも見てみるか・・・。http://www.faqs.org/rfcs/rfc792.html やっぱりIDとシーケンス番号に関する制約は緩そうです。もちろん、区別して使えばそれぞれのパケットへの応答の成否が調べられるので便利ですが、まあ、もちろんアプリケーション依存だとは思いますが、極端な話全くインクリメントしてなくても使えないことはないし、プロトコル違反でもなさそうです。
たとえばWindowsのpingとかはどうなんだろ・・・と思いこちらを参照。http://www.itbook.info/study/ping7.html なるほど、デフォルトで4回実行するpingでは、IDは同じだけどシーケンス番号はかえるということね・・・。
じゃ、念のためWindows7でパケットを見てみようかな・・・と思い、アクセサリからコマンドプロンプト(あるいはcmd.exeを実行)を立ち上げますが、自分以外の端末にpingを出そうとすると、なぜか「一般エラー」と表示され、pingが実行できません。実際、パケットも投げてないみたいです。
まあ、この手の現象の場合、PC(OS)の故障、というよりOSやアンチウィルスのセキュリティで止められてる可能性が高いよな・・・一応、こちらもgoogleで調査してみましたが、やはりセキュリティがらみで止められている、という事例がありました。
このとき使っていたアンチウィルスは、ウィルスバスター16でした。これだとすると、「不正侵入対策/ネットワーク管理」から「パーソナルファイアウォール」選んで[設定]をクリック、[セキュリティレベル]の[詳細設定]から[例外ルール(プロトコル)]を選択して、ここで「ICMP(IPv4)」の送信を許可すればいいだけか・・・。よしよし、これでpingできるようになったぞ・・・。
Wiresharkでpingパケットを確認すると、上記http://www.itbook.info/study/ping7.html のサイトのとおり、4回連続で実行するWindowsのpingについては、IDが同じでシーケンス番号のみがかわる、というのが確認できました。
この記事が気に入りましたら、また、お役に立ちましたら、以下のアイコンをクリックしていただけると嬉しいです(^^)

※コメント投稿者のブログIDはブログ作成者のみに通知されます