你几乎 100% 正确。下面粗体部分略有更正:
- HostE 将发送一个目标地址为 Router2 的 IP 地址的 ARP 请求。ARP 数据包的目标 MAC 地址将是
ffff.ffff.ffff
,这确实会使其成为广播。Router2 用它的 MAC 地址响应 unicst,HostE 生成源和目标 IP 为 192.168.3.1 和 192.168.1.1,源和目标 MAC 分别为 7777.7777.7777 和 8888.8888.8888 的数据包。
- 路由器 2 将接收数据包,并查询其路由表以确定 192.168.1.0/24 的下一跳。如果 Router2 尚不知道 Router1 的 MAC 地址,它将为其发出广播 ARP 请求。一旦它获悉,它将转发数据包,保持源/目标 IP 不变,并使用第 2 层标头封装 IP 数据包,其中源和目标 MAC 为 5555.5555.5555 和 3333.3333.3333。
- Router1 接收数据包并查询其路由表以确定目标网络是直接连接的。Router1 向 IP 192.168.1.1 发送广播 ARP 请求以获知 HostA 的 MAC 地址,然后最终将数据包转发到最终目的地。
并回答你的最后一个问题。无论 HostE 是否从 DHCP 获取其地址,如果 HostE 在其 ARP 缓存中没有用于 Router2 的 MAC 地址的条目,则流程将如上所示。
如果,Router2 是 DHCP 服务器(它不一定是)。而 Router2只是为 HostE 分配了它的地址。那么理论上,HostE 会知道 Router2 的 MAC 地址。但是 ARP 条目不会持续向前,尤其是在客户端上。例如,我的 Windows 7 笔记本电脑仅保留 34.5 秒的 ARP 条目(见下文)。
所以即使 Router2 是 DHCP 服务器,并且给了 HostE 它的 IP 地址,HostE 的 ARP 缓存迟早会超时,它必须重新运行广播 ARP 请求,就像 HostE 一直只有一个静态分配的IP。
C:\Users\eddie>netsh interface ipv4 show interfaces 20
Interface Local Area Connection Parameters
----------------------------------------------
IfLuid : ethernet_11
IfIndex : 20
State : connected
Metric : 20
Link MTU : 1500 bytes
Reachable Time : 34500 ms <-----
Base Reachable Time : 30000 ms
Retransmission Interval : 1000 ms
DAD Transmits : 3
Site Prefix Length : 64
Site Id : 1
Forwarding : disabled
Advertising : disabled
Neighbor Discovery : enabled
Neighbor Unreachability Detection : enabled
Router Discovery : dhcp
Managed Address Configuration : enabled
Other Stateful Configuration : enabled
Weak Host Sends : disabled
Weak Host Receives : disabled
Use Automatic Metric : enabled
Ignore Default Routes : disabled
Advertised Router Lifetime : 1800 seconds
Advertise Default Route : disabled
Current Hop Limit : 0
Force ARPND Wake up patterns : disabled
Directed MAC Wake up patterns : disabled