zoukankan      html  css  js  c++  java
  • traceroute

    在IP包结构中有一个定义数据包生命周期的TTL(Time To Live)字段,该字段用于表明IP数据包的生命值,当IP数据包在网络上传输时,每经过一个路由器该值就减1,当该值减为0时此包就会被路由器丢弃。这种设计可用于避免出现一些由于某种原因始终无法到达目的地的包不断地在互联网上传递(可以形象地称之为“幽灵包”),减少无谓的网络资源耗用。

    traceroute 追踪数据传输路由状况

    它先构造出一个TTL值为1的数据包发送给目的主机,这个数据包在经由第一个路由器时,路由器先将TTL值减1变为0,然后将该IP包丢弃,同时给发送一个ICMP消息,这样就得到了经过的第一台路由器的IP地址;然后再构造出一个TTL值为2的数据包,以此类推,就能得到该IP包经历的整条链路的路由器IP。
    这里会有一个问题:traceroute如何确认该IP包成功地被目的主机接收了呢?因为目的主机即便收到了TTL值为1的数据包也不会发送ICMP通知给源主机的。这时traceroute所做的工作就是发送一个UDP包给目的主机,同时制定该UDP接收的端口为主机不可能存在的端口,主机在接收到这样的包后,由于端口不可达,则主机会返回一个“端口不可达”的通知,这样就能确认目的主机是否可以接收到数据包。

  • 相关阅读:
    【BZOJ 4151 The Cave】
    【POJ 3080 Blue Jeans】
    【ZBH选讲·树变环】
    【ZBH选讲·拍照】
    【ZBH选讲·模数和】
    【CF Edu 28 C. Four Segments】
    【CF Edu 28 A. Curriculum Vitae】
    【CF Edu 28 B. Math Show】
    【CF Round 439 E. The Untended Antiquity】
    【CF Round 439 C. The Intriguing Obsession】
  • 原文地址:https://www.cnblogs.com/cizao/p/11493617.html
Copyright © 2011-2022 走看看