почему на рисунке 2 показано изменение IP-адреса источника на IP-адрес шлюза
Рисунок 2 фактически изменяет исходный IP-адрес на IP -адрес агента ретрансляции, который, по совпадению, также является шлюзом.
И агент ретрансляции делает не NAT-уровень, а проксирование на уровне приложения . Задача агента ретрансляции DHCP состоит не в том, чтобы просто пересылать пакеты на уровне IP (как это делают маршрутизаторы), а в том, чтобы фактически получать и обрабатывать их, а затем генерировать новые к другой стороне.
(В этом отношении DHCP в целом полностью независим от IP-маршрутизации / шлюза. Любое устройство, подключенное к подсети, может выступать в качестве DHCP-сервера или агента ретрансляции.)
Таким образом, поскольку два пакета (исходный и прокси) полностью независимы, а изображенный агент ретрансляции действительно является шлюзом с несколькими интерфейсами, для выбора поля «IP-адрес источника» используются разные алгоритмы, нежели «агент ретрансляции» DHCP. поле.
Поле «Агент ретрансляции» DHCP всегда является адресом, принадлежащим интерфейсу, который получил исходное 1a
обнаружение или 3a
запрос. Это позволяет одному устройству выступать в качестве агента ретрансляции для нескольких подсетей одновременно - каждый локальный интерфейс использует свой «адрес агента».
Поле IP «Source address», однако, не заботится о DHCP. Что касается стека IP, 1b
или 3b
это новая дейтаграмма UDP, которую хочет передать агент ретрансляции. Таким образом, после определения маршрута алгоритм выбора IP-адреса источника обычно выбирает адрес, принадлежащий исходящему интерфейсу. Это так же хорошо, как и любой.
(Для IPv4 это также возможно зависит от реализации. Но вы правы, что любой адрес будет работать, если DHCP-сервер знает, куда доставить ответ.)