tcpdumpでpingパケットの中身を覗いてみる
私は飽きっぽい性格で、 ディープラーニング、アルゴリズムとデータ構造、Webフレームワークと、 ITっぽいモノを素人なりにいろいろ噛っているのですが、最近はTCP/IPに興味が移ってきました。
というわけで、今日はtcpdumpコマンドでpingパケットの中身を覗いてみました。
Internet Control Message Protocol - Wikipedia
ターミナルを立ち上げてtcpdumpを実行し、ICMPパケットを対象にキャプチャします。
>sudo tcpdump -X icmp Password: tcpdump: data link type PKTAP tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on pktap, link-type PKTAP (Packet Tap), capture size 65535 bytes
別ターミナルを立ち上げて、ルータに向けてpingを1発打ってみます。
>ping -c 1 192.168.100.1 PING 192.168.100.1 (192.168.100.1): 56 data bytes 64 bytes from 192.168.100.1: icmp_seq=0 ttl=255 time=1.514 ms --- 192.168.100.1 ping statistics --- 1 packets transmitted, 1 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 1.514/1.514/1.514/0.000 ms
無事にtcpdumpでpingパケットをキャプチャできました。
20:30:09.153269 IP 192.168.100.22 > setup.netvolante.jp: ICMP echo request, id 17904, seq 0, length 64 0x0000: 00a0 de7e fe22 a45e 60c6 cce3 0800 4500 ...~.".^`.....E. 0x0010: 0054 bea1 0000 4001 729f c0a8 6416 c0a8 .T....@.r...d... 0x0020: 6401 0800 3391 45f0 0000 5937 e3c1 0002 d...3.E...Y7.... 0x0030: 5680 0809 0a0b 0c0d 0e0f 1011 1213 1415 V............... 0x0040: 1617 1819 1a1b 1c1d 1e1f 2021 2223 2425 ...........!"#$% 0x0050: 2627 2829 2a2b 2c2d 2e2f 3031 3233 3435 &'()*+,-./012345 0x0060: 3637 67 20:30:09.154718 IP setup.netvolante.jp > 192.168.100.22: ICMP echo reply, id 17904, seq 0, length 64 0x0000: a45e 60c6 cce3 00a0 de7e fe22 0800 4500 .^`......~."..E. 0x0010: 0054 f5bf 0000 ff01 7c80 c0a8 6401 c0a8 .T......|...d... 0x0020: 6416 0000 3b91 45f0 0000 5937 e3c1 0002 d...;.E...Y7.... 0x0030: 5680 0809 0a0b 0c0d 0e0f 1011 1213 1415 V............... 0x0040: 1617 1819 1a1b 1c1d 1e1f 2021 2223 2425 ...........!"#$% 0x0050: 2627 2829 2a2b 2c2d 2e2f 3031 3233 3435 &'()*+,-./012345 0x0060: 3637 67
パケットの先頭14byteはイーサネットヘッダで、送信元と送信先のMACアドレスが書かれているはずです。 というわけで、ifconfigコマンドで自分のMACアドレスを調べてみると、
>ifconfig en0 en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether a4:5e:60:c6:cc:e3 inet6 fe80::a65e:60ff:fec6:cce3%en0 prefixlen 64 scopeid 0x4 inet 192.168.100.22 netmask 0xffffff00 broadcast 192.168.100.255 nd6 options=1<PERFORMNUD> media: autoselect status: active
MACアドレスa4:5e:60:c6:cc:e3が書かれてることが確認できました。
イーサネットヘッダの次は、IPヘッダ20byteが、その後にICMPメッセージ64byteが配置されます。 RequestとReplyのパケットを見てみると、先頭から35byte目に、 ICMPのタイプコード 8'h08(echo request)と8'h00(echo reply)がそれぞれ配置されているのがわかります。
- 作者: 竹下隆史,村山公保,荒井透,苅田幸雄
- 出版社/メーカー: オーム社
- 発売日: 2012/02/25
- メディア: 単行本(ソフトカバー)
- 購入: 4人 クリック: 34回
- この商品を含むブログ (36件) を見る
以前メルカリで買ったまま積読していた「マスタリングTCP/IP入門編」を読み始めました。 ちょっと手を広げすぎた感がありますが、ゆっくり消化していこうと思います。