traceroute工作原理[通俗易懂]

traceroute工作原理[通俗易懂]traceroute,也就是traceroute,跟踪路由。这个程序最早是VanJacobson实现的。源代码在网上能够找到,只是我还没有去找。基本的原理是IP路由过程中对数据包TTL(Tim

大家好,又见面了,我是你们的朋友全栈君。

 
  
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选项,用来记录经过的路由,曾经一直不知道。(ping
www.google.com-r 7)记录经过的7个路由器。依照分析,依据所在环境限制最多能够记录8~9个项目。

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

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

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154934.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • TCPDF_TCP ACK

    TCPDF_TCP ACK新建一个文档对象$pdf=newTCPDF(PDF_PAGE_ORIENTATION,PDF_UNIT,PDF_PAGE_FORMAT,true,’UTF-8′,false);页面记得也设为utf-8 AddPage();新建一个pdf文档页面。Image($file,$x,$y,$w,$h,$type,$link,$align…

    2025年10月4日
    2
  • 网页性能优化之图片懒加载

    一、前言最近因为需要做一个小网站,但是呢,因为图片比较多,打开网页速度很慢,服务器压力就会很大。不仅影响渲染速度还会浪费带宽,比如一个1M大小的图片,并发情况下,达到1000并发,即同时有1000个人访问,就会产生1个G的带宽。于是就想到了图片懒加载来减轻服务器的压力,优先加载可视区域的内容,其他部分等进入了可视区域再加载,从而提高性能,可以大幅度的提高网页加载速度,效果很明显,于是想着将这个方…

    2022年4月8日
    42
  • iphone越狱pp助手源_pp助手越狱版源地址

    iphone越狱pp助手源_pp助手越狱版源地址在为方便大家查看核桃同学分享的每日文章,建议小伙伴们【置顶我们】的公众号哦!进入【米乐科技】公众号,点击右上角打开设置界面,再次右上角选择【置顶/星标】,这样就可以啦!苹果越狱教程篇其实在编辑这篇文章的时候,核桃同学还在纠结是分享实用软件呢,还是先分享玩机技巧。恰好有小伙伴留言说想了解越狱只是,于是乎本文就诞生了。在往期的发布中,苹果机的资源分享的较少。主要是因为苹果手机在官家IOS系统…

    2025年6月29日
    2
  • Linux服务配置 DNS服务器配置「建议收藏」

    Linux服务配置 DNS服务器配置「建议收藏」一、什么是DNS服务器DNS(DomainNameSystem):域名系统用于IP和域名的解析产生原因:上网需要IP,而IP不好记忆,用英文字母表示的域名便于记忆。二、CentOS7配置DNS服务器过程1.准备服务器、客户端服务器IPDNS服务器IP=192.168.222.110客户端IP=192.168.222.137测试机IP=192.168.222.1002.DNS服务器配置(192.168.222.110)改网卡vi/etc/s

    2022年6月4日
    42
  • ⛽zipkin2.reporter.InMemoryReporterMetrics导致服务器CPU100%及应用OOM问题排查和解决「建议收藏」

    ⛽InMemoryReporterMetrics导致线上CPU100%及服务OOM排查和解决下面是我遇到的问题,以及一些简单的排查思路,如有不对的地方,欢迎留言讨论。如果你已经遇到 InMemoryReporterMetrics 导致的OOM问题,并已经解决,则可忽略此文。若你对CPU100%以及线上问题OOM排查不清楚,可以浏览下本文。问题现象【告警通知-应用异常告警】简单看下告警的信息:拒绝连接,不要太在意马赛克。问题排查通过告警信息,知道是哪一台服务器的哪个服务出现问题。首先登录服

    2022年3月1日
    41
  • web服务器短信监控服务是什么_手机web服务器在哪打开

    web服务器短信监控服务是什么_手机web服务器在哪打开服务器监控软件可以进行各种服务器的WEB监控,系统将以WEB的用户的身份按用户指定的时间检测您的WEB是否正常,一旦检测到不正常,将以短信/邮件方式报警。如图所示: 图:WEB监控  图:WEB监控日志记录 相关监控功能:PING监控cpu监控内存监控MySQL监控DB2监控流量监控错误监控TCP服务监控

    2025年6月23日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号