TCP-IP详解卷1:协议读书笔记_8

Traceroute程序

Traceroute程序可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由。Traceroute还可以让我们使用IP源路由选项。

Traceroute程序的操作:

为什么不使用上一节中的IP数据报的RR功能记录IP路由:
1.并非所有的路由器都支持记录路由选项,因此该选项在某些路径不能使用;
2.记录路由一般是单项的选项。发送端设置了该选项,那么接收端不得不从收到的IP首部中提取出所有的信息,然后全部返回给发送端;
3.IP首部中留给选项数据的空间有限,不能存放太多的路径。

Traceroute程序使用ICMP报文和IP首部中的TTL字段(生存周期)。TTL字段是由发送端初始化一个8bit的字段。推荐的初始值由分配数字RFC指定。每个处理数据包的路由器要把TTL的值减1或者减去数据报在路由器中停留的秒数。由于大多数路由器转发的时间延时都小于1秒,因此TTL最终会成为一个跳站的计数器,所经过的每个路由器都将值减少1。

TTL字段存在的目的是防止数据报在选路时无休止地在网络上流动。当路由器收到一份IP数据报,如果其TTL字段的值是0或1,则路由器不转发该数据报,同时路由器将该数据报丢弃,并给信源机发送一份ICMP“超时”信息。Traceroute程序的关键在于包含这份ICMP信息的IP报文的信源地址是该路由器的IP地址。

Traceroute程序发送一份UDP数据报给目的主机,但它选择一个不可能的值作为UDP端口号(大于30000),使目的主机的任何一个应用程序都不可能使用该端口。因为,当该数据报到达时,将使目的主机的UDP模块产生一份“端口不可达”错误(见6.5节)的ICMP报文。这样,Traceroute程序所要做的就是区分接收到的ICMP报文是超时还是端口不可达,以判断什么时候结束。

windows下命令为 tracert

局域网输出

Traceroute示例

运行Traceroute程序得到输出给出了目的主机和其IP地址,指出Traceroute程序最大的TTL字段值为30,40字节的数据报包含20字节IP首部,8字节UDP首部和12字节的用户数数据。

输出TTL值,以及主机和路由器名以及其IP地址。对于每个TTL值,发送3分数据报。每接收到一份ICMP报文,就计算并打印出往返时间。如果5秒中内仍未收到3分数据包的任一一份的相应,就打印一个星号,并发送下一份数据报。

往返时间是发送主机的Traceroute程序计算的,它是指从traceroute程序到该路由器的总往返时间。

之前有两种ICMP超时报文,它们的ICMP报文中code字段不同,下图是这种ICMP差错报文的格式。


ICMP超时报文

关于Traceroute程序,有一些需要指出的事项:
1.并不能保证现在的路由也是将来所要采用的路由,甚至两份连续的IP数据报都可能采用不同的路由;
2.不能保证ICMP报文的路由与Traceroute程序发送的UDP数据报采用同一路由;
3.返回的ICMP报文中的信源IP地址是UDP数据报到达的路由器接口的IP地址。

广域网输出

下图是从windows主机到www.baidu.com的情况,与局域网比较相差不大。

Windows->www.baidu.com

IP源站选路选项

通常IP路由是动态的,即每个路由器都要判断数据报下面该转发到哪个路由器。应用程序对此不进行控制,通常也不关心。
源站选路的思想是由发送者指定路由,它可以采用以下两种形式:
1.严格的源站路由选择。发送端指明IP数据报所必须采用的确切路由。如果一个路由器发现源站路由所指定的下一个路由器不在其直接连接的网络上,那么它就返回一个"源站路由失败"的ICMP差错报文。
2.宽松的源站选路。发送端指明了一个数据报经过的IP地址清单,但是数据报在清单上指明的任意两个地址之间可以通过其他路由器。

下图给出了源站路由选项的格式:


源站路由格式

这个格式与我们之前记录路由选项格式基本一致。不同之处在于,对于源站选路,我们必须在发送IP数据前进行填充IP地址清单;而对于记录路由选项来说,必须尽可能的分配空间,以达到9个地址。

对于宽松的源站选路来说,code字段的值为0x83;而对于严格的源站选路,其值为0x89。

源站路由选项的实际称呼为“源站及记录路由”(对于宽松的源站选路和严格的源站选路,分别用LSRR和SSRR表示),这是因为在数据报沿路由发送过程中,对IP地址清单进行了更新。下面是其运行过程:
1.发送主机从应用程序接受源站路由清单,将第一个表项去掉(它是数据报的最终目的地址),将剩余的项移到1个项中,并将原来的目的地址作为清单的最后一下那个。指针仍然指向第一项。
2.每个处理数据报的路由器检查其是否为数据报的最终地址。如果不是,则正常转发数据报(在这种情况下,必须指明宽松源站选路,否则就不能接收到该数据报)。
3.如果该路由器是最终目的,且指针不大于路径的长度,那么(1)有ptr所指定的清单中的下一个地址就是数据报的最终目的地址;(2)由外出接口相对应的IP地址取代刚才使用的源地址;(3)指针加4。

示例

小结

在一个TCP/IP网络中,traceroute程序是不可缺少的工具。其操作很简单:开始时发送一个TTL字段为1的UDP数据报,然后将TTL字段每次加1,以确定路径中的每个路由器。每个路由器在丢弃UDP数据报时都返回一个ICMP超时报文2,而最终目的主机则产生一个ICMP端口不可达的报文。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,717评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,501评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,311评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,417评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,500评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,538评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,557评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,310评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,759评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,065评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,233评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,909评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,548评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,172评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,420评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,103评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,098评论 2 352