本文只是总结了两个常用的网络命令的实现原理和一点使用经验说明。这些东西通常都分布在各种书籍或者文章中的,我勤快那么一点点,总结一下,再加上我的一点理解和使用经验,方便大家了解。这些也是很基础的东西,没什么高深的。  

Ping  

这个应该大家都会用的吧,最主要的就是检测目标主机是不是可连通。Ping程序实际就是发送一个ICMP回显请求报文(就是请求别人收到这个报文之后回显)给目的主机,并等待回显的ICMP应答。然后打印出回显的报文。Ping不通一个地址,并不一定表示这个IP不存在或者没有连接在网络上,因为对方主机可能做了限制,比如安装了防火墙,因此Ping不通并不表示不能使用FTP或者TELNET连接。  C:\Documents and Settings\snoopy> ping 202.103.176.22 /t Pinging
202.103.176.22 with 32 bytes of data: Reply from 202.103.176.22: bytes=32 time=6ms TTL=58 Reply from 202.103.176.22: bytes=32 time=6ms TTL=58 

PING得到的结果包括字节数、反应时间、以及生存时间。Ping程序通过在ICMP报文数据中存放发送请求的时间来计算返回时间。当应答返回时,根据现在时间减去报文中存放的发送时间就得到反应时间了。生存时间(TTL),本来就存放在IP数据报的头部,直接就能够获取。在返回的报文显示的TTL值表示从目标主机到源主机剩下的跳数。    Tracert  

首先,要知道一个路由器的原理:当路由器接收到一个TTL为1的IP数据报的时候,路由器就不再转发这个数据了,而直接丢弃,并且发送一个ICMP“超时”信息给源主机,这个信息会带上自己的接口地址。(当路由器接收到TTL=1的数据包时,它会将

TTL值减1,这时TTL值减为0,路由器将会丢弃该报文并向源点发送错误信息。这个方法可以防止报文在互联网上无休止的传输,所以网络中根本就不会有TTL=0的报文) 

     一个探测路由的程序,可以让我们看见IP数据报到达目的地经过的路由。  Tracert利用ICMP数据报和IP数据报头部中的TTL值来实现。TTL(Time To Live)是一个IP数据报的生存时间,当每个IP数据报经过路由器的时候都回把TTL值减去1或者减去在路由器中停留的时间,但是大多数数据报在路由器中停留的时间都小于1秒种,因此实际上就是在TTL值减去了1。这样,TTL值就相当于一个路由器的计数器。  当路由器接收到一个TTL为1的IP数据报的时候,路由器就不再转发这个数据了,而直接丢弃,并且发送一个ICMP“超时”信息给源主机。Tracert程序的关键就是这个回显的ICMP报文的IP报头的信源地址就是这个路由器的IP地址。同时,如果到达了目的主机,我们并不能知道,于是,Tracert还同时发送一个UDP信息给目的主机,并且选择一个很大的值作为UDP的端口,使主机的任何一个应用程序都不使用这个端口。所以,当达到目的主机的时候,目标主机的UDP模块(别的主机的不会做出反应)就产生一个“端口不可到达”的错误,这样就能判断是否是到达目的地了。
 

有说法是利用ping得到的TTL值来判断主机类型,这种办法可以大概地用来判断,有人问为什么一般得到的都不是标准的TTL值。这个就是因为ICMP数据包走的路由器线路的原因,所以,用ping 和 tracert 一起来用更容易判断主机类型(不过并不一定两次走的路线都一样,所以,还是个大概值,不过更接近点,而且主机的默认TTL值是可以改变的)。  

tracert命令查看某个地址,得到的时间有3个如下         比如:   26ms     10ms     10ms. 

表示发送的三个探测包的回应时间;一般在网络情况平均的情况下,三个时间差不多;如果相差比较大,说明网络情况变化比较大. 

也就是说,tracert每次返回的时间都是从出发点到目的路由器的所花费的时间,因为中间是包的转发,所以花费的时间很少,而且有些路由器负荷比较大,响应时间比较长,也就有可能出现前面的路由器返回的时间比后面一跳路由器返回的时间还要长的情况。 

  

ping和tracert的原理:  

 

 1、PING命令主要作用是测试2台设备网络层之间是否。  

其工作原理:假设A路由器PING B路由器,A路由器会先发一个ICMP ECHO报文(TYPE=8,CODE=0),如果2台设备  之间路由是可达的,B收到后会回一个ICMP REPLY的报文(TYPE=0,CODE=0)。ping命令也可以显示经过的跳数,  

这样也可以通过PING命令查看我经过了哪几跳,每一跳的IP地址,命令参数是-R。但不是所有的路由器均支持该  

命令,并且IP首部中留给选项的空间有限,不能存放太多的路径,一般最多就只能存放9个IP地址。  

 

 2、TRACERT命令主要作用和PING -R的作用一样,是测试2台设备之间经过的跳数和每一跳的IP地址。其工作原  理分2种情况说明:  

 

  1)假设A是一台PC机,由A来TRACERT B,A首先会发送一个ICMP ECHO的报文(TYPE=8,CODE=0), 并且该报  文的TTL=1,第一个路由器收到后会丢弃该报文不转发,并返回一个ICMP超时的报文(TYPE=11,CODE=0),然后  

A会在发送一个ICMP ECHO的报文,这时TTL=2,下一个路由器收到后又回一个ICMP超时报文。当报文到达B后,B会  

回给A一个ICMP端口不可达的报文(TYPE=3,CODE=3)。  

 

  2)假设A是一台路由器,由A来TRACERT B,A首先会发送一个UDP报文,并且UDP的端口号大于30000以保证这个  

端口号在B上未被占用,该报文的TTL=1,第一个路由器收到后会丢弃该报文不转发,并返回一个ICMP超时的报文  



(TYPE=11,CODE=0),然后A会在发送一个UDP的报文,这时TTL=2,下一个路由器收到后又回一个ICMP超时报文。  

当报文到达B后,B会回给A一个ICMP端口不可达的报文(TYPE=3,CODE=3)

关于Ping和Tracert命令原理详解的更多相关文章

  1. ping命令技巧详解 windows下ping命令知识大全

    windows ping命令对于多数电脑爱好者都不会陌生,通过ping ip可以知道网络是否畅通或者网络传输质量如何等,是网络技术人员常用的检测网络命令,多数朋友对ping命令知道的并不多,接下来本文 ...

  2. CentOS 6.5 iptables原理详解以及功能说明

    CentOS 6.5 iptables原理详解以及功能说明 来源 https://blog.51cto.com/tanxw/1389114 前言 iptables其实就是Linux下的一个开源的信息过 ...

  3. 局域网 ARP 欺骗原理详解

    局域网 ARP 欺骗原理详解 ARP 欺骗是一种以 ARP 地址解析协议为基础的一种网络攻击方式, 那么什么是 ARP 地址解析协议: 首先我们要知道, 一台电脑主机要把以太网数据帧发送到同一局域网的 ...

  4. Zigbee组网原理详解

    Zigbee组网原理详解 来源:互联网 作者:佚名2015年08月13日 15:57   [导读] 组建一个完整的zigbee网状网络包括两个步骤:网络初始化.节点加入网络.其中节点加入网络又包括两个 ...

  5. 【转】VLAN原理详解

    1.为什么需要VLAN 1.1 什么是VLAN? VLAN(Virtual LAN),翻译成中文是“虚拟局域网”.LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络.V ...

  6. TOMCAT原理详解及请求过程(转载)

    转自https://www.cnblogs.com/hggen/p/6264475.html TOMCAT原理详解及请求过程 Tomcat: Tomcat是一个JSP/Servlet容器.其作为Ser ...

  7. lsof 命令用法详解

    lsof 命令用法详解 作用 用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP.UDP).找回/恢复删除的文件.是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所 ...

  8. linux下sort命令使用详解---linux将文本文件内容加以排序命令

    转载自:http://www.cnblogs.com/hitwtx/archive/2011/12/03/2274592.html linux下sort命令使用详解---linux将文本文件内容加以排 ...

  9. [No0000126]SSL/TLS原理详解与WCF中的WS-Security

    SSL/TLS作为一种互联网安全加密技术 1. SSL/TLS概览 1.1 整体结构 SSL是一个介于HTTP协议与TCP之间的一个可选层,其位置大致如下: SSL:(Secure Socket La ...

随机推荐

  1. [PHPCMS V9二次开发]自定义字段模型-添加字段类型

    步骤/方法 打开phpcms\modules\content\fields目录,复制文件夹downfiles,并改名为textgroups. 打开phpcms\modules\content\fiel ...

  2. 读JS高性能总结——DOM编程(一)

    DOM是一个与语言无关的API,它在浏览器中的借口却是用JS来实现的. 浏览器通常会把DOM和JS独立实现. 在IE中,JS的实现名是JScript,位于jscript.dll文件中,DOM实现则是m ...

  3. Framework7 下拉刷新

    html结构 <div class="page"> <!-- Page content should have additional "pull-to- ...

  4. 邀您共赴数据库学术顶会ICDE 2019——阿里云专场 零距离接触达摩院数据库“最强大脑”

    摘要: 当学术大家遇到技术大拿,会碰撞出怎样的火花?为进一步加深产学研学术交流,阿里云将于ICDE 2019大会期间(4月9日)举办以“云时代的数据库”为主题的技术专场(Workshop) 作为全球数 ...

  5. Convert Sorted Array to Binary Search Tree转换成平衡二查搜索树

    Given an array where elements are sorted in ascending order, convert it to a height balanced BST. 二分 ...

  6. Laravel请求和输入

    该篇文章主要介绍Laravel获取用户请求和输入信息的方法.获取基本输入信息: //获取输入数据,不用担心所使用的HTTP方法 $id = Input::get('id'); //可以指定默认值 $i ...

  7. 洛谷2375 BZOJ 3670动物园题解

    题目链接 洛谷链接 我们发现题目要我们求的num[i]东西本质上其实是 求有多少以i结尾的非前缀且能与前缀匹配的字符串,而且要求字符串长度小于(i/2) 我们先不考虑字符串长度的限制,看所有以i结尾的 ...

  8. ADO.NET_02

    一.说明 这个例子是小白跟着学习代码记录,模拟用户登陆功能,并可以查询所有学生信息. 二.代码 共4个文件,如下 App.config <?xml version="1.0" ...

  9. Redis源码解析:08对象

    前面介绍了Redis用到的所有主要数据结构,比如简单动态字符串(SDS).双端链表.字典.压缩列表.整数集合等.然而Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一 ...

  10. @loj - 2174@ 「FJOI2016」神秘数

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 一个可重复数字集合 S 的神秘数定义为最小的不能被 S 的子集的 ...