FPGA以太网-ARP协议介绍

可编程逻辑

1368人已加入

描述

ARP协议是地址解析协议,在网络中有MAC地址和IP地址之分,IP地址可以随着网络拓扑的改变而改变,而MAC地址是不会改变的。一般MAC地址在厂商生产的时候就烧好了,以后这个器件的MAC地址就不再会改变了。

因为IP地址在网络中是可能改变的,所以我们需要知道一个设备的MAC地址和IP地址才能准确的发送信息给目的器件。

而应用程序一般是直接给某个IP发送信息的,这个时候就需要自动去获取这个IP的MAC地址了,ARP协议就是做这个事情的。

我们可以在自己的电脑上查看目前的arp表,如果你想要访问的IP在ARP表中没有与之对应的MAC地址,那么就会自动发送ARP请求指令,当从机收到ARP请求指令的时候,就会给主机一个应答信号,这样双方就都有了对方的MAC地址。

通过arp -a指令来查看此时的ARP表。可以看到并没有192.168.1.10相对应的mac地址。

以太网

通过ping命令给从机发送arp请求,现在还不支持ICMP协议,所以看到的是请求超时。

以太网

通过抓包软件可以看到ARP请求和响应的协议包

以太网

这是请求的协议包,可以看到协议是0806也就是ARP协议,操作码是1,也就是请求协议。

以太网

ARP的应答包,可以看到操作码是2。

以太网

再通过arp -a来查看目前的arp表,就可以发现多了192.168.1.10的MAC地址。

以太网

而FPGA端需要做的就是对ARP协议的解析工作。

以太网

整个arp解析分为以下几个文件

以太网

arp_rx中将以太网帧通过以下状态机进行解析

以太网

首先是前导码的解析,然后是帧头的解析,之后是数据,最后是校验信息。

当整个校验过程中出现了校验错误的情况就停止进行下一步操作,重新回到空闲状态等待下一帧数据。

以太网

最后将会获得MAC,IP,操作码等相关信息。

以太网

在arp_ctrl中会去判断发送ARP应答指令还是ARP请求指令。如果目前收到了主机的ARP请求,那么就向主机发送ARP应答。如果现在想主动获取某个IP的MAC地址,那么就发送ARP请求。

以太网

在arp_tx中会根据arp_ctrl中给的指令来组织arp包发送出去。也是分为5个状态的状态机完成这个功能。

以太网





审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分