TCP/IP详解:Protocol 读书笔记(八)

Chapter8 Traceroute程序

文章目录

  • TCP/IP详解:Protocol 读书笔记(八)
    • Chapter8 Traceroute程序
      • 为什么会出现Traceroute功能
      • Traceroute原理

为什么会出现Traceroute功能

在上一章节将ping程序时,书中提到了IP记录路由选项,但是在探测源端主机到目的主机之间所经路由情况时,我们通常采用的不是ping -R [IP地址]这种形式。而是采用Traceroute这个便利的工具。

最主要的原因是,IP首部中留给IP记录路由选项的空间有限,不能存放当前大多数的路径。在IP首部选项字段中最多只能存放9个IP地址,无法完整的记录数据探测包所经过的路由器。对于现在的互联网来说,远远不够。因此Traceroute程序为了解决这种情况也就应运而生。

Traceroute原理

Traceroute使用ICMP报文和IP首部中的TTL字段实现。TTL字段是由发送端初始设置一个8bit字段。推荐的初始值由分配数字RFC指定,当前值为64。从第七章中的一些ping程序例子中可以看出,发送ICMP回显应答时经常把TTL设为最大值255。

每个处理数据包的路由器都需要把报文中TTL字段减1或者减去数据报在路由器中停留的秒数。由于大多数的路由器转发数据报的时延都小于1s,因此TTL最终成为一个跳站的计数器,所经过的每个路由器都将其值减1。

TTL字段是为了防止数据报在IP包选路时无休止地在网络中传输。例如,当路由器瘫痪或者两个路由器之间的通信断开,选路协议有时会去检测丢失的路由并一直进行下去。因此在这个时间段内,依据TTL,数据报的传输会在循环回路中被终止。

当路由器收到IP数据报,如果TTL字段是1,则路由器不转发该数据报,路由器将该数据报丢弃,并给源端主机发一份ICMP超时(上一章讲到的Time Exceeded错误)信息。Traceroute程序的关键就在于这份ICMP信息的IP数据报文中的源端IP地址就是该路由器的IP地址。

因此类推一下,整个Traceroute程序的整个过程:

  1. 当我们敲下Traceroute [主机名/IP地址]的时候,程序会先向目的主机发送一个TTL=1的UDP数据包。
  2. 经过的第一个路由器收到这个数据包后,就自动把TTL减1。TTL变为0后,路由器就将这个包丢弃,同时产生一个主机不可达的ICMP错误数据报发送给源端主机。
  3. 主机收到这个数据报后再发送一个TTL=2的UDP数据报给目的主机,这样当第二个路由器收到这个数据报后,TTL经过递减,刚好等于0。因此第二个路由器会发送ICMP错误信息数据报发送给源端主机。
  4. 不断递增TTL数值,并执行发送UDP数据报的操作,直到到达目的主机。但是目的主机即使接收到TTL=1的UDP数据报,也不会丢弃该数据报并产生一份超时ICMP报文,因为数据报已到达其最终目的地。

超时ICMP报文,因为数据报已到达其最终目的地。

Traceroute程序发送一份UDP数据报给目的主机,但是这份UDP数据报选择端口号>30000进行发送,使得目的主机任何一个应用程序不可能使用的端口。因为TCP和UDP协议有一个端口号定义,而普通的网络程序只监控少数的几个号码较小的端口,如80,23等。这样,当UDP数据报到达时,将使目的主机的UDP模块产生一份“端口不可达”错误的ICMP报文。源端主机接收到这个报文后就可以得知目的主机已经到了。这样,Traceroute程序所要做的就是区分源端接收到的ICMP报文是超时还是端口不可达,用来判断什么时候到达目的主机。

TCPIP详解Protocol 读书笔记(八) Traceroute程序相关推荐

  1. TCPIP详解Protocol 读书笔记(三) IP协议讲解

    TCP/IP详解:Protocol 读书笔记(三) Chapter3 IP:网际协议 文章目录 TCP/IP详解:Protocol 读书笔记(三) Chapter3 IP:网际协议 IP协议 IP数据 ...

  2. TCPIP详解Protocol 读书笔记(九) IP选路

    TCP/IP详解:Protocol 读书笔记(九) Chapter9 IP选路 文章目录 TCP/IP详解:Protocol 读书笔记(九) Chapter9 IP选路 IP选路原理简单回顾 初始化路 ...

  3. 初出茅庐的小李第3篇博客《5G物联网及NB-IoT技术详解》读书笔记1

    初出茅庐的小李第3篇博客 <5G物联网及NB-IoT技术详解>读书笔记1 在Mculover666那里白嫖了一本书,不要问我咋白嫖的,我也不知道- 为什么要写这样的笔记? 因为我白嫖的时候 ...

  4. TCP/IP详解卷一读书笔记一

    TCP/IP详解卷一:第一章 一.分层   1.网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能.   疑点 介质访问控制方法   多个主机需要通过一条"共享介质"发送 ...

  5. 《Windows驱动开发技术详解》读书笔记(一)

    首先需要安装DDK,这里我选择Microsoft Windows Server 2003 SP1 DDK Windows驱动分成两类,一类是不支持即插即用的NT式驱动,一类是支持即插即用的WDM驱动. ...

  6. [读书笔记]TCP/IP详解V1读书笔记-4 5

    IP地址与以太网地址之间的关系 R P发送一份称作A R P请求的以太网数据帧给以太网上的每个主机.这个过程称作广播,在32 bit的I P地址和采用不同网络技术的硬件地址之间提供动态映射 ----- ...

  7. [读书笔记]TCP/IP详解V1读书笔记-1

    TCP数据单元:tcp segment UDP数据单元:udp datagram IP数据单元:IP datagram 链路层单元:frame ---------------------------- ...

  8. [读书笔记]TCP/IP详解V1读书笔记-3

    IP: 无连接:数据报到达没有先后顺序,处理先后发送的数据报之间没有关联. 不可靠:数据报丢失后没有处理,简单向源地址发送 ----------------------------- -------- ...

  9. 《TCP/IP详解》读书笔记

    1. 网络协议的分层,有四个层次,从下向上分别是: 链路层:也称作数据链路层或网络接口层.主要处理物理接口的细节 网络层:也称作互联网层,处理分组在网络中的活动.在TCP/IP协议族中网络层协议包括I ...

最新文章

  1. 借助阿里云数加,小小的美甲行业被美甲帮玩出了天价。
  2. 帝国cms7.5百度小程序针对搜索引擎自然搜索优化版生成静态版
  3. mnn 编译转换工具 win10 2021
  4. bzoj 4012: [HNOI2015]开店
  5. 【Touchinput 】触摸和输入 概述(1)
  6. vc开发soap客户端(方式一)
  7. 抽象工厂类--一个简单的例子
  8. 数据结构与算法 | 斐波那契查找
  9. 投票源码程序_[内附完整源码和文档] 基于JSP实现的影视创作论坛系统
  10. bootstrap菜单展开收起_基于bootstrap的后台左侧导航菜单和点击二级菜单刷新二级页面时候菜单展开显示当前菜单...
  11. [haoi2011]向量
  12. iOS 指纹识别常见问题汇总
  13. VRCORE开发者大赛圆满落幕,中国虚拟现实内容大集结
  14. mpvue(4)主页面静态页面的完成
  15. python识图找图_初探利用Python进行图文识别(OCR)
  16. maven到底怎么读?
  17. [PHP] PHP7.4.2安全和修复版本的更改日志
  18. 一条update语句更新多条sql记录
  19. 有参构造函数和无参构造函数
  20. VB中操作Excel文档

热门文章

  1. UEFI 基础教程 (一) - 基于QEMU搭建UEFI开发环境(win/linux)
  2. 网易互娱游戏研发岗准备
  3. C/C++数据结构——虚虚实实(并查集欧拉路)
  4. Google推出拼音输入法了!
  5. 一起来捉妖找不到服务器,一起来捉妖妖怪分布大全 所有妖灵不同地点位置详解...
  6. 记录一下之前写的文章--测试之不可承受之轻
  7. 最好的跑步耳机推荐、盘点五款公认最好的跑步耳机
  8. 域乎X蚂蚁链:打造新购物模式?
  9. (二)Easyexcel 的使用(读取数据到map集合中)
  10. [附源码]JAVA+ssm计算机毕业设计高校请假管理系统(程序+Lw)