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

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. 记UWP开发——多线程操作/并发操作中的坑

    一切都要从新版风车动漫UWP的图片缓存功能说起. 起因便是风车动漫官网的番剧更新都很慢,所以图片更新也非常慢.在开发新版的过程中,我很简单就想到了图片多次重复下载导致的资源浪费问题. 所以我给app加 ...

  2. php 常用类汇总

    转自:http://www.blhere.com/953.html 图表库 下面的类库可以让你很简单就能创建复杂的图表和图片.当然,它们需要GD库的支持. pChart - 一个可以创建统计图的库. ...

  3. 介绍配置管理工具SVN的使用

    配置管理CM(Configuration Mangerment) 一.配置管理工具SVN的介绍 ---Subversion ---是一个开放源代码的版本控制系统 ---时下流行的SVN和GIT 每天开 ...

  4. Python学习之路9☞面向对象的程序设计

    一 面向对象的程序设计的由来 见概述:http://www.cnblogs.com/linhaifeng/articles/6428835.html 二 什么是面向对象的程序设计及为什么要有它 面向过 ...

  5. Python学习之路4☞条件和循环

    一.if语句 1.1 功能 计算机又被称作电脑,意指计算机可以像人脑一样,根据周围环境条件(即expession)的变化做出不同的反应(即执行代码) if语句就是来控制计算机实现这一功能 1.2 语法 ...

  6. hdu2897 巴什博奕

    n%(q+p)==0,也就是说先手必胜; n%(q+p)<=p,先手必输; n%(q+p)==k if(k>p&&k<=q)先手必胜; if(k>p&& ...

  7. oralce where字句的用法

    ?       如何显示工资高于3000的员工 select * from emp where sal>3000; ?       如何查找1982.1.1后入职的员工 select * fro ...

  8. qt开发ROS gui 遇到:global.h:1087:4: error: #error &quot;You must build your code with position independent code if Qt was built with -reduce-relocations. &quot......

    具体错误如下: 一共出现38个错误 这个错误是在导入cmakelists.txt时产生的,其实不是工程本身的问题,是因为我卸载ros,再重新安装ros的过程中把qtcreator的部分包给删除了,导致 ...

  9. 洛谷P1164 小A点菜

    //求方案数 定义状态f[i][j] 用前i件物品恰好放够体积为j的背包 方案数 #include<bits/stdc++.h> using namespace std; ; ; int ...

  10. c++中单引号和双引号的区别

    在C++中单引号表示字符,双引号表示字符串. 例如 :在定义一个数组的时候string a [5]={"nihao","henhao","good&q ...