【发布时间】:2023-11-08 01:01:01
【问题描述】:
如何发送icmp 请求并控制我正在编写的 Linux C 用户空间应用程序的下一跳。
我有一个网卡 (192.168.1.10/24),它连接到同一子网中的 2 个路由器(192.168.1.1 和 192.168.1.2)。
我想通过192.168.1.1 和192.168.1.2 访问互联网(8.8.8.8),并根据延迟结果决定我的默认路由。
有没有办法可以控制用户空间 C 中的直接下一跳?我正在使用原始套接字。
【问题讨论】:
-
我建议您对与
ping密切相关的实用程序进行一些研究,即traceroute实用程序。如果你这样做了,你会发现它是如何逐跳“追踪”到目的地的路线。 -
你需要设置目标MAC地址来匹配你的下一跳。不确定原始套接字的确切含义,如果您想在以太网标头中四处寻找,您应该使用a packet socket。
-
跟踪/跟踪路由对我有帮助吗?它只是每跳递减 TTL。
-
好吧,我想我看错了你的问题......你想在两条路线之间切换(以编程方式),但不知道你的数据包正在走哪条路线?
-
@Someprogrammerdude 。几乎。我知道如何切换路线。我想通过 R1 (192.168.1.1) 和 R2 (192.168.1.2) 不断测试延迟,并根据它改变路由能力。