【问题标题】:Ethernet Loopback Test以太网环回测试
【发布时间】:2013-04-19 15:26:28
【问题描述】:

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

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

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

【问题讨论】:

  • 我怀疑我可能需要做的是发送一个目的地与接口地址不同的数据包。然后我必须观察接口是否有任何传入的数据包,甚至是不打算发送给它的数据包。一种原始的“嗅探”模式。

标签: c linux sockets ethernet


【解决方案1】:

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

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

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

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

如您所见,内部数据路由至关重要。您没有机会通过一个物理以太网接口发送某些东西并在同一端接收它。

【讨论】:

    猜你喜欢
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 2023-04-04
    • 2015-07-10
    • 2018-09-19
    • 1970-01-01
    相关资源
    最近更新 更多