C 路由跟蹤tracert

2021-06-19 02:06:10 字數 2305 閱讀 7099

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...