traceroute 和 tracepath 执行类似的功能,但有何不同?

traceroute 和 tracepath 执行类似的功能,但有何不同?

我最近在 HowToGeek 上读到一篇文章,让我有点摸不着头脑。不过我对 Linux 的经验相当少,所以如果这是入门级的,请原谅我:

“tracepath 命令与 traceroute 类似,但它不需要 root 权限。”

http://www.howtogeek.com/108511/how-to-work-with-the-network-from-the-linux-terminal-11-commands-you-need-to-know/

traceroute 和 tracepath 执行类似的功能,但有何不同?

traceroute 能做什么?它需要 root 权限,而 tracepath 不需要。

是否存在应该优先使用 tracepath 而不是 traceroute 的情况,反之亦然?

答案1

traceroute 和 tracepath 执行类似的功能,但有何不同?

这两个程序本质上都做一件事:发送和接收某些 IP 数据包。

程序可以使用常规套接字 API 来执行此操作,也可以从接口操纵原始数据包。套接字 API 不需要 root 权限,因为它相当安全。内置有机制来防止一个程序访问另一个程序生成的 IP 数据包。

Tracepath 使用套接字 API 来实现其所有功能。Traceroute 操纵原始数据包来实现其部分功能。

traceroute 能做什么?它需要 root 权限,而 tracepath 不需要。

它可以操纵原始数据包。

要操纵原始数据包,您需要 root 权限,因为这样做会绕过套接字 API 的安全机制。您可以访问使用该接口的所有其他进程和用户的通信。试想一下,如果病毒可以操纵原始数据包,它会做什么。

是否存在应该优先使用 tracepath 而不是 traceroute 的情况,反之亦然?

Traceroute 中提供的一项高级命令是使用 IPv4 或 IPv6 协议运行网络跟踪。还可以为探测选择 ICMP、TCP 或 UDP 数据格式。Traceroute 可以为探测选择特定的源路由并选择从哪个端口发送。它可以设置从出站探测接受的最小和最大 TTL 限制。此外,Traceroute 可以显示响应 ping 的等待时间,以及设置每次探测发送多少个数据包以及发送多少个探测。其中一些命令可能不受路径上的网络硬件支持,这可能会在探测到达目标目的地之前终止探测。

来源: 1 2 3

答案2

您可以使用traceroute它进行高级网络跟踪,您可以在 IPv4 和 Ipv6 协议之间进行选择,还可以在 ICMP、TCP 或 UDP 数据格式之间进行探测。

因此,它比使用 UDP 数据包进行跟踪traceroute具有更多高级选项。tracepath

现在关于超级用户权限

你可以使用traceroute普通用户和超级用户,这取决于选项您想使用,这里有一个例子:

在此处输入图片描述

这里我们使用UDP不需要超级用户权限的数据包

在此处输入图片描述

这里我们使用ICMP回显需要权限的数据包。

经过ICMP数据包可以发起 DDOS 攻击。

了解 ICMP 选项Traceroute 手册页

要查看traceroute选项,请在终端中输入man traceroute

ICMP需要超级用户权限,以确保只有管理员可以使用它的某些选项,因为它可以用于进行死亡ping并收集有关特定网络的信息,这里的权限将赋予超级用户使用ICMP数据包更改选项的能力。

您可以看到,当您尝试 ping 诸如这样的网站时www.microsoft.com,即使它在线,您的 ping 也会失败,这是因为 Microsoft 路由器阻止了 ICMP_requests。

因此,Linux 保护系统免受非特权用户的攻击,这样他们就无法使用这些命令进行攻击。

答案3

我认为你必须读一下这个 http://www.ehow.com/list_7526520_differences-between-traceroute-tracepath.html

来自上述链接:

追踪路径

Tracepath 跟踪到指定网络地址的路径,并报告沿途的“生存时间”或 TTL 延迟和最大传输单元 (MTU)。除命令行提示符外,任何用户都可以运行此命令。


跟踪路由基础知识

Traceroute 本质上与 Tracepath 相同,只是默认情况下它只会提供 TTL 值。如果您需要其他数据,则必须在命令行上请求这些变量。此外,traceroute 需要超级用户访问权限才能在 Linux 机器上运行该命令,并且路径上的所有路由器可能不支持某些高级数据请求。在 Windows 环境中,任何有权访问命令行的用户都可以运行 Traceroute。

答案4

pingtraceroute使用 ICMP 协议。与 UDP 和 TCP 一样,它可通过常规套接字 API 访问。只有小于 1024 的 UDP 和 TCP 端口号受到保护,禁止非 root 用户使用。ICMP 可供所有用户免费使用。

如果你真的想了解 ping 和 traceroute 是如何工作的,你可以从这里下载一个示例 C 代码实现代码项目

简而言之,它们简单地打开一个 ICMP 套接字,然后 traceroute 使用 setsockopt 改变 TTL 的增量,直到达到目标。

来源 :关联

相关内容