Адрес источника кадра Ethernet вместо кеша ARP для ответа IPV4?

Я пишу стек TCP / IP на встроенном устройстве с чрезвычайно ограниченными ресурсами. Я хотел бы знать, безопасно ли использовать исходный MAC-адрес кадра Ethernet для ответа на пакет IPV4.

Обычная процедура, когда вы хотите ответить на исходный IP-адрес пакета IPV4, - это проверить свой ARP-кеш, и, если он еще не заполнен, выполнить ARP-запрос, чтобы получить MAC-адрес.

Вместо этого я хотел бы использовать исходный MAC-адрес кадра Ethernet, в который пришел пакет IPV4. (поскольку у меня это всегда будет, и я смогу ответить на пакет, не дожидаясь новых входящих пакетов)

Будет ли эта стратегия вызывать проблемы?

Например, в локальной сети, где устройство подключено только к одному маршрутизатору / коммутатору, ответный MAC-адрес должен быть тем, с которого пришел запрос, поэтому никогда не должно быть проблем. Однако я слышал, что при ответе пакеты не всегда следуют по одному и тому же маршруту. Придется ли когда-нибудь конечному устройству отвечать на MAC-адрес, отличный от того, с которого пришел запрос?

Я считаю, что стандарты требуют, чтобы маршрутизаторы сами отправляли запрос ARP, прежде чем объявлять пункт назначения недоступным, поэтому я подумал, что даже в настройке, где конечное устройство было подключено к двум маршрутизаторам (один для входящих пакетов и один для исходящих) что даже если мое устройство ответит маршрутизатору входящих пакетов, оно просто перешлет его исходящему маршрутизатору, исправляя недостатки моего устройства.

Конечно, я понимаю, что полагаться на соответствие других устройств стандартам, чтобы позволить моему устройству не соответствовать стандартам, довольно лицемерно ...


person Rick    schedule 18.05.2017    source источник
comment
Итак, ваше устройство будет отвечать только на входящие кадры и никогда не будет отправлять кадры на устройство, которое не связывалось с ним первым?   -  person Ron Maupin    schedule 18.05.2017
comment
@RonMaupin Верно. (за небольшим исключением широковещательных рассылок для DHCP и SSDP, но для них не требуется разрешение адресов.)   -  person Rick    schedule 19.05.2017


Ответы (1)


Краткий ответ:

это будет работать? Да, это безопасно? Нет.

Длинный ответ

Проблемы, с которыми вы можете столкнуться:

  • Вы должны отвечать на запросы ARP, даже если вы инициируете TCP-соединение, TCP-сервер все равно будет делать ARP-запрос для заполнения своего собственного кеша.

  • Ваше устройство будет вести себя странно, если сеть не настроена должным образом (пример: повторяющиеся IP-адреса)

  • Ваше устройство плохо обрабатывает сетевые изменения (например, IP-адрес был перемещен с одного устройства на другое)

person Ayoub Kaanich    schedule 11.10.2020
comment
Поскольку он не будет использовать кеш, я думаю, что он действительно будет обрабатывать повторяющиеся IP-адреса и сетевые изменения лучше, чем совместимое со стандартами устройство. И да, каждое устройство должно отвечать на запросы ARP, которые не обсуждались. - person Rick; 13.10.2020