Tracert 命令

一.实验目的

  通过抓包,了解Tracert 命令的工作方式

 

二.实验拓扑

Tracert 命令_路由

一.实验步骤

1.为每个路由器配置IP

2.配置RIP,确保全网互通

3.使用Tracert命令,在RT1Tracert 3.3.3.2,通过在RT1上的G0/0接口抓包,查看数据包的内容

 

四.实验内容

RT1

<H3C>system-view

[H3C]sysname ZJRT1

[ZJRT1]interface GigabitEthernet 0/0

[ZJRT1-GigabitEthernet0/0]ip address 1.1.1.1 24

[ZJRT1-GigabitEthernet0/0]undo shutdown

[ZJRT1-GigabitEthernet0/0]quit

[ZJRT1]rip 1

[ZJRT1-rip-1]network 1.1.1.0

 

RT2

<H3C>system-view

[H3C]sysname ZJRT2

[ZJRT2]interface GigabitEthernet 0/0

[ZJRT2-GigabitEthernet0/0]ip address 1.1.1.2 24

[ZJRT2-GigabitEthernet0/0]undo shutdown

[ZJRT2-GigabitEthernet0/0]quit

[ZJRT2]interface GigabitEthernet 0/1

[ZJRT2-GigabitEthernet0/1]ip address 2.2.2.1 24

[ZJRT2-GigabitEthernet0/1]undo shutdown

[ZJRT2-GigabitEthernet0/1]quit

[ZJRT2]rip 1

[ZJRT2-rip-1]network 1.1.1.0

[ZJRT2-rip-1]network 2.2.2.0

 

RT3

<H3C>system-view

[H3C]sysname ZJRT3

[ZJRT2]interface GigabitEthernet 0/1

[ZJRT2-GigabitEthernet0/1]ip address 2.2.2.2 24

[ZJRT2-GigabitEthernet0/1]undo shutdown

[ZJRT2-GigabitEthernet0/1]quit

[ZJRT2]interface GigabitEthernet 0/0

[ZJRT2-GigabitEthernet0/0]ip address 3.3.3.1 24

[ZJRT2-GigabitEthernet0/0]undo shutdown

[ZJRT2-GigabitEthernet0/0]quit

[ZJRT2]rip 1

[ZJRT2-rip-1]network 3.3.3.0

[ZJRT2-rip-1]network 2.2.2.0

 

 

RT4

<H3C>system-view

[H3C]sysname ZJRT4

[ZJRT4]interface GigabitEthernet 0/0

[ZJRT4-GigabitEthernet0/0]ip address 3.3.3.2 24

[ZJRT4-GigabitEthernet0/0]undo shutdown

[ZJRT4-GigabitEthernet0/0]quit

[ZJRT4]rip 1

[ZJRT4-rip-1]network 3.3.3.0

 

现在测试网络连通性

RT1 PING RT4

Tracert 命令_路由_02

现在全网已经互通,现在在RT1上使用Tracert 命令,并在RT1上的G0/0接口抓包

Tracert 命令_路由_03

RT1 Tracert RT4成功,我们现在查看抓包都抓到什么

Tracert 命令_路由_04

我们可以看到,RT1发送的是一个基于UDP的报文,我们展开看看里面都包含什么

Tracert 命令_路由_05

其中三层封装的是源目MAC,然后有一个Time to live (ttl)值为1,代表这个报文的存活时间为1,在四层,还封装了端口号,是33434,这个端口号是一个高端口,不提供任何的服务,当这个数据包到达第一台路由器时,回复给RT1的是一个TTL超时的报文,我们展开看下

 

三层

Tracert 命令_路由_06

里面包含了源目IP,源地址是RT2的,目的地址是RT1,说明这个数据包是RT2回复的

四层

Tracert 命令_路由_07

里面的信息意识是你发的数据包源是1.1.1.1,目的是3.3.3.2TTL1,到我这,数据包的存活时间就为0了,所有TTL超时,我送不到3.3.3.2

RT1收到后,会再次发送一个UDP报文,我们再查看其中的信息

三层

Tracert 命令_路由_08

这次发送的还是源地址为1.1.1.1,目的地址为3.3.3.2,但是,这次的TTL值为2,说明,存活时间为2,,所有能够到达RT3

四层

Tracert 命令_路由_09

四层还是一样,还是一个不提供服务的高端口号

这时,RT3收到,会给RT1回复,我们查看RT3的回包

三层

Tracert 命令_路由_10

还是一样,源IP2.2.2.2,目的为1.1.1.1,这时RT3RT1的回包

四层

Tracert 命令_路由_11

意思为这个数据包的目的地址为3.3.3.2,而TTL值只为1,所有我不能帮你传递了,因为已经超时了

RT1收到后会再次发送一个数据包,TTL值再加一,这时,数据包能够到达目的地址,我们查看下到达目的后,RT4回包

三层

Tracert 命令_路由_12

源地址为3.3.3.2,目的地址为1.1.1.1

四层

Tracert 命令_路由_13

告诉RT1,我收到了一个数据包,源地址是1.1.1.1,目的地址为3.3.3.2,里面像我请求了一项服务,端口号为33442,但是我没有提供这项付费,所有告诉RT1,端口不可达

 

这就是Tracert 命令的工作方式,首先发送一个数据包,设置其中的TTL值为1,里面请求了一项服务,该服务的端口号是一个高端口,当到达第一个路由器时TTL变为0,无法继续传递,如果第一个路由器为数据包的目的地址,则回复一个端口不可达的,如果不是第一个路由器不是目的地址,则回复一个TTL超时,源收到TTL超时时,会再发送一个数据包,这时,会将TTL1发送,同时,会记录下别人回包的地址。