通信协议之ARP的FPGA实现其一
介绍
ARP 协议分为 ARP 请求和 ARP 应答,源主机发起查询目的 MAC 地址的报文称为 ARP 请求,目的主机响应源主机并发送包含本地 MAC 地址的报文称为 ARP 应答。当主机需要找出这个网络中的另一个主机的物理地址时,它就可以发送一个 ARP 请求报文,这个报文包含了发送方的 MAC 地址和 IP 地址以及接收方的 IP 地址。因为发送方不知道接收方的物理地址,所以这个 查 询 分 组 会 在 网 络 层 中 进 行 广 播 , 即 ARP 请 求 时 发 送 的 接 收 方 物 理 地 址 为 广 播 地 址 , 用48’hff_ff_ff_ff_ff_ff 表示。
上图中的主机 A 发起 ARP 请求,由于发送的目的 MAC 地址为广播地址,所以此时局域网中的所有主机都会进行接收并处理这个 ARP 请求报文,然后进行验证,查看接收方的 IP 地址是不是自己的地址。是则返回 ARP 应答报文,不是则不响应。只有验证成功的主机才会返回一个 ARP 应答报文,这个应答报文包含接收方的 IP 地址和物理地址。
主机 B 利用收到的 ARP 请求报文中的请求方物理地址,以单播的方式直接发送给主机 A,主机 A 将收到的 ARP 应答报文中的目的 MAC 地址解析出来,将目的 MAC 地址和目的 IP 地址更新至 ARP 缓存表中。当再次和主机 A 通信时,可以直接从 ARP 缓存表中获取,而不用重新发起 ARP 请求报文。需要说明的是,ARP 缓存表中的表项有过期时间(一般为 20 分钟),过期之后,需要重新发起 ARP 请求以获取目的 MAC地址。
在以太网中数据包的传输格式MAC帧如下所示,
MAC帧:前导码(7Byte) , SFD(1Byte) ,以太网帧头(14Byte), 数据段(46-1500 Byte) , FCS (4Byte)
ARP与常规MAC的区别在于 数据段的信息是 (28Byte的ARP数据+18Byte的填充数据共同组成了整个数据段)