バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-network-backnumber/
はじめに
lwIP PCシミュレーション結果のうちのpingを打ち込んだ時の話。
登場人物
博識フクロウのフクさん

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
lwIP PCシミュレーションにpingを打ち込む

次はpingを打ち込んでみよう。

あー、あの疎通確認するヤツ?

そうそう。
まぁGARP、IGMPがキャプチャできたんで、
疎通自体は出来てるはずなんだけど、
lwIPとしてpingに応答できるか、
応答するにあたっての挙動がどうなのか
ってあたりを見る感じだね。

じゃー、今回もWiresharkでキャプチャしながらだねー。
lwIP PCシミュレーションにpingを打ち込んだ結果

こんな感じになった。


うん。
ちゃんと応答しているね。

んー?
なんか最初のpingリクエスト後にARPのやり取りがあるような?

その通り。
ちゃんと気づいたようだね。
ARPのやり取りが起きる理由

あれ?
確か最初にGARP飛ばしてるからARP要らないんじゃない?
前回そんな話だったような気がするんだけど???

ARPが要らないとは言ってないかな。

じゃーいるの?
GARPは一体なんだったの???

GARPによって、PC側(pingリクエストした側)についてはMACアドレスとIPアドレスは紐づいた。
じゃー、lwIP側から見てPC側はどうなるか?

えーっと、
lwIPがGARPを飛ばして、PC側は解決。
PC側はGARP貰ったから・・・。
んー!わからん!

表にしてみよう。
GARP飛ばす前 | GARP飛ばした後 | |
lwIPがPCを知ってる | 未解決 | 未解決 |
PCがlwIPを知ってる | 未解決 | 解決 |

そっかー!
lwIP側がPCのIPとMACを解決できていないのか?!

そこでPCからARP投げてlwIPからARP返して解決。
表に追加するとこうか。
GARP飛ばす前 | GARP飛ばした後 | ARP | |
lwIPがPCを知ってる | 未解決 | 未解決 | 解決 |
PCがlwIPを知ってる | 未解決 | 解決 | 解決 |

そうそう。

それで、pingリクエストの後、pingレスポンスの前にARPが挟まってるのか。
lwIPからすると、誰ともわからないところからリクエストが来たから、
慌てて問い合わせてるって感じか。
ARPテーブル

ついでにPC側のARPテーブルも見ておこう。

どうやって見るの?

ARP -a
ってコマンドを入れてみな。

はいよ。


あ!
192.168.40.100っていうlwIPで設定したIPアドレスとMACアドレスが登録されてる!

これで、lwIPとPCがお互いを認識してIPより上位のプロトコルでやり取りができる状態が整ったわけだ。

Ethernetとかケーブル繋げは通信するもものだと思ってたけど、
結構いろんなことやってるんだねー。
まとめ

まとめだよ。
- lwIPに向けてpingを打ってみた。
- 問題無く応答。
- pingレスポンスの直前にlwIPからARP要求発生。
- GARPによりPCからlwIPは見えているが、lwIPからPCが見えていないため。
- ARPテーブルにlwIPのIPアドレスとMACアドレスが登録されているのを確認。
バックナンバーはこちら。
コメント