Open moooofly opened 5 years ago
我们的 app 提供了网络诊断工具,其中需要使用 ping 和 traceroute 之类的工具,以便提供 latency 和路由相关的诊断信息;
ping
traceroute
在 iOS 端存在的问题是:
mtr
tcptraceroute
是否存在一种不需要 root privilege 就可以在 iOS 系统中模拟 tcptraceroute 的 socket 实现方式?
背景
我们的 app 提供了网络诊断工具,其中需要使用
ping
和traceroute
之类的工具,以便提供 latency 和路由相关的诊断信息;在 iOS 端存在的问题是:
traceroute
工具,故需要自行通过 socket 编程进行相应的实现;之前实现的第一个版本是基于 UDP 的,通过xx框架实现,因此没有直接涉及到 root privilege 的问题;traceroute
或mtr
能够提供更为有效的信息(避免由于人为设置导致的 ICMP 或 UDP 不回应,以及常见的中间路由器关闭 ICMP 的情况);traceroute
对 tcp 的支持是通过包含tcptraceroute
的方式实现的;而 macOS 中,目前仍旧通过两个工具traceroute
和tcptraceroute
分别提供相应的功能;tcptraceroute
的实现是基于 raw socket 的,需要 root privilege ,而在 iOS 上 root privilege 问题不好解决,因此,希望寻求一种绕开权限的方式来实现;问题
是否存在一种不需要 root privilege 就可以在 iOS 系统中模拟
tcptraceroute
的 socket 实现方式?