【发布时间】:2019-04-06 03:18:15
【问题描述】:
我试图为 MS Windows 找到可供普通用户(没有管理员权限)使用的 traceroute 程序实现,但我找不到任何东西。我能找到的那些(如 tracetcp 或 nmap)需要 PCAP 库,并且为了安装 winpcap,我认为需要管理权限。
我不太了解 Windows 内部结构,但我想知道背后的“魔力”是什么。如果 MS 提供的带有 Win OS 的 tracert 对普通用户工作正常(但它只能使用 ICMP),那么普通用户为 TCP/UDP 数据包设置 TTL 并在套接字上接收相应的响应是否存在任何问题(技术限制),例如:
- ICMP:TTL 在传输中过期
- UDP:端口不可达
- 可能还有其他几个(如 TCP RST、ICMP 主机无法访问等)?
所以基本上:
- 如果没有问题,为什么没有合理的跟踪路由实施 窗户?
- 如果 TCP/UDP 存在技术限制,那么为什么 原始 MS ICMP 跟踪路由对非管理员用户是否正常工作?
我知道最流行的带有 -T 选项(用于使用 SYN 探测)的 linux traceroute 也需要 root 权限,但我假设这只是因为它不想在收到 SYN-ACK 后完成完整的 TCP 握手和发送 RST可能会被限制为 root。无论如何,只要 TTL 可以由普通用户设置(对于 UDP,它似乎工作正常),那么我想 TCP traceroute 完成完整的 TCP 握手应该可以为非 root linux 用户实现? 顺便说一下,由于使用 RAW 套接字,ICMP 跟踪路由也需要管理员权限,但令人惊讶的是,对于 Windows,这似乎不是问题。
【问题讨论】:
标签: windows sockets tcp udp traceroute