1、ping是用于测试对方主机是否可达的命令,其实本质上就是echo类型的ICMP报文。同时,ping还能用于计算RTT(round-trip time),即两台主机间的往返时延。

2、随着网络安全意识的增加,路由器的访问权限控制和防火墙等网络安全措施的使用,使得主机的可达性不仅仅取决于网络层的状况,而且也与协议的类型和端口号等等其他因素有关,所以现在ping指令的失败并不能代表目的主机就是不可达的。

3、IP record route:许多版本的ping命令在添加了-R的选项后,能够让数据报经过的每个路由器都在IP数据报的头部的可选部分(IP数据报头部最大60个字节,紧跟20个字节的固定首部后面的就是可选部分)填入自己的IP地址。当数据报到达目的主机后,再将这些IP地址填入ICMP echo的回复报文中,并且返回路径上的路由器也进行同样操作。最后,源主机就能从ping命令的返回报文中解析出与目的主机的整个交互过程需要经过那些路由器了。

当然,我们可以发现这样的机制背后是存在问题的,因为IP数据报头部的可选字段最多只有40个字节。在这40个字节里还要减去和record route相关的三个标识字节,最后能用的其实只有37个字节,也就是说只能存放9个IP v4的地址。这在现在的互联网环境下是远远不够的。

4、IP timestamp option:这和IP record route类似,不过是将原来的IP地址改为经过路由器的时间。并且它除了与record route一样的三个标识字节外,还有四个位的overflow字段用于标识记录的timestamp是否溢出,还有另外四个位的flags字段用于标识不同的timestamp类型,其中值得一提的一种类型是,在记录timestamp的同时也记录了该路由器的IP地址。其实我们仔细想想就能发现,单单记录经过路由器时的时间戳是没有多大意义的,但是如果把IP地址也记录下来,那么IP数据报头部的可选字段最多就只能记录四条记录了。

5、既然IP route record 最多只能记录9个IP地址,那么有没有办法克服这个缺陷呢?于是traceroute这个命令就出现了,它能够记录下IP数据报从源主机到目的主机经过的所有路由器的IP地址(与ping不同,它记录的是路由器的入口IP)。它的原理其实十分简单:我们都知道IP数据报头部有一个TTL字段,用来记录该数据报接下来能经过的最多的路由器的数目,也就是所谓的跳数。当路由器收到一个TTL=0的数据报时,则将其丢弃,并返回源主机一个“time exceeded”类型的ICMP报文,其中包含了该路由器的IP地址。由此我们可以想到,只要依次将发送出去的数据报的TTL字段设置为1,2,3...那么我们就能得到前往目的主机上第1,2,3...跳的路由器的地址。

  不过这时候还有一个问题,那就是我们并不能确定TTL为何值时目的主机已到达,原因在于目的主机是会接受TTL=0的数据报的。对于这个问题的解决方法是,将该数据报包含的UDP报文的目的端口字段设置为一个大于30000的值,即该端口很少可能被用到,然后期望目的主机返回一个“port unreachable”的ICMP报文,由此得到到达目的主机需要的跳数。这样traceroute就比较好的解决了IP route record的问题。

《TCP/IP 详解 卷一》读书笔记-----Ping&Traceroute的更多相关文章

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

    本书以UNIX为背景,紧贴实际介绍了数据链层.网络层.运输层   一.整体概念   1.各层协议的关系,只讨论四层 各层常见的协议:   网络层协议:IP协议.ICMP协议.ARP协议.RARP协议. ...

  2. TCP/IP详解 卷一学习笔记(转载)

    https://blog.csdn.net/cpcpcp123/article/details/51259498

  3. 『TCP/IP详解——卷一:协议』读书笔记——10

    2013-08-22 22:57:17 3.8 ifconfig命令 这个命令在Linux系统下可以通过下面的指令阅读说明文档: ifconfig 由于书中作者用的系统比较早的某Unix系统,所以我的 ...

  4. 『TCP/IP详解——卷一:协议』读书笔记——01

    从今日起开始认真研读TCP/IP详解这本经典制作,一是巩固我薄弱的计算机网络知识,二来提高我的假期的时间利用率.将心得与思考记录下来,防止白看-哦耶 2013-08-14 18:47:06 第一章 概 ...

  5. 【TCP/IP详解 卷一:协议】第二章:链路层

    2.1 引言 链路层的三个目的: (1)为IP模块发送和接收IP数据报. (2)为ARP模块发送ARP请求和接收ARP应答.地址解析协议:ARP. (3)为RARP模块发送RARP请求和接收RARP应 ...

  6. TCP/IP详解 卷一(第七、八章 Ping、Traceroute程序)

    Ping程序 Ping程序由Mike Muuss编写,目的是为了测试另一台主机是否可达. 该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答. ping程序还能测出到这台主机的往返时 ...

  7. 『TCP/IP详解——卷一:协议』读书笔记——02

    2013-08-16 20:07:11 1.3 TCP/IP的分层 这是一个很好的图,要多看!!图上有些细节会在今后的笔记中提到,看不懂不必深究. IP是网络层上的主要协议,同时被TCP和UDP(这两 ...

  8. 『TCP/IP详解——卷一:协议』读书笔记——18

    2013-08-27 15:44:52 第7章 Ping程序 7.1 引言 “ping”这个名字来源于声纳定为操作.Ping程序由Mike Muuss编写,目的是为了测试另一台主机是否可达.该程序发送 ...

  9. 『TCP/IP详解——卷一:协议』读书笔记——14

    2013-08-25 11:32:06 第5章 RARP:逆地址解析协议 5.1 引言 具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址.但是无盘机,如X终端或无盘工作站,则需要采用其 ...

随机推荐

  1. Array(数组)与Json String (Json字符串) 的相互转换

    1.Array转换成Json String             function jsonToString(arr) {             var s = "";     ...

  2. Hadoop Pipes Exception: Illegal text protocol command

    Hadoop Pipes Exception: Illegal text protocol command 对于Hadoop pipes 出现这样的错误,基本上编译代码依赖的.so和.a 版本不匹配 ...

  3. 从零开始学习Linux(cp 命令)

    功能: 复制文件或目录说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中.若同时指定多个文件或目录, ...

  4. 回文串--- Girls' research

    HDU   3294 Problem Description One day, sailormoon girls are so delighted that they intend to resear ...

  5. android 不一样的学习记录

    http://blog.csdn.net/innost/article/details/48228651 ( 深入理解Android 之 Gradle) 介绍:这篇文章篇幅较长,需要有时间并足够有耐心 ...

  6. RHEL7用户管理

    本文介绍Linux的用户管理 用户管理 Linux 是一个可以实现多用户登陆的操作系统,不同用户可以同时登陆同一台主机,他们共享一些主机的资源,但他们也分别有自己的用户空间,用于存放各自的文件. 但实 ...

  7. 用js实现在加载完成一个页面后自动执行一个方法

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  8. 错误:找不到类org.springframework.web.context.ContextLoaderListener

    严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderLis ...

  9. 读书笔记-Autonomous Intelligent Vehicles(一)

    Autonomous intelligent vehicles have to finish the basic procedures: perceiving and modeling environ ...

  10. Windows7下Blend for Visual Studio 2012使用问题

    目前开发的系统里很多控件样式和动画比较复杂,应该是之前同事用Blend做的,这种神器不用太浪费了,自己也准备试试. 系统环境Windows7+Visual Studio 2012 1.Windows7 ...