精华内容
下载资源
问答
  • traceroute 工作原理

    2020-12-07 16:52:32
    文章目录PINGTracerouteTraceroute 的工作原理举个“栗子” PING ICMP 的一个重要应用就是分组网间探测 PING(Packet InterNet Groper),用来测试两台主机之间的连通性。PING 使用了 ICMP 回送请求与回送回答报文。...

    PING

    ICMP 的一个重要应用就是分组网间探测 PING(Packet InterNet Groper),用来测试两台主机之间的连通性。PING 使用了 ICMP 回送请求与回送回答报文。PING 是应用层直接使用网络层 ICMP 的一个例子。他没有通过传输层的 TCP 或 UDP。

    Traceroute

    ICMP 的另一个非常有用的应用是 traceroute(这是 UNIX 操作系统中名字),它用来跟踪一个分组从源点到终点的路径。在 Windows 操作系统中这个命令是 tracert。下面简单介绍下这个程序的工作原理。

    Traceroute 的工作原理

    Traceroute 从源主机向目的主机发送一连串的IP数据报,数据报中封装的是无法交付的 UDP 用户数据报。第一个数据报 P1 的生存时间 TTL 设置为1。当 P1 到达路径上的第一个路由器 R1 时,路由器 R1 先手下它,接着把 TTL 的值减 1。由于 TTL 等于零了,R1 就把 P1 丢弃了,并向源主机发送一个 ICMP 时间超过 差错报给报文。
    源主机接着发送第二个数据报 P2,并把 TTL 设置为 2。P2 先到达路由器 R1 手下后把 TTL 减 1 再转发给路由器 R2。R2 收到 P2 时 TTL 为 1,但减 1 后 TTL 变为零了。R2 就丢弃 P2,并向源主机发送一个 ICMP 时间超过差错报给报文。这样一直继续下去。当最后一个数据报刚刚到达目的主机时,数据报的 TTL 是 1。主机不转发数据报,也不把 TTL 值减 1。但因 IP 数据报中封装的是无法交付的传输层的 UDP 用户数据报,因此目的主机要向源主机发送 ICMP 终点不可达差错报告报文。
    这样,源主机达到了自己的目的,因为这些路由器和最后目的主机发来的 ICMP 报文正好给出了源主机想知道的路由信息——到达目的主机所经过的路由器的 IP 地址,以及到达其中的每一个路由器的往返时间。

    举个“栗子”

    C:\Users\liyongjun>tracert www.baidu.com
    
    通过最多 30 个跃点跟踪
    到 www.a.shifen.com [180.101.49.11] 的路由:
    
      1     5 ms     2 ms     6 ms  10.10.68.1 [10.10.68.1]
      2     *        *        *     请求超时。
      3     3 ms     3 ms     3 ms  49.76.124.1
      4     3 ms     1 ms     3 ms  58.215.68.201
      5     5 ms     6 ms     4 ms  58.215.152.181
      6     5 ms     6 ms     6 ms  58.213.94.106
      7     *        *        6 ms  58.213.94.86
      8     7 ms    45 ms     9 ms  58.213.96.102
      9    11 ms    10 ms    10 ms  10.166.50.6 [10.166.50.6]
     10    10 ms    11 ms    10 ms  10.166.50.8 [10.166.50.8]
     11     *       60 ms    11 ms  10.166.96.4 [10.166.96.4]
     12    11 ms     *        *     10.165.1.17 [10.165.1.17]
     13     5 ms     5 ms     6 ms  180.101.49.11
    

    上面是从一台 Windows PC 向百度服务器 www.baidu.com 发出的 tracert 命令后获得的结果。图中每一行有三个时间出现,是因为对应于每一个 TTL 值,源主机要发送三次同样的 IP 数据报。出现 * 号,可能是该路由器防火墙屏蔽掉了 ICMP 消息,所以我们得不到相关数据包的返回数据。上图说明从 PC 到百度服务器,中间共经历了 12 台路由器,并且能够看到每台路由器的 IP 地址,最终抵达目的IP 180.101.49.11
    我们还应该注意到,从原则上讲,IP 数据报经过的路由器越多,所花费的时间也就越多。但从上面示例可以看出,有时正好相反。这是因为互联网的拥塞程度随时都在变化,也很难预料到。因此,完全有这样的可能:经过更多的路由器反而花费更少的时间。

    展开全文
  • traceroute工作原理

    2019-10-01 06:57:37
    traceroute, 也就是 trace route,跟踪路由。这个程序最早是Van Jacobson实现的。源代码在网上能够找到,只是我还没有去找。基本的原理是IP路由过程中对数据包TTL(Time to Live,存活时间)的处理。当路由器收到一个...
     
      traceroute, 也就是 trace route,跟踪路由。这个程序最早是Van Jacobson实现的。源代码在网上能够找到,只是我还没有去找。基本的原理是IP路由过程中对数据包TTL(Time to Live,存活时间)的处理。当路由器收到一个IP包时,会改动IP包的TTL(及由此造成的头部检验和checksum变化)。每收到一个包,检查这个 的TTL是否是0或1。假设是,表明这个包还没有到达目的地,并且剩余时间不多了,肯定是到不了目的地了。这样路由器就简单地丢弃这个包,并给源主机发送 ICMP通知,说这个包已经超时了。ICMP的通知信息里包括当前路由器发送时所用的IP。

      这样就能够通过构造数据包,来间接检查到 达一个主机时经过了哪些路由。一開始发送一个TTL为1的包,这样到达第一个路由器的时候就已经超时了,第一个路由器就发通知说包超时,这样就能够记录下 所经过的第一个路由器的IP。然后TTL加1,安全通过第一个路由器,而第二个路由器的的处理与第一个同样,丢包,发通知说包超时了,这样记录下第二个路 由器IP,由此能够一直进行下去,直到这个数据包到达目标主机,由此打印出全部经过的路由器。

      在通信中,IP层仅仅负责数据的路由与传 输,并不处理数据包的内容。比如ICMP,或TCP,UDP,这些协议是依赖IP层的传输功能来传送数据的。在通信两方的主机中,收到这些协议的数据包 后,一般在通信的相应主机上,会有程序来处理这些数据。而直接的IP数据报是没实用处的(win2000的驱动层能够直接使用IP报而不须要加上其它协 议,可是通常是不会这样用的)。因此traceroute程序发送一个UDP包来试探。对路由器来说,UDP数据报仅仅是IP数据报的一种,它并不关心 UDP数据报的详细内容。直到这个包到达目的端的主机会,目的主机的内核会解析UDP数据报,并查找数据报中要求port是否已经有进程在使用。假设找到,则 通知进程有数据到达。而假设找不到,则发送一个"目的port不可达"的ICMP错误数据回到源主机。

      这样就能够全然确定下来。trcertroute建立一个UDP数据包,不断改动TTL值并发送出去,假设收到"超时错",表示刚刚到达的是路由器,而假设收到的是"port不可达"错误,表示刚刚到达的就是目的主机。这样路由跟踪完毕,程序结束。

    有几个细节

      1.局域网的路由是相对稳定的,因此用traceroute打印出来的响应时间相差不大。而假设用来跟踪广域网的路由,因为广域网的路由信息是动态变化的,并且并不能确定是发送路径耗时还是返回路径耗时较多,因此时间与路由信息仅仅能做为參考。

       2.TTL 的选择。假设把TTL设得足够大,是不是一定能够打印出全部路由,比方一个数据包经过300个路由器才到达目的端。当然在现有网络环境下不太可能出现要经 过这么多路由的情况。而TTL信息在IP数据报中仅仅有一个字节,也就是最多能设定到255(256以后又又一次从0開始)。设定这个信息的目的,就是防止一 些僵而不化的数据报在网络漫上无目的的游荡而不消失。数据报每经过一个路由器,路由器就把TTL减1(或在该路由器被处理前经过的秒数),总有一个时候会 被减到1,然后路由器会把它丢弃。

      3.traceroute的是以收到"port不可达"为标志来结束的。前提是发出的UDP数据报中要求 的port在目的主机上没有进程在使用。而假设目的主机上正好有进程在使用这个port,接收这个包并按正常方式处理,这样traceroute就收不到"port不 可达"的错误了。为了避免出现这样的情况,UDP数据报的port非常高(书中的实现是初始值33435,以后每发送一次再加1,port号最大能够到65535)。 普通程序一般不会使用这些高port。问题是假如真的存在这样的情况时,traceroute会怎么处理?而好像Solaris系统可能会使用高port,这时又怎 么样。

      4. 在发送过程中,要经过很多的路由,到达目的主机前,可能还要经过网关,防火墙,以及其它比如IDS的过滤,发送包能不能到达目的主机还是个问题。而即使到 达了,发送的ICMP信息能不能返回也是个问题。由于沿途经过的关卡太多,遇上黑洞路由器,不转发这些信息的话,那就一点办法也没有了。

       书中还提到原来的traceroute里有一个选项,能够指定数据包经过的路由器。假设是宽路由,则仅仅要经过指定的路由就可以。而假设是严路由,则必须按 指定的顺序经过指定的路由器。由于这个选项可能导致某个固定的路由处理信息太多,在发布的源代码里已经取消了。可是能够找到补丁,还是能够用起来的。从比較 的结果看,似乎指定路由器反而不如让路由器採用默认路由处理得快。而对于严路由来说,要成功就要更难一些,由于并不一定你指定的路由器正好有条目到接下来 的路由器。

     

     

    ping程序是利用icmp的回复请求来探測远端主机是否可达。(并不能继续推断port是否可达。要想查看port,就要使用扫描器了。)win2000里的网络库里已 经提供网络函数库(icmp.dll)能够实现利用icmp来探測远端主机。相比起使用管道来读ping的结果,或者嵌入ping源代码,这个是最简单的方 法了(没办法,人懒)。ping事实上另一个R选项,用来记录经过的路由,曾经一直不知道。(pingwww.google.com-r 7)记录经过的7个路由器。依照分析,依据所在环境限制最多能够记录8~9个项目。

      除了回显请求外,还能够利用icmp来实现时间请求。在icmp的数据包中能够包括发送时间,目的主机收到后再附上自身当时时间才发回。这样能够做一个时间校验,并能够推断源与目的之间的通讯速度。因为详细的内容部分比較烦,类型太多,一下子记不住各个类型的意思。

      一般用ping的时候仅仅是用了它的最简单的功能:检查主机能不能连到。事实上使用它所提供的其它选项,能够实现很多细节上的控制,比如数据包长度,TTL,路由记录,宽/严路由经过路由等。

     

    转载于:https://www.cnblogs.com/lcchuguo/p/4505999.html

    展开全文
  • Traceroute 工作原理

    2013-01-10 10:51:21
    Traceroute最简单的基本用法是:traceroute hostname  Traceroute程序的设计是利用ICMP及IP header的TTL(Time To Live)栏位(field)。首先,traceroute送出一个TTL是1的IP datagram(其实,每次送出的为3个...
      Traceroute最简单的基本用法是:traceroute hostname
    
      Traceroute程序的设计是利用ICMP及IP header的TTL(Time To Live)栏位(field)。首先,traceroute送出一个TTL是1的IP datagram(其实,每次送出的为3个40字节的包,包括源地址,目的地址和包发出的时间标签)到目的地,当路径上的第一个路由器(router)收到这个datagram时,它将TTL减1。此时,TTL变为0了,所以该路由器会将此datagram丢掉,并送回一个「ICMP time exceeded」消息(包括发IP包的源地址,IP包的所有内容及路由器的IP地址),traceroute 收到这个消息后,便知道这个路由器存在于这个路径上,接着traceroute 再送出另一个TTL是2 的datagram,发现第2 个路由器...... traceroute 每次将送出的datagram的TTL 加1来发现另一个路由器,这个重复的动作一直持续到某个datagram 抵达目的地。当datagram到达目的地后,该主机并不会送回ICMP time exceeded消息,因为它已是目的地了,那么traceroute如何得知目的地到达了呢?
      Traceroute在送出UDP datagrams到目的地时,它所选择送达的port number 是一个一般应用程序都不会用的号码(30000 以上),所以当此UDP datagram 到达目的地后该主机会送回一个「ICMP port unreachable」的消息,而当traceroute 收到这个消息时,便知道目的地已经到达了。所以traceroute 在Server端也是没有所谓的Daemon 程式。
      Traceroute提取发 ICMP TTL到期消息设备的IP地址并作域名解析。每次 ,Traceroute都打印出一系列数据,包括所经过的路由设备的域名及 IP地址,三个包每次来回所花时间。
      Traceroute 有一个固定的时间等待响应(ICMP TTL到期消息)。如果这个时间过了,它将打印出一系列的*号表明:在这个路径上,这个设备不能在给定的时间内发出ICMP TTL到期消息的响应。然后,Traceroute给TTL记数器加1,继续进行。
    展开全文
  • 在这里,我们将细述其工作原理,让你在会用的基础之上理解其内部工作过程。 ICMP应用实例——Ping Ping 是 ICMP 的一个重要应用,主要用来测试两台主机之间的连通性。Ping 的原理是通过向目的主机发送 ICMP Echo ...

    在工作开发过程中,我们经常会使用到ping和traceroute。在这里,我们将细述其工作原理,让你在会用的基础之上理解其内部工作过程。

    ICMP应用实例——Ping

    Ping 是 ICMP 的一个重要应用,主要用来测试两台主机之间的连通性。Ping 的原理是通过向目的主机发送 ICMP Echo 请求报文,目的主机收到之后会发送 Echo 回答报文。Ping 会根据时间和成功响应的次数估算出数据包往返时间以及丢包率。

    Ping的完整工作流程:
    Ping本质上是ICMP数据包,所以其工作流程就是ICMP数据包的发送与解析流程。
    大致流程如下:
    构造ICMP数据包-->构造IP数据包-->构造以太网数据帧----物理传输到目标主机---->获取以太网数据帧-->解析出IP数据包-->解析出ICMP数据包-->发送回送应答报文

    本地主机处理流程:

    1. 在本地,ping命令会构建一个ICMP数据包(构造回送请求报文)
    2. 将该ICMP数据包和目标IP地址给IP协议,IP协议将本地地址作为源地址,与目的地址等构造IP数据包
    3. 根据本地ARP缓存查找目的地址IP对应的MAC地址,如果缓存中没有则通过ARP协议找到对应IP的MAC地址。将MAC地址交给数据链路层以构造数据帧
    4. 经物理层发送给目的主机

    目的主机处理流程:

    1. 目的主机接收到数据包
    2. 物理层接收到二进制数据流经数据链路层,按照以太网协议解析出数据帧,如果数据帧中的目标MAC地址与本机MAC地址相同,则接收该数据包,否则丢弃该数据包。
    3. 接收到该数据包之后,经网络层解析出IP数据包,通过IP包头中的协议字段判断出是ICMP数据包。之后解析出ICMP数据包,发现是回送请求报文(ping request)后马上构建一个ICMP回送应答报文(ping reply)
    4. 将封装好的ICMP数据包经网络层、数据链路层、物理层发送回源主机

    所以,Ping的本质其实就是ICMP回送请求报文和回送应答报文。我们可通过Wireshark抓包工具对Ping进行分析。使用ping命令:

    在这里插入图片描述

    本机会向远端主机发送ICMP回送请求报文。

    在这里插入图片描述

    远端主机收到后会发送回送应答报文:
    在这里插入图片描述

    ICMP应用实例——Traceroute

    Traceroute 是 ICMP 的另一个应用,用来跟踪一个分组从源点到终点的路径。有2种实现方案:基于UDP实现和基于ICMP实现。

    基于UDP实现traceroute工作原理

    在基于UDP的实现中,客户端发送的数据包是通过UDP协议来传输的,使用了一个大于30000的端口号,服务器在收到这个数据包的时候会返回一个端口不可达的ICMP错误信息,客户端通过判断收到的错误信息是TTL超时还是端口不可达来判断数据包是否到达目标主机。流程如下:

    1. 源主机向目的主机发送一连串的 IP 数据报(UDP报文)。第一个数据报 P1 的生存时间 TTL 设置为 1,当 P1 到达路径上的第一个路由器 R1 时,R1 收下它并把 TTL 减 1,此时 TTL 等于 0,R1 就把 P1 丢弃,并向源主机发送一个 ICMP 时间超过差错报告报文;
    2. 源主机接着发送第二个数据报 P2,并把 TTL 设置为 2。P2 先到达 R1,R1 收下后把 TTL 减 1 再转发给 R2,R2 收下后也把 TTL 减 1,由于此时 TTL 等于 0,R2 就丢弃 P2,并向源主机发送一个 ICMP 时间超过差错报文。
    3. 不断执行这样的步骤,直到最后一个数据报刚刚到达目的主机,主机不转发数据报,也不把 TTL 值减 1。但是因为数据报封装的是无法交付的 UDP,因此目的主机要向源主机发送 ICMP 终点不可达差错报告报文。
    4. 之后源主机知道了到达目的主机所经过的路由器 IP 地址以及到达每个路由器的往返时间。

    Linux中的traceroute就是这种实现方式。

    基于ICMP实现的tracert工作原理

    在这一种实现中我们不使用UDP协议,而是直接发送一个ICMP回显请求(echo request)数据包,服务器在收到回显请求的时候会向客户端发送一个ICMP回显应答(echo reply)数据包。流程与上面相似,只是最后判断结束上为目标主机(而不是中间经过的主机或路由器)返回一个ICMP回显应答,则结束。

    Windows中的tracert就是这种实现方式。利用Wireshark分析如下:
    在cmd下输入tracert www.baidu.com
    在这里插入图片描述

    每一跳默认发送三个数据包,我们会看到下面这样的输出:
    在这里插入图片描述
    在这里插入图片描述

    可以看到TTL逐个递增,并且最终到达目的主机180.97.33.107,到达目的主机,目的主机回复,终止。

    关注微信公众号,每天进步一点点!
    16bb1f63dd4c0c34?w=173&h=171&f=jpeg&s=31832

    转载于:https://www.cnblogs.com/s-lisheng/p/11284397.html

    展开全文
  • ping和traceroute工作原理

    千次阅读 2015-10-07 10:47:18
    ping ping使用ICMP协议,ping程序的主机会向目标主机发送ICMP回显请求报文,并等待ICMP回显应答请求。...当主机使用traceroute命令时,首先会发送一个TTL值为1的IP数据包,每当经过一个路由器时,路由器
  • 网上很多文章都混淆了tracert和traceroute工作方式原理,有必要说明下 tracert和traceroute默认是有区别的: 首先win下的tracert是采用的icmp报文,发送的是echo request请求报文,最终目的服务器回应的是...
  • TraceRoute工作原理 TraceRoute工作原理 TraceRoute工作原理
  • traceroute工作原理

    2020-03-22 22:25:39
    traceroute工作原理 是利用ICMP差错控制报文中的TTL超时会回向源点发送一个时间超时报文。例如A 主机 traceroute B主机,A会封装一些分组,这些分组很特殊,例如第一个分组的TTL设置为1 ,第二个分组的TTL设置为2 ...
  • Traceroute工作原理

    千次阅读 2009-11-20 20:32:00
    Traceroute是我们经常用到的一个路由跟踪命令。 它的实现原理如下: 它发送一份 TTL字段为1的IP数据报给目的主机。处理这份数据报的第一个路由器将 T T L值减 1,丢弃该数据报,并发回一份超时I C M P报文。这样就...
  • 它发送一份TTL字段为1的IP数据包给... 然后traceroute 在发送一份TTL=2的数据包,这样我们就能得到第二个路由器的地址, 继续这个过程直至该数据包到达目的地主机。我们看到,初始的TTL最大值为30, 是60byte 的pac...
  • 首先我们要先回顾一下ICMP的原理:IP协议并不是一个可靠的协议,他不保证数据可达,那么自然的,保证数据可达的工作应该由其他模块来完成,其中最重要的模块就是ICMP(网络控制报文)协议,ICMP本身不是高层协议,而是...
  • ping 与 traceroute工作原理分析

    千次阅读 2018-11-05 17:28:49
    然后照此原理traceroute 发送 TTL 为 2 的数据报时,会收到路径上第二台路由器返回的 ICMP 超时报文,记录第二台路由器的地址;直到报文到达目的主机,目的主机不会返回 ICMP 超时,但由于端口无法使用,就会返回...
  • traceroute原理

    千次阅读 2012-10-30 09:53:09
    Traceroute程序使用ICMP报文和IP首部中的TTL字段(生存周期)来工作。 TTL字段是由发送方初始设置的一个8bit字段。每个处理数据报的路由器都要把TTL的值减去1或者减去数据报在路由器中停留的秒数。由于大多数的...
  • 《TCP/IP 卷一》描述traceroute工作过程:“ 首先,traceroute 送出一个TTL是1的IP数据包到目的地,当路径上的第一个路由器收到这个数据包时,它将TTL减1。此时,TTL变为0,所以该路由器会将此数据包丢掉,并送回一...
  • 概述traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样...安装traceroute yum -y install tracerouteTraceroute的工作原理Traceroute最简单的基本用法是:trac...
  • traceroute

    2019-09-23 16:09:50
    traceroute工作原理 traceroute是利用ICMP及IP头部的TTL。首先,traceroute送出一个TTL是1的IP数据包(其实,每次送出的为3个40字节的包,包括源地址,目的地址和包发出的时间标签)到目的地, 当路径上的第一个...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 180
精华内容 72
关键字:

traceroute工作原理