以太网帧源地址而不是 IPV4 回复的 ARP 缓存?

Posted

技术标签:

【中文标题】以太网帧源地址而不是 IPV4 回复的 ARP 缓存?【英文标题】:Ethernet frame source address instead of ARP cache for IPV4 reply? 【发布时间】:2017-10-18 20:05:43 【问题描述】:

我正在一个资源极其有限的嵌入式设备上编写 TCP/IP 堆栈。 我想知道使用以太网帧的源mac地址来回复IPV4数据包是否安全。

当您想要回复 IPV4 数据包的源 IP 地址时,通常的程序是检查您的 ARP 缓存,如果尚未填充,请执行 ARP 请求以获取 MAC 地址。

我想使用 IPV4 数据包进入的以太网帧的源 MAC 地址。 (因为我将始终拥有它,因此能够响应数据包而无需等待更多传入数据包)

这种策略会导致问题吗?

例如,在设备仅连接到一台路由器/交换机的本地网络中,回复 MAC 地址必须是请求来自的地址,因此应该不会有问题。但是,我听说数据包在回复时并不总是遵循相同的路线。终端设备是否必须回复与请求来源不同的 MAC 地址?

我相信标准要求路由器在声明目的地不可达之前自己发出 ARP 请求,所以我的想法是,即使在终端设备连接到两个路由器(一个用于传入数据包,一个用于传入数据包)的设置中用于传出)即使我的设备回复了传入的数据包路由器,它也会将其转发到传出路由器,从而纠正我的设备的缺陷。

当然,我意识到依靠其他设备符合标准来让我的设备不符合标准是相当虚伪的......

【问题讨论】:

那么,您的设备只会回复传入的帧,而不会将帧发送给尚未首先联系它的设备? @RonMaupin 没错。 (除了广播来做 DHCP 和 SSDP,但它们不需要地址解析。) 【参考方案1】:

简答:

它会起作用吗?是的,安全吗?没有。

长答案

您可能遇到的问题:

您需要回复 ARP 请求,即使您是发起 TCP 连接的人,TCP 服务器仍会发出 ARP 请求以填充自己的缓存。

当网络配置不正确时,您的设备会出现异常行为(例如:重复的 IP 地址)

您的设备无法很好地处理网络变化(例如,IP 地址从一台设备移动到另一台设备)

【讨论】:

由于它不使用缓存,我认为它实际上会比符合标准的设备更好地处理重复的 IP 和网络更改。是的,每个设备都需要响应没有问题的 ARP 请求。

以上是关于以太网帧源地址而不是 IPV4 回复的 ARP 缓存?的主要内容,如果未能解决你的问题,请参考以下文章

ARP协议详解

地址解析协议(ARP)

ARP协议

基于PLC1850平台的ARP包请求与响应

ARP-地址解析协议

arp