我们在网络基础的时候谈过关于路由的问题,两台主机之间一定要有路由才能够互通TCP/IP的协议,否则就无法进行联机。一般来说,只要有网络接口,该接口就会产生一个路由,例如,在鸟哥实验室内部的主机有一个eth0及lo,所以: [root@linux ~]# route [-nee] [root@linux ~]# route add [-net|-host] [网段或主机] netmask [mask] [gw|dev] [root@linux ~]# route del [-net|-host] [网段或主机] netmask [mask] [gw|dev] 观察的参数: -n,不要使用通信协议或主机名称,直接使用 IP 或 Port Number; -ee,使用更周详的信息来显示; 增加 (add) 和删除 (del) 路由的相关参数; -net,表示后面接的路由为一个网段; -host,表示后面接的为连接到单台主机的路由; Netmask,和网段有关,能设置 netmask 决定网段的大小; Gw,gateway 的简写,后续接的是 IP 的数值,和 dev 不同; Dev,如果只是要指定由哪一块网卡联机出去,则使用这个设置,后面接 eth0 等。 范例一:单纯的观察路由状态 [root@linux ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 0.0.0.0 192.168.10.30 0.0.0.0 UG 0 0 0 eth0 [root@linux ~]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.10.0 * 255.255.255.0 U 0 0 0 eth0 169.254.0.0 * 255.255.0.0 U 0 0 0 eth0 default Server.cluster 0.0.0.0 UG 0 0 0 eth0 在 上面的例子中仔细观察route和route -n的输出结果,你能发现有加-n参数的主要是显示出IP,至于使用route,显示的则是“主机名称”。也就是说,在默认的情况下,route会去找出 该IP的主机名称,如果未找到呢?就会显示得迟钝(有点慢),所以说,鸟哥通常都直接使用route-n了。由上面看起来,我们也知道default
= 0.0.0.0/0.0.0.0,而上面的信息有哪些你需要知道的呢? ? Destination、Genmask:这两个术语就分别是Network和Netmask了。所以这两个东西就组合成为一个完整的网段了。 ? Gateway:该网段是通过哪个Gateway连接出去的?如果显示0.0.0.0表示该路由是直接由本机传送,亦即能通过局域网的MAC直接传输;如果有显示IP的话,表示该路由需要经过路由器(网关)的帮忙才能够传送出去。 ? Flags:总共有多个标记,代表的意义如下。 Ø U(route is up):该路由是启动的。 Ø H(target is a host):目标是一台主机(IP)而非网段。 Ø G(use gateway):需要通过外部的主机来传递数据包。 Ø R(reinstate route for dynamic routing):使用动态路由时,恢复路由信息的标记。 Ø D(dynamically installed by daemon or redirect):已由服务器或转port功能设置为动态路由。 Ø M(modified from routing daemon or redirect):路由已被修改了。 Ø!(reject route):这个路由将不会被接受(用来阻止不安全的网段)。 ? Iface:这个路由传递数据包的接口。 此 外,观察一下上面的路由排列顺序,依序是由小网段(192.168.10.0/24是Class C),逐渐到大网段(169.254.0.0/16 是Class B),最后则是默认路由(0.0.0.0/0.0.0.0)。然后当我们要判断某个网络数据包应该怎么传送的时候,该数据包会经由这个路由的过程来判断。
例如,我上头仅有三个路由,若我有一个传往192.168.10.20的数据包要传递,那首先会找192.168.10.0/24这个网段的路由,找到 了,就直接由eth0传送出去。 如果是传送到Yahoo的主机呢?Yahoo的主机IP是202.43.195.52,我通过判断不是 192.168.10.0/24,也不是169.254.0.0/16,结果到达0/0时,传出去了,通过eth0将数据包传给 192.168.10.30那台Gateway主机。所以说,路由是有顺序的。 因此当你重复设置多个同样的路由时,例如,在你的主机上的两张网卡设置为相同网段的IP时,会出现什么情况?会出现如下的情况: Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 也就是说,由于路由是依照顺序来排列和传送的,所以不论数据包是由哪个接口(eth0、eth1)所接收,都会由上述的eth0传送出去,所以,在一台主机上面设置两个相同网段的IP本身没有什么意义。多此一举。除非是类似虚拟主机(Xen、VMware等软件)所架设的多主机,才会有这个必要。 范例二:路由的增加和删除 [root@linux ~]# route del -net 169.254.0.0 netmask 255.255.0.0 dev eth0 # 上面这个操作能删除掉 169.254.0.0/16 这个网段 # 请注意,在删除的时候,需要将路由表上面出现的信息都写入 # 包括netmask、dev 等参数 [root@linux ~]# route add -net 192.168.100.0 \ > netmask 255.255.255.0 dev eth0 # 通过 route add 来增加一个路由。请注意,这个路由必须能够和你互通 # 例如,如果我下达下面的命令就会显示错误: # route add -net 192.168.200.0 netmask 255.255.255.0 gw 192.168.200.254 # 因为我的环境内仅有 192.168.10.100 这个 IP ,所以不能和 192.168.200.254 # 这个网段直接使用 MAC 互通 [root@linux ~]# route add default gw 192.168.10.30 # 增加默认路由的方法。请注意,只要有一个默认路由就够了 # 在这个地方如果你随便设置后,记得使用下面的命令重新设置你的网络 # /etc/init.d/network restart 如 果是要进行路由的删除和增加,那就能参考上面的例子了,其实,使用man route里面的信息就非常丰富了。仔细查阅一下。你只要记得,当出现“SIOCADDRT: Network is unreachable”这个错误时,肯定是由于gw后面接的IP无法直接和你的网段沟通(Gateway并不在你的网段内),所以,赶紧检查一下输入的
信息是否正确。
4. ip
这里的ip是个命令,不是那个TCP/IP的IP。这个ip命令的功能可多了。基 本上,他就是集合了ifconfig和route这两个命令了,不过ip能实现的功能却又多得多,真是个相当厉害的命令。如果你有兴趣的话,请自行vi /sbin/ifup,就知道整个ifup就是利用ip这个命令来实现的。好了,怎么使用呢?让我们来看看。 [root@linux ~]# ip [option] [操作] [命令] 参数: Option,设置的参数,主要有: -s,显示出该设备的统计数据(statistics),例如总接受数据包数等; 操作,亦即是能针对哪些网络参数进行操作,包括有: Link,关于设备(device) 的相关设置,包括MTU、MAC 地址等等 addr/address,关于额外的 IP 协议,例如多 IP 的实现等等; route,和路由有关的相关设置 由上面的语法我们能知道,ip除了能设置一些基本的网络参数之外,还能够进行额外的IP协议,包括多IP的实现,真是太完美了。下面我们就分3个部分(link、addr、route)来介绍这个ip命令吧。 1. 关于设备接口(device)的相关设置:ip link ip link能设置和设备(device)有关的相关设置,包括MTU及该网络接口的MAC等,当然也能启动(up)或关闭(down)某个网络接口了。整个语法是这样的: [root@linux ~]# ip [-s] link show mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:50:fc:22:9a:cb brd ff:ff:ff:ff:ff:ff 3: sit0: mtu 1480 qdisc noop link/sit 0.0.0.0 brd 0.0.0.0 [root@linux ~]# ip -s link show eth0 2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:50:fc:22:9a:cb brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped overrun mcast 484011792 2247372 0 0 0 0 TX: bytes packets errors dropped carrier collsns 2914104290 2867753 0 0 0 0 使 用ip link show能显示出整个设备接口的硬件相关信息,如上所示,包括网卡地址(MAC)、MTU等,比较有趣的应该是那个sit0的接口了,那个sit0的接口 是用在IPv4及IPv6的数据包转换上的,对于我们仅使用IPv4的网络是没有作用的。lo及sit0都是主机内部所自行设置的。而如果加上
-s的参数后,则这个网卡的相关统计信息就会被列出来,包括接收(RX)及传送(TX)的数据包数量等,周详的内容和ifconfig输出的结果是相同 的。 范例二:启动、关闭和设置设备的相关信息 [root@linux ~]# ip link set eth0 up # 启动 eth0 这个设备接口。 [root@linux ~]# ip link set eth0 down # 就关闭啊。简单得要命 [root@linux ~]# ip link set eth0 mtu 1000 # 更改 MTU 的值,实现 1000 bytes,单位就是 bytes 使用ifconfig也能更新网卡的MTU,没什么不相同的地方,不过,如果是要更改网卡代号、MAC地址的信息的话,那可就得使用ip了。不过,设置前得要先关闭该网卡,否则会不成功。如下所示: 范例三:修改网卡代号、MAC 等参数 [root@linux ~]# ip link set eth0 name vbird SIOCSIFNAME: Device or resource busy # 因为该设备目前是启动的,所以不能这样设置。你应该这样做: [root@linux ~]# ip link set eth0 down mtu 900 qdisc pfifo_fast qlen 1000 link/ehter 00:40:d0:13:c3:46 brd ff:ff:ff:ff:ff:ff # 怕了吧?连网卡代号都能改动。不过,玩玩后记得改回来 # 因为我们的 ifcfg-eth0 还是使用原本的设备代号。避免有问题,要改回来 [root@linux ~]# ip link set vbird name eth0 在这个设备的硬件相关信息设置上面,包括MTU、MAC及传输的模式等,都能在这里设置。有趣的是那个address的项目后面接的可是硬件地址(MAC)而不是IP。非常容易搞错。切记切记。更多的硬件参数能使用man ip查阅一下和ip
link有关的设置。 2. 关于额外的IP相关设置:ip address 如果说ip link是和OSI七层协议的第二层数据链路层有关的话,那么IP address(IP addr)就是和第三层网络层有关的参数了。主要是在设置和IP有关的各项参数,包括netmask、broadcast等。 [root@linux ~]# ip address show mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:50:fc:22:9a:cb brd ff:ff:ff:ff:ff:ff inet 192.168.1.2/24 brd 192.168.1.255 scope global eth0 inet6 fe80::250:fcff:fe22:9acb/64 scope link valid_lft forever preferred_lft forever 3: sit0: mtu 1480 qdisc noop link/sit 0.0.0.0 brd 0.0.0.0 看到上面那个特别的字体吗?没错,那就是IP参数,也是ip address最主要的功能。下面我们进一步来新增虚拟的网络接口看看: 范例二:新增一个接口,名称假设为 eth0:vbird [root@linux ~]# ip address add 192.168.50.50/24 broadcast + \ > dev eth0 label eth0:vbird [root@linux ~]# ip address show eth0 2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:40:d0:13:c3:46 brd ff:ff:ff:ff:ff:ff inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0 inet 192.168.50.50/24 brd 192.168.50.255 scope global eth0:vbird inet6 fe80::240:d0ff:fe13:c346/64 scope link valid_lft forever preferred_lft forever # 看到上面的特别字体了吧?多出了一行新的接口,且名称是 eth0:vbird # 至于那个 broadcast + 也能写成 broadcast 192.168.50.255 [root@linux ~]# ifconfig eth0:vbir Link encap:Ethernet HWaddr 00:40:D0:13:C3:46 inet addr:192.168.50.50 Bcast:192.168.50.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:5 Base address:0x3e00 # 如果使用 ifconfig 就能够看到这个怪东西 范例三:将刚才的接口删除 [root@linux ~]# ip address del 192.168.50.50/24 dev eth0 # 删除就比较简单 3. 关于路由的相关设置:ip route 这个项目当然就是路由的观察和设置了。事实上,ip route的功能几乎和route命令差不多,不过,他还能进行额外的参数设计,例如MTU的规划等,功能相当强大。 [root@linux ~]# ip route show 如上述代码所示,最简单的功能就是显示出目前的路由信息,其实跟route命令相同,只是需要注意几个小细节: ? proto:此路由的路由协议,主要有Redirect、Kernel、Boot、Static、Ra等,其中Kernel指的是直接由核心判断自动设置。 ? scope:路由的范围,主要是link,即是和本设备有关的直接联机。 再来看一下怎么进行路由的增加和删除吧。 范例二:增加路由,主要是本机直接可沟通的网段 [root@linux ~]# ip route add 192.168.5.0/24 dev eth0 # 针对本机直接沟通的网段设置好路由,不必通过外部的路由器 [root@linux ~]# ip route show 192.168.5.0/24 dev eth0 scope link ……以下省略…… 范例三:增加能通往外部的路由,需通过 router [root@linux ~]# ip route add 192.168.10.0/24 via 192.168.5.100 dev eth0 [root@linux ~]# ip route show 192.168.5.0/24 dev eth0 scope link ……其他省略…… 192.168.10.0/24 via 192.168.5.100 dev eth0 # 仔细看,因为我有 192.168.5.0/24 的路由存在 (我的网卡直接联系), # 所以才能将 192.168.10.0/24 的路由丢给 192.168.5.100 # 那台主机来帮忙传递。和之前提到的 route 命令是相同的限制。 范例四:增加默认路由 [root@linux ~]# ip route add default via 192.168.1.2 dev eth0 # 那个 192.168.1.2 就是我的默认路由器 (gateway) 的意思 # 真的记得,只要一个默认路由就 OK 。 范例五:删除路由 [root@linux ~]# ip route del 192.168.10.0/24 [root@linux ~]# ip route del 192.168.5.0/24 事 实上,这个ip的命令实在是太博大精深了。刚接触Linux网络的朋友,可能会有点晕,没有关系。你先会使用ifconfig、ifup、ifdown和 route即可,等以后有了经验之后,再继续回来用ip吧。有兴趣的话,也能自行参考ethtool命令(man
ethtool)。
5.ping
这 个ping是非常重要的命令,ping主要通过ICMP数据包来进行整个网络的状况报告,当然,最重要的就是ICMP type 0、8这两个类型,分别是需求回报和主动回报网络状态是否存在的特性。要特别注意的是,ping需要通过IP数据包来传送ICMP数据包,而IP数据包里
有个相当重要的TTL(Time To Live)属性,这是个非常重要的路由特性,周详的IP和ICMP表头数据请参考网络基础的周详介绍。 [root@linux ~]# ping [-bcstnM] IP 参数: -b,后面接的是 broadcast 的 IP,用在你“需要对整个网段的主机进行 ping ”时; -c,后面接的是执行 ping 的次数,例如 -c 5 ; -n,不进行 IP 和主机名称的反查,直接使用 IP ; -s,发送出去的 ICMP 数据包大小,默认为 56(bytes),再加 8 bytes 的 ICMP 表头资料。 -t,TTL 的数值,默认是 255,每经过一个节点就会少 -M [do|dont] :主要在检测网络的 MTU 数值大小,两个常见的项目是: do,代表传送一个 DF (Don’t Fragment) 旗标,让数据包不能重新拆包和打包; dont,代表不要传送 DF 标记,表示数据包能在其他主机上拆包和打包。 范例一:检测一下 168.95.1.1 这部 DNS 主机是否存在? [root@linux ~]# ping -c 3 168.95.1.1 PING 168.95.1.1 (168.95.1.1) 56(84) bytes of data. 64 bytes from 168.95.1.1: icmp_seq=0 ttl=243 time=9.16 ms 64 bytes from 168.95.1.1: icmp_seq=1 ttl=243 time=8.98 ms 64 bytes from 168.95.1.1: icmp_seq=2 ttl=243 time=8.80 ms --- 168.95.1.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 8.807/8.986/9.163/0.164 ms, pipe 2 ping最简单的功能就是传送ICMP数据包去需求对方主机响应是否存在于网络环境中。上面的响应信息当中,几个重要的项目如下。 ? 64 Bytes:表示这次传送的ICMP数据包大小为64 Bytes,这是默认值。在某些特别场合中,例如,要搜索整个网络内最大的MTU时,能使用-s 2000之类的数值来取代。 ? icmp_seq=0:ICMP所检测进行的次数,第一次编号为0。 ? ttl=243:TTL和IP数据包内的TTL是相同的,每经过一个带有MAC的节点(node)时,例如router、bridge时,TTL就会减少1,默认的TTL为255,你能通过 -t 150之类的方法来重新设置默认TTL数值。 ? time=9.16 ms:响应时间,单位有ms(0.001秒)及µs(0.000001秒),一般来说,响应时间越小,表示两台主机之间的网络联机越良好。 如果你忘记加上 -c 3这样的规定检测次数,那就得要使用 [ctrl]-c将他结束掉了。 范例二:针对整个网段进行 ping 的追查 [root@linux ~]# ping -c 3 -b 192.168.10.255 WARNING: pinging broadcast address 如 果想要了解网内有多少台主机存活着,那么使用ping -b broadcast就能够知道了。而不必一台一台主机来检测。另外要特别注意一下,如果你的主机和待检测主机并不在同一个网段内,那么TTL默认使用 255,如果是同一个网段内,那么TTL默认则使用64。看看上面的输出即可明白。 我们在前几章的网络基础里面谈到加大帧(frame)时,对于 网络性能是有帮助的,因为数据包打包的次数会减少,加上如果整个传输的媒介都能够接受这个frame而不必重新进行数据包的拆解和重组的话,那么性能当然 会更好,修改frame大小的参数就是MTU。好了,目前我们知道网卡的MTU能通过ifconfig或是ip等来实现,那么追踪整个网络传输的最大
MTU时,又该怎么查询?最简单的方法当然是通过ping传送一个大数据包,并且不许中继的路由器或Switch将该数据包重组,这就能够处理了: 范例三:找出最大的 MTU 数值 [root@linux ~]# ping -c 2 -s 1000 -M do 192.168.10.10 PING 192.168.10.10 (192.168.10.10) 1000(1028) bytes of data. 1008 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=0.424 ms # 如果有响应,那就是能接受这个数据包,如果无响应,那就表示这个 MTU 太大了 [root@linux ~]# ping -c 2 -s 8000 -M do 192.168.10.10 PING 192.168.10.10 (192.168.10.10) 8000(8028) bytes of data. ping: local error: Message too long, mtu=1500 # 这个错误信息是说,本地端的 MTU 才到 1500 而已,你要检测 8000 的 MTU # 根本就是无法实现的。那怎么是好?用前一小节介绍的 ip link 来进行 MTU 设置吧 不 过,你需要知道的是,由于IP数据包表头(不含options)已占用了20Bytes,再加上ICMP的表头有8Bytes,所以当然你在使用 -s size的时候,那个数据包就得要先扣除 (20+8=28)的大小了。因此如果要使用MTU为1500时,就得要下达“ping
-s 1472 -M do xx.yy.zz.ip”才行。另外,由于本地端的网卡MTU也会影响到检测,所以如果想要检测整个传输媒介的MTU数值,那么每个能调整的主机就得要先 使用ifcofig或ip将MTU调大,然后再去进行检测,否则就会像上面提供的案例相同,可能会出现“Message too long,mtu=1500”之类的字样。如果检测完毕后,想要调整最佳化的MTU,那么请参考前一章节的内容来调整。 不过不要随便调整MTU,除非真的有问题。通常是在如下情况调整MTU。 ? 因为全部的主机群都是在内部的网段,例如群集架构(Cluster)的环境下,由于内部的网络节点都是我们能控制的,因此能通过修改MTU来改进网络性能。 ? 因为操作系统默认的MTU和你的网段不符,导致某些网站能顺利联机,某些网站则无法联机。以视窗系统操作系统作为联机分享的主机时,在Client端挺容易发生这个问题。 如果是要连上Internet的主机,注意不要随便调整MTU,因为我们无法知道Internet上面的每台机器能够支持的MTU到多大,因为这些也不是我们能够管得到的。 另外,其实每种联机方式都有不同的MTU值,常见的各种接口的MTU值如表5-1所示。 表5-1 常见的各种接口的MTU值 网络接口 MTU Ethernet 1500 PPPoE 1492 Dial-up(Modem) 576 网络上也有免费帮忙查询MTU和传输相关数据的网站,例如下面这个网站: http://forums.speedguide.net:8117/ 连接上这个网站之前,请先取消你浏览器上的代理服务器(Proxy)的设置,才能显示出正确的信息。如果在视窗系统的系统上想要修改MTU值的话,那就得要修改视窗系统的日志文件,在视窗系统上面对于MTU的检测和修改的周详做法能参考微软的官方网站: http://www.microsoft.com/taiwan/msclub/member/TIPS/Spring_2001 /tip1to3/tip1to3_2.htm
6. traceroute
我 们前面谈到的命令大多数都是针对主机的网络参数设置所需要的,而ping是两台主机之间的回应和否的判断,那么有没有命令能追踪两台主机之间通过的各个节 点(Node)通信状况的好坏呢?如果我们联机到yahoo的速度比平常慢,你觉得是自己的网络环境有问题,还是外部的Internet有问题?如果是前
者的话,我们当然需要检查自己的网络环境,看看究竟是谁中毒了?但如果是Internet的问题呢?那只有“等等等”了。判断是这个问题就得要使用 traceroute这个命令。 [root@linux ~]# traceroute [-nwig] IP 参数: -n,能不必进行主机的名称解析,只用 IP ,速度较快。 -w,若对方主机在几秒钟内没有回声就宣告不治...默认是 5 秒。 -i,用在比较复杂的环境,如果你的网络接口非常多非常复杂时,才会用到这个参数。 例如,你有两条 ADSL 能连接到外部,那你的主机会有两个 ppp。 你能使用 -i 来选择是 ppp0 还是 ppp1 啦。 -g,和 -i 的参数相仿,只是 -g 后面接的是 gateway 的 IP 。 范例一: [root@linux ~]# traceroute -n tw.yahoo.com traceroute to tw.yahoo-ap1.akadns.net (203.84.202.164), 30 hops max, 38 byte packets 1 61.59.121.1 42.174 ms 41.690 ms 41.058 ms 2 139.175.172.2 40.962 ms 41.978 ms 40.973 ms 3 192.72.122.130 40.983 ms 41.930 ms 41.003 ms 4 139.175.58.210 42.956 ms 41.997 ms 42.337 ms 5 139.175.58.153 47.591 ms 47.972 ms 48.748 ms 6 139.175.56.30 48.193 ms 47.970 ms 47.986 ms 7 139.175.57.94 47.959 ms 47.951 ms 47.985 ms 8 139.175.56.138 48.363 ms 47.586 ms 47.995 ms 9 139.175.58.42 49.256 ms 50.668 ms 47.490 ms 10 61.58.33.133 201.882 ms 201.565 ms 200.973 ms 11 61.58.33.50 199.910 ms 199.019 ms 198.961 ms 12 203.84.200.226 202.391 ms 202.567 ms 209.283 ms 这 个traceroute挺有意思的,这个命令会针对你想要连接的目的地的所有Router进行ICMP的超时等待,例如上面的例子当中,由鸟哥的主机连接 到Yahoo时,他会经过12个节点,traceroute会主动对这12个节点做ICMP的回应等待,并检测回复的时间,每个节点会检测三次。所以像上
面显示的结果,发现每个节点其实回复的时间大约在200 ms以内,算是Internet的环境还能了。而且由上面的信息来看,在61.58.33.133这个节点后的传输延迟较久,至于之前的9个节点则有不错 的表现。通过这种分析,能让你了解到这条联线是哪个环节出了问题。 另外,如果在默认的5秒钟之内traceroute听不到节点的回应,那么屏幕 上就会出现一个“*”的符号,告知该节点无法有顺利的响应。由于我们的traceroute用的是ICMP数据包,有些防火墙或主机可能会将ICMP数据 包扔掉,因此就会造成等不到回应的状况。另外,有些Gateway本来就不支持traceroute的功能,因此也会产生“*”的状况,所以分析时要注意
一下。