| |
ARP包包含两个部分,一个接受ARP请求,另一个是发送ARP回应;那么它具有什么样的作用呢?
在实际应用过程,并不是像我之前介绍的一样,将固定的信息全部都能定义到板子内部,而是根据网络或是网卡的特点一样,每个网卡都具有自己的一个物理地址,同样在以太网板子上也需要定义一个MAC地址,并在此指定IP地址,那么任何计算机或是能够发送ARP请求包的板子都可以通过这个IP寻找板子的物理地址,并为以后的数据传送到哪留下地址。
ARP请求:
是指计算机像板子发送请求,通过指定IP地址寻求板子的物理地址,那么针对与以太网板子而然,就是接收数据,进而对照之前所说的一样,就是当有rxen信号时,判断rxdata的数据,同样数据是啥是根据arp包结构而定,不同时期发过来的数据代表不同的意义,在此我不做介绍,但在下面可以推荐一种测试收到数据的方法。
利用signaltap完成数据监控,设置时钟为rxclk,监测信号为rxen、rxdata,捕获时间选取rxen上升沿时刻,如果硬件、软件设计都正确,你将会发现首先接到的数据为55 55……d5,还记得这个数据吧,前导数据呀,接下来是ff ff……共计6个字节,说明ARP请求包是以广播的形式发送的,剩下的数据自己找arp数据包结构自己分析吧!
ARP响应:
它是相对与请求后的回应,告诉对方我的信息,及记录对方的信息,这些信息其实就是之前提到的IP、MAC地址,说白了还是一串数据,既然是回应,那么相对于板子就是像主机发送数据,自然就会利用到txclk、txen、txdata这三个信号,就像发送UDP协议数据一样,与ARP请求是个反过程,但是需要注意的是发送完所有协议数据之后,不能直接将txen信号直接拉低,而是需要发送一些数据,保证一包数据的最小容量,这些数据一般都是00。
总结:
要想完成ARP包,必须弄通两件事,一是arp数据包的请求、回应结构,二是根据以前介绍的内容通过FPGA完成信号与时钟的匹配,在合适发送或是接收那些指定的数据,这些数据代表的意义也就为结构中的内容,如果能够明白其中的意义,实现ARP其实不难,甚至来说比UDP要省事的多,至少它不需要穿过那么多层就可以完成。