Fra*_*nck 18 javascript java actionscript traceroute client-side
我正在寻找一种方法来进行traceroute客户端,即在浏览器中.
据我所知,通过Javascript或Flash发送任意TTL值的ICMP,UDP或TCP数据包是不可能的.我知道Flash允许通过Actionscript中的Socket类进行TCP连接,但它对于traceroute实现似乎没有用.
是开发浏览器插件的唯一解决方案吗?
编辑:我刚刚发现它已经完成了Java applet:http://www.codefromthe70s.org/traceroute.aspx
坏消息是这个applet需要签名代码,因为它实际上解析了底层客户端系统的ping可执行文件的输出.因此,要求用户允许Java应用程序运行,这很麻烦.
更多信息:http://www.codefromthe70s.org/traceroute_explained.aspx
如果有人能提供帮助,我仍在寻找更简单的解决方案.
编辑2:谢谢你的回答.我想我必须使用Java.
我想知道NaCl(http://code.google.com/p/nativeclient/)是否会支持某种traceroute app.
您根本无法通过浏览器执行此操作。Javascript最多可以打开返回其原始服务器的连接以进行AJAX请求,但只能通过HTTP进行。Flash可以与任意主机通信,但前提是它们必须在原始服务器的crossdomain.xml文件中列出,并且只能通过TCP进行通信。Flash中的UDP支持显然尚待解决。
Traceroute和ping都是基于ICMP的协议,无法通过Flash或Javascript创建/控制。它们都还需要“原始”访问权限来构建自定义数据包,而这绝对不能在浏览器端完成。这就是为什么“ ping”在Unix系统上是“ SUID”程序的原因,因为原始数据包访问需要root特权。
充其量,您可以执行服务器端实现,并将输出发送到浏览器。而且即使那样,您也很可能无法通过Unix机器上的服务器内进程执行此操作,因为Web服务器不太可能以root身份运行。您必须执行系统ping和/或traceroute,然后将输出重定向回浏览器。