有没有人有C#代码方便ping和traceroute到目标计算机?我正在寻找一个纯代码解决方案,而不是我现在正在做的,它调用ping.exe和tracert.exe程序并解析输出.我想要一些更强大的东西.
我正在寻找一种方法来进行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.
看起来几乎是神奇的.traceroute命令为了映射到Internet上某个其他节点的整个路径而执行的操作是什么?
我需要创建一个跟踪路由作为.NET应用程序的一部分来支持故障排除.我已经弄清楚如何使用.NET Ping类来进行跟踪.我不明白的是命令行实用程序报告的数字是什么.这是Windows命令行中"tracert yahoo.com"的一些审查结果:
追踪到yahoo.com [206.190.60.37]的路线,最多30个跳:
1 <1 ms <1 ms <1 ms xx.xx.xx.xx
2 7 ms <1 ms <1 ms yy.yy.yy.yy
3 42 ms 37 ms 41 ms zz.zz.zz.zz
4 38 ms 37 ms 37 ms aa.aa.aa.aa
5 36 ms 36 ms 36 ms bb.bb.bb.bb
6 42 ms 41 ms 41 ms cc.cc.cc.cc
--- more lines deleted ---
Run Code Online (Sandbox Code Playgroud)
第一列是索引,接下来的三列是以毫秒为单位的时间.我在网上搜索了一些解释,并且已经干了.我认为它们可能是最小,平均和最大数字,但第2行似乎反驳了这个想法.
Jon Stonecash
根据Stevens(TCP/IP Illustrated),traceroute程序使用增量TTL(1,2,3等)将UDP数据包发送到目标主机,以从ICMP TTL EXPIRED消息中获取中间跃点信息.
" 到达目的地 "条件是ICMP PORT UNREACHABLE消息,因为traceroute寻址一个具有高数字的随机端口(即:不太可能有人在那里听)
所以我的问题是:是否存在技术原因(缺点,RFC等) )使用UDP数据包而不是使用例如ICMP回应请求消息(增加TTL)并使用echo reply answer作为结束条件?
我知道ICMP回应应答可能会被中间的防火墙或其他网络设备过滤掉,但我想这也会发生在UDP数据包上;)
非常感谢
Sergio
我有两台计算机,一台Windows和一台Linux并排放在我的桌面上,两台都连接到同一个互联网.如果我在www.stackoverflow.com和traceroute www.stackoverflow.com上运行tracert,则两者都返回相同的数据.但是,Windows上的tracert与Linux上的traceroute一样长(使用相同的参数)(linux tr几乎是瞬时的)
我试过tracert -d但没有真正的区别可言.
如何让Windows tracert以相同的速度返回?
谢谢
我可以在Chrome中加载www.cnn.com,但是当我从命令行(OSX)执行traceroute时,它会在level3.net上超时
我使用此Chrome扩展程序来验证Chrome用于www.cnn.com的IP(我找不到使用Chrome调试程序查看IP地址的方法):https: //chrome.google.com/webstore/detail/ ipvfoo/ecanpcehffngcegjmadlcijfolapggal
当我使用CLI跟踪路由到相同的IP地址时,它会超时?
是否有任何诊断来弄清楚或理解为什么traceroute在这种情况下超时?我认为traceroute和浏览器都使用相同的OS网络层来路由TCP/IP流量?
我正在使用PSVersion 2.0,我想知道是否有相当于traceroute它?
我知道PowerShell v4有没有Test-NetConnection cmdlet做tracert但v2 ?! 可以这样做:
Test-NetConnection "IPaddress/HOSTaname" -TraceRoute
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在尝试将TraceRoute程序从Linux移植到OSX,并且我无法找到IP_RECVERR等效项.
大多数人进行数据包解析的方式是:
setsockopt (sock, IPPROTO_IPV4, IP_RECVERR, &on, sizeof (on))
Run Code Online (Sandbox Code Playgroud)
然后,当数据包进入时,请执行以下操作:
sock_extended_err* err = nullptr;
for (cmsghdr* cmsg = CMSG_FIRSTHDR(&msg); cmsg; cmsg = CMSG_NXTHDR(&msg, cmsg)) {
switch (cmsg->cmsg_level) {
case IPPROTO_IPV4:
if (cmsg->cmsg_type == IP_RECVERR) {
err = (sock_extended_err*)CSMSG_DATA(cmsg);
}
break;
}
}
Run Code Online (Sandbox Code Playgroud)
在OSX上也没有sock_extended_err是有问题的.我真的只需要知道是否有错误,以及错误源自何处.
我有一个带有标头参数的GET请求,我想检查我的应用程序正在使用哪个数据库实例。有什么方法可以构建一个cURL请求,该请求可以告诉我请求的去向?我知道有一个traceroute显示所有服务器跃点的命令。但是有没有类似于使用cURL的东西?
traceroute ×10
networking ×4
linux ×2
windows ×2
.net ×1
actionscript ×1
c ×1
c# ×1
client-side ×1
curl ×1
icmp ×1
java ×1
javascript ×1
macos ×1
ping ×1
powershell ×1
udp ×1
unix ×1