我正在极其资源有限的嵌入式设备上编写TCP / IP堆栈。 我想知道使用以太网帧的源mac地址来回复IPV4数据包是否安全。
当您想要回复IPV4数据包的源IP地址时,正常的过程是检查您的ARP缓存,如果尚未填充,请执行ARP请求以获取MAC地址。
我希望使用IPV4数据包所在的以太网帧的源mac地址。 (因为我将始终拥有此功能,因此能够在不等待更多传入数据包的情况下响应数据包)
这种策略会不会引起问题?
例如,在设备仅连接到一个路由器/交换机的本地网络中,回复mac地址必须是请求来自的地址,因此永远不会出现问题。但是,我听说数据包在回复时并不总是遵循相同的路线。终端设备是否必须回复不同于来自请求的mac地址?
我认为标准要求路由器在声明目的地不可达之前自己发出ARP请求,所以我的想法是即使在终端设备连接到两个路由器的设置中(一个用于传入数据包,另一个用于传入数据包)对于传出),即使我的设备回复传入的数据包路由器,它只是将它转发到传出的路由器,纠正我的设备的不足。
当然,我意识到依赖其他设备符合标准,让我的设备不遵守标准是相当虚伪......
答案 0 :(得分:0)
简短答案:
会起作用吗?是的,安全吗?不。
好答案
您可能会遇到的问题:
即使您是发起TCP连接的用户,也需要答复ARP请求,TCP服务器仍会发出ARP请求以填充其自己的缓存。
如果网络配置不正确(例如:重复的IP地址),您的设备的行为就会很奇怪
您的设备无法很好地处理网络更改(例如,IP地址已从一台设备移至另一台设备)