1

我正在尝试创建一个测试来验证 PHY 环回是否正常工作。用c语言在linux上开发。这基本上就是测试当前正在做的事情:

  1. 调出接口并确保它具有有效的 IP 地址
  2. 在 UDP 模式下创建两个套接字 (SOCK_DGRAM)
  3. 将两个套接字绑定到正在测试的特定接口
  4. 将传入套接字绑定到特定端口
  5. 使用 sendto 写入传出套接字,指定端口和 IP 地址
  6. 从传入的套接字读取

我遇到的问题是,无论是否启用环回,我总是在读回数据。该接口未连接到交换机,因此我不希望数据通过物理电缆返回。我怀疑堆栈会在数据到达 PHY 之前将数据路由回去。有什么方法可以确保数据包物理地从接口发送出去?

4

1 回答 1

1

正如您可能已经猜到的那样,这不是一个错误,而是一个特性(也是一个必不可少的特性)。但是,我怀疑您是否能够在没有第二个接收器的情况下测试 PHY。

案例 #1:NIC 将数据发送到集线器(这些仍然存在吗?)。集线器只会放大信号。没有人会与 NIC 讨论该信号。NIC 没有兴趣在发送信号时读取它自己的信号。

案例#2:网卡将数据发送到交换机。开关将在其路由中自动永远不会将信号发送回源。这样做没有意义,并且在某些情况下(例如广播包)会导致网络出现严重问题。

案例#3:您有一个复杂的网络设置,其中可能出现循环。要么你的网络被搞砸了,要么你使用像生成树这样的技术来明确地阻止你的信号被路由回你。

如您所见,内部数据路由是必不可少的。您没有机会通过一个物理以太网接口发送某些东西并在同一端接收它。

于 2013-04-19T16:41:33.720 回答