【问题标题】:How can I get the gateway/router address from a pcap.net packet?如何从 pcap.net 数据包中获取网关/路由器地址?
【发布时间】:2014-09-20 22:09:51
【问题描述】:

这可能有一个非常明显的答案,但是我刚刚在pcap.net中收到的数据包的路由器/网关IP地址的常用方法是什么?

我知道如何获取IP地址来源:

       packet.Ethernet.IpV4.Source.ToString()

我尝试浏览对象浏览器,但没有找到似乎匹配的属性。有什么办法可以找到吗?

【问题讨论】:

    标签: vb.net networking pcap.net


    【解决方案1】:

    这更多的是网络问题,而不是编程问题。一个简短的答案是 - 你不能。

    源 IP 地址将始终(除非网关奇怪地转换)属于您想要连接的端点。这样,您的应用程序将获得对您发送的任何请求的响应。除非您使用 NAT,否则路由器不会以任何方式更改数据包,因此从连接的角度来看它是透明的。您刚刚获得的数据包的源地址几乎总是包含您连接到的服务器的 IP 地址。这就是以太网的工作方式。

    穷人的解决方案是使用 traceroute 找出数据包的路径,从而获得路由器的地址,这通常是沿途的第一跳。从程序员的角度来看,这意味着向目的地发送几个数据包您从中获取数据包,每次增加数据包的 TTL(从 1 开始)并查看 ICMP 响应。但是,如果正在进行某种负载平衡,这可能会误导您。

    也许如果你澄清了你想要实现的目标,我可以为你指明一个更好的方向。

    【讨论】:

    • 谢谢你这么说,但我的方向很简单。我有一个设备发送一个数据包说“我在这里!”。我想知道它来自哪个路由器,而不必通过来自设备的 HTTP 请求来查看它认为它分配给哪个路由器。但是,如果做不到,也没关系。
    • 仍然不是一个简单的答案,因为我不知道您拥有的整个网络,但您可以使用以太网 (MAC) 地址来了解数据包通过哪个路由器。每个以太网网络设备都存储网关的 IP 地址和 MAC 地址之间的映射。这是ARP表。您可以尝试将此信息添加到数据包的有效负载中,因为数据包的较低层将无法显示该信息。不过不知道这种解决方案对你有没有用。
    猜你喜欢
    • 2014-10-31
    • 2015-12-17
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2014-03-29
    相关资源
    最近更新 更多