当我通过以太网电缆将 FPGA 连接到家用路由器 + 调制解调器设备的其中一个以太网端口时,会发生(或需要发生)哪些握手?

当我通过以太网电缆将 FPGA 连接到家用路由器 + 调制解调器设备的其中一个以太网端口时,会发生(或需要发生)哪些握手?

我有一个 FPGA 边缘设备。我想通过我家里的路由器+调制解调器设备向我的笔记本电脑发送和接收以太网数据包。我的笔记本电脑通过 wifi(用于互联网)连接到路由器+调制解调器,我通过以太网电缆将我的 FPGA 板连接到路由器+调制解调器。

  1. 我应该在我的 FPGA 中实现哪些协议和握手,以便当我将带有笔记本电脑的目标 IP + MAC 地址的以太网数据包发送到路由器 + 调制解调器设备时,它会将该以太网数据包转发到通过 wifi 连接到它的笔记本电脑?

  2. 同样,当我的笔记本电脑将包含我的 FPGA 的目标 IP + MAC 地址的以太网数据包发送到路由器时,它会将其转发到通过以太网电缆连接到它的 FPGA 吗?

  3. 路由器究竟如何知道我的 FPGA 的 IP + MAC 地址是什么(哪个握手会将该信息保存到路由器中)?

  4. 如果 FPGA 可以进行 TCP 3 次握手、响应 ARP 请求和 ping 请求,那么这足以完成我在顶部所述的所需任务吗?这些握手如何实现这一点,当以太网电缆插入路由器时究竟会发生什么,路由器需要哪些握手?

答案1

我假设您有一个作为“路由器”销售的家用/个人使用设备,它实际上包括一个用于 LAN 的 2 层交换机和一个用于将 LAN 连接到 WAN 的 3 层路由器(可能带有 NAT)。

我应该在我的 FPGA 中实现哪些协议和握手,以便当我将带有笔记本电脑的目标 IP + MAC 地址的以太网数据包发送到路由器 + 调制解调器设备时,它会将该以太网数据包转发到通过 wifi 连接到它的笔记本电脑?

如果您有 FPGA 的静态 IP 地址,则只需建立和训练以太网链路,然后您就可以使用固定的源和目标 IP 和 MAC 地址发送数据。如果您想要 FPGA 的动态 IP,则需要支持 DHCP(以及它所依赖的所有其他东西,例如 UDP)

同样,当我的笔记本电脑将包含我的 FPGA 的目标 IP + MAC 地址的以太网数据包发送到路由器时,它会将其转发到通过以太网电缆连接到它的 FPGA 吗?

如果 FPGA 具有静态 IP,则只需要 ARP 即可让笔记本电脑发现要在帧的链路层报头中使用的正确第 2 层地址。无需采取任何特殊措施来让交换机知道 FPGA 在哪个端口上。它将只是工作首先将数据包泛洪到所有交换机端口,然后在 FPGA 传输其第一帧时立即发现要使用的正确端口任何具有正确源 MAC 地址集的类型。

路由器究竟如何知道我的 FPGA 的 IP + MAC 地址是什么(哪个握手会将该信息保存到路由器中)?

路由器不一定需要知道这一点才能正确处理往返于 FPGA 的数据。它可能会将其(在其状态页面上)列为未知设备,或者根本不列出它。

如果 FPGA 可以进行 TCP 3 次握手、响应 ARP 请求和 ping 请求,那么这足以完成我在顶部所述的所需任务吗?这些握手如何实现这一点,当以太网电缆插入路由器时究竟会发生什么,路由器需要哪些握手?

参见上文。以太网链路训练建立第 1 层(物理)。在第 2 层(链路层),如果交换机需要在知道正确端口之前发送帧,它将在通信期间发现 MAC 地址 -> 端口映射,并向所有端口发送大量数据包(非目标设备将忽略这些数据包)。第 3 层 IP 地址由于 ARP 而解析为 MAC 地址,并且 IP 地址本身可以静态配置或通过 DHCP 配置。

相关内容