Я пишу стек TCP / IP на встроенном устройстве с чрезвычайно ограниченными ресурсами. Я хотел бы знать, безопасно ли использовать исходный MAC-адрес кадра Ethernet для ответа на пакет IPV4.
Обычная процедура, когда вы хотите ответить на исходный IP-адрес пакета IPV4, - это проверить свой ARP-кеш, и, если он еще не заполнен, выполнить ARP-запрос, чтобы получить MAC-адрес.
Вместо этого я хотел бы использовать исходный MAC-адрес кадра Ethernet, в который пришел пакет IPV4. (поскольку у меня это всегда будет, и я смогу ответить на пакет, не дожидаясь новых входящих пакетов)
Будет ли эта стратегия вызывать проблемы?
Например, в локальной сети, где устройство подключено только к одному маршрутизатору / коммутатору, ответный MAC-адрес должен быть тем, с которого пришел запрос, поэтому никогда не должно быть проблем. Однако я слышал, что при ответе пакеты не всегда следуют по одному и тому же маршруту. Придется ли когда-нибудь конечному устройству отвечать на MAC-адрес, отличный от того, с которого пришел запрос?
Я считаю, что стандарты требуют, чтобы маршрутизаторы сами отправляли запрос ARP, прежде чем объявлять пункт назначения недоступным, поэтому я подумал, что даже в настройке, где конечное устройство было подключено к двум маршрутизаторам (один для входящих пакетов и один для исходящих) что даже если мое устройство ответит маршрутизатору входящих пакетов, оно просто перешлет его исходящему маршрутизатору, исправляя недостатки моего устройства.
Конечно, я понимаю, что полагаться на соответствие других устройств стандартам, чтобы позволить моему устройству не соответствовать стандартам, довольно лицемерно ...