using system;
using system.threading;
using system.diagnostics;
using system.text.regularexpressions;
using system.net;
using system.net.networkinformation;
namespace tracert
; static int g_nhops = 30;
static int g_ntimeout = 3000;
static bool g_bcanceled = false;
public struct icmp_param
static void icmp_pingcompleted(object sender, pingcompletedeventargs e)
:\t ms\t",
param.m_pingoptions.ttl,
(e.reply.status == ipstatus.timedout) ? "*" : ndeltams.tostring(),
e.reply.address.tostring());
if (param.m_ipaddress.equals(e.reply.address))
if (param.m_pingoptions.ttl >= g_nhops)
ping icmp = (ping)sender;
param.m_pingoptions.ttl++;
param.m_nsendticks = datetime.now.ticks;
icmp.sendasync(param.m_ipaddress, g_ntimeout, ping_buffer, param.m_pingoptions, param);
}static void usage()
[-h max_hops] [-w timeout] ip/domain", process.getcurrentprocess().processname);
}static void main(string args)
else
else
}else
switch (args[i][1])
break;
case 'w':
case 'w':
if (!int.tryparse(sztmp, out g_ntimeout))
break;
default:
usage();
return;}}
else}}
console.cancelkeypress += new consolecanceleventhandler(console_cancelkeypress);
icmp_param param = new icmp_param();
param.m_pingoptions = new pingoptions(1, false);
if (!ipaddress.tryparse(szdomain, out param.m_ipaddress))
}if (param.m_ipaddress == null)
console.writeline("正在跟蹤到 間的路由:", szdomain, param.m_ipaddress.tostring());
}catch (exception ex)
}else
間的路由:", param.m_ipaddress.tostring());
}ping icmp = new ping();
icmp.pingcompleted += new pingcompletedeventhandler(icmp_pingcompleted);
param.m_nsendticks = datetime.now.ticks;
icmp.sendasync(param.m_ipaddress, g_ntimeout, ping_buffer, param.m_pingoptions, param);
while (!g_bcanceled)
}static void console_cancelkeypress(object sender, consolecanceleventargs e)
}}
tracert的原理比較簡單,每個路由器收到icmp報文都會將ttl減一再傳送到下乙個路由,當ttl減少到0時將值返回源ip位址,可以利用這個原理從1開始逐步增加ttl的值來獲取到指定ip路徑上經過的路由ip。附上的**是c#控制台**。
跟蹤路由 Tracert
tracert 跟蹤路由 是路由跟蹤實用程式,用於確定 ip 資料報訪問目標所採取的路徑。tracert 命令用 ip 生存時間 ttl 欄位和 icmp 錯誤訊息來確定從乙個主機到網路上其他主機的路由。tracert 工作原理 通過向目標傳送不同 ip 生存時間 ttl 值的 internet 控...
路由跟蹤tracert
tracert命令 如果我們要測試某乙個ip都經過哪些路由,用trcert命令即可,這是dos下的乙個基本網路命令,具體使用方法 1,在windows系統下,開啟 執行 輸入 cmd 在彈出的dos視窗中輸入 tracert ip domain 2,ip是您要檢視的ip,網域名稱就是您的網域名稱 這...
tracert 路由跟蹤程式
c users administrator tracert 10.0.0.1 通過最多 30 個躍點跟蹤到 10.0.0.1 的路由 1 1 毫秒 1 ms 3 ms 192.168.1.1 2 1 毫秒 1 ms 1 ms 10.0.0.1 跟蹤完成。c users administrator t...