以太网环回测试

时间:2013-04-19 15:26:29

标签: c linux sockets ethernet

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

  1. 打开界面并确保其具有有效的IP地址
  2. 在UDP模式下创建两个套接字(SOCK_DGRAM)
  3. 将两个套接字绑定到正在测试的特定接口
  4. 将传入套接字绑定到特定端口
  5. 使用sendto写入传出套接字,指定端口和IP地址
  6. 从传入套接字读取
  7. 我遇到的问题是,无论是否启用了环回,我总是会回读数据。接口未连接到交换机,因此我不希望数据通过物理电缆返回。我怀疑堆栈是在它到达PHY之前将数据路由回来的。有没有办法确保数据包物理地从接口发出?

1 个答案:

答案 0 :(得分:1)

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

案例#1:NIC将数据发送到集线器(这些仍然存在吗?)。集线器只会放大信号。没有人会回答有关信号的NIC。 NIC在发送时无需读取自己的信号。

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

案例#3:您有一个复杂的网络设置,可以进行循环。您的网络可能已被启动,或者您使用生成树等技术来明确阻止您的信号被路由回给您。

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