板子如何知道对方的MAC地址?

来源:互联网 发布:淘宝开店不装修可以嘛 编辑:程序博客网 时间:2024/05/01 16:35

今天看了谢希仁的《计算机网络》,看着看着突然想到一个问题,我的STM32电路板发送UDP给电脑,那个wireshark包里面有电脑的MAC地址,那么STM32电路板是如何知道电脑的mac地址的呢?

然后把电脑IP设置为192.168.1.100,把STM32的IP设置为192.168.1.10。让STM32每1000ms发送一帧到电脑。

然后打开wireshark,然后把网线插上,抓包如下:


NO1是 电脑问谁是路由器(192.168.1.1在一般网络里都是路由器)

NO2    0.0.0.0表示本网络,谢希仁的书的第5版的第114页说 全是0代表本网络。

NO3的02:00:00:00:00:00是STM32的MAC地址,这个帧的含义我以前查过,是STM32的Ip是192.168.1.10,所以想问问网上有没有别的节点也是相同的IP,防止IP冲突。

NO4是STM32问谁是电脑啊?告诉我啊!

NO5是电脑说,我是啊,我的MAC是00:21:cc:64:83:34

NO6 于是STM32知道了电脑的MAC,于是 Stm32把帧发给了电脑


可以发现NO3 NO4 NO5 NO6这几个时间点隔得特别近。当然这里主要关心NO4 NO5 NO6。要通过LWIP的代码看看如何执行的?

=========================

另外,可以把STM32的IP和电脑的IP设置为一样的,看看会如何?

这时候STM32发送的帧的原地址IP和目的地址IP是一样的,所以LWIP协议自身可能就会相关措施,当然这只是我猜的。


可见STM32板卡不断发出Gratuitous ARP for 192.168.1.100(Request)。而电脑也提示IP冲突。

这以太网协议真是个好协议啊!如果我来设计别的协议,那么以太网是个很好的参考!!

==================================================

还有可以把STM32的发送的IP地址设置为不是电脑的IP,就是没人接收。那么STM32会如何?

好,让stm32发送帧到IP地址192.168.1.88,结果如下:


==========================================





0 0