traceroute的实现

背景知识:
当路由器收到一份IP数据报时,如果其TTL是0或者1,则路由器丢弃该数据包,并给源IP发送一条ICMP超时消息。traceroute程序的关键在于这条ICMP消息中包含该路由器的IP

traceroute的操作过程:
发送一份TTL为1的消息给目的主机,处理这个消息的第一个路由器将TTL减1,丢弃该数据包,发给源IP一份超时ICMP报文,这样就得到了第一个路由器的地址,以此类推可以获取第二个,第三个路由器的地址,继续这个过程直到该消息到达目的主机,如果判断消息到达目的主机呢?traceroute使用UDP发送数据报给目的主机,但它选择一个不可能的值作为目的主机的端口号,使目的主机的任何应用程序都不使用该端口,使目的主机的UDP模块产生一个端口不可达错误的ICMP报文。这样ICMP可以通过收到的消息是超时还是端口不可达来判断何时结束。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、TCP为什么需要3次握手,4次断开? “三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端...
    杰伦哎呦哎呦阅读 3,538评论 0 6
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,134评论 6 174
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,092评论 0 8
  • 8.1 引言 由Van Jacobson编写的Traceroute程序是一个能更深入探索TCP/IP协议的方便可用...
    张芳涛阅读 1,699评论 0 3
  • 前言 这一篇文章主要围绕了IP协议,ICMP协议和UDP协议展开,希望可以在这里大概做一个总结,将《TCP/IP协...
    Noskthing阅读 3,129评论 5 57