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

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

我宁愿使用IPV4数据包所在的以太网帧的源mac地址 . (因为我将始终拥有此功能,因此能够在不等待更多传入数据包的情况下响应数据包)

这种策略会不会引起问题?

例如,在设备仅连接到一个路由器/交换机的本地网络中,应答mac地址必须是请求来自的地址,因此永远不会出现问题 . 但是,我听说数据包在回复时并不总是遵循相同的路线 . 终端设备是否必须回复不同于请求来自的mac地址?

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

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