2015年12月2日水曜日

Ether ShieldのW5100をSTM8Sから動かしてみる (2)packet

W5100が載ったEthernet Shieldを動かそうとしているところなヒラサカなわけですが、考えてみたらTCPについて何も知らないじゃないか、と気づいて何も出来なくなってしまいました.自分が何を知りたいのかが判らないという状況.

ネット界隈を徘徊した末にわたしがたどり着いたのはこんな現況です.

【ハードウエア】
2台のLinuxマシンをLANに接続する.それに日常使っているwindowsマシンを加えた3台でpacketの送りっゴッコをして遊べるようにした.

【便利なツール】
(1)netcatでport scanしてみる
へ~そんなportを開けて待っているんだ、などと関心してみる.

portが判らない人のために、にわか仕込みのわたしが僭越ながら解説すると、192.168.1.4のようなIPアドレスによって特定のマシンへpacketを送付できるのは周知の通り.
ところが、そのマシンには様々な住人が住んでいる.住人の素性はhttpだのftpだのPOP3だのとどこかで聞いた奴らばかり.そいつらにpacketをお届けするのがport番号であり、部屋番号みたいなものといえる.
「192.168.1.4:80」のようなのをたまに見かけるが、末尾の80がport番号で、0~65535まである.メジャーな住人の部屋番号は慣例的に決まっている.
HTTP:80
FTP:20
POP3:110   などなど
port scanという用語があるだけに、「どのportが開いているか」はマシンによりけり.ではどうやってportを開くのかというと、それぞれのマシンが「そのportを待ち受けるプログラムをrunさせる」ことでportを開く.

(2)ipsendwinでpacketを送信する
送信先マシンのIPなどをちょちょいと設定して送信ボタンを押すとお好みのpacketをピコーンと発信してくれる.たとえpacketを送信しても受信するマシンがportを開いて待っていてくれないと無意味なので、本当に発信したんだろうなぁと疑心暗鬼に駆られるのがよくある場面.

(3)wiresharktsharkでpacketをモニタする (wiresharkはwindows用、tshartはLinux用)
ipsendwinで送信したのかどうか判らなかった状態を解消できるpacketモニタツール.受信Linuxマシンでpacketモニタするには、このようにする.
tshark -i 1   (1はマシンによりけり)
tshark -i 1 -f 'port 12345'   (port番号12345のみ表示)
tshark -i 1 -f 'port 12345' -V   (詳細表示)
tshark -i 1 -f 'port 12345' -x   (16進表示)

packet送信をどうするかというと、windowsマシンからipsendwinですれば実験ぐらいならできる.すると受信Linuxマシンにpacketが届いた旨が表示される.
192.168.1.3 -> 192.168.1.4  UDP 60 Source port: 12345  Destination port: 12345
もしも受信マシンのportが開かれていれば返信packetも表示される.

packet送信にはnetcatも使えるが、TCPかUDPのみであるらしい.
nc 192.168.1.4 12345

【書籍】
LinuxでCでプログラムできればよいので、「Linuxネットワークプログラミング」という本が自分のレベルに合っていて良さそうだけど、Amazonの評価はあまり良くはないですね.しかも絶版らしくて古本しか存在しないわ.

-----
以上の環境を装備して、上記書籍のサンプルプログラムで遊んでいればそのうちなにか見えてくるだろうと思っているのであった.

1へ   3へ

USBよりも複雑だ、、、


=== STMのアフィリエイト始めました ===
STM32のwelcome-kitです
        
試用レポはいずれまた...




人気ブログランキングへ

0 件のコメント:

コメントを投稿