Unix编程/应用问答中文版 ---10.网卡相关问题
本的Linux系统中net-tools包中有一个mii-tool命令,可以用于检查这些数据,
而不是溶合在ifconfig的输出中。
10.14 traceroute是怎么实现的
Q: traceroute是怎么实现的
A: 小四 <cloudsky@263.net>
traceroute(对于Windows系列是tracert)通过逐步增加TTL值的方法,发送常规IP分
组来实现。第一次发送分组时TTL为1,第一个路由器接收到该分组之后将TTL值减1,
结果为0,于是就丢弃该分组,并发回一个"TTL超时"的ICMP报文,该报文的源地址是
这第一个路由器。紧接着发送一个TTL为2的分组。注意,traceroute发送常规的UDP
报文到一个不用的UDP端口。当初考虑将路由跟踪的功能加入IP协议本身,定义一个
"路由跟踪"选项,路由器处理带有该选项的IP包时立即发回一个跟踪报文到源站点。
然而这种做法还停留在实验室阶段,因为这需要改变所有已经存在的路由器,而且在
某种程度上与端到端原则相违背。
1) 传统的Unix实现是UDP+ICMP
2) 其实从原理上TCP+ICMP也是可以的,某些Unix系统采用了这种实现
3) Windows另有一种实现,Icmp Echo Request+ICMP
而不是溶合在ifconfig的输出中。
10.14 traceroute是怎么实现的
Q: traceroute是怎么实现的
A: 小四 <cloudsky@263.net>
traceroute(对于Windows系列是tracert)通过逐步增加TTL值的方法,发送常规IP分
组来实现。第一次发送分组时TTL为1,第一个路由器接收到该分组之后将TTL值减1,
结果为0,于是就丢弃该分组,并发回一个"TTL超时"的ICMP报文,该报文的源地址是
这第一个路由器。紧接着发送一个TTL为2的分组。注意,traceroute发送常规的UDP
报文到一个不用的UDP端口。当初考虑将路由跟踪的功能加入IP协议本身,定义一个
"路由跟踪"选项,路由器处理带有该选项的IP包时立即发回一个跟踪报文到源站点。
然而这种做法还停留在实验室阶段,因为这需要改变所有已经存在的路由器,而且在
某种程度上与端到端原则相违背。
1) 传统的Unix实现是UDP+ICMP
2) 其实从原理上TCP+ICMP也是可以的,某些Unix系统采用了这种实现
3) Windows另有一种实现,Icmp Echo Request+ICMP
Tags:Unix,编程,应用,问答,中文版,网卡,相关,问题

