- 浏览: 152629 次
- 性别:
- 来自: 北京
文章分类
最新评论
D:\Documents and Settings\hx>ping 61.152.93.131
Pinging 61.152.93.131 with 32 bytes of data:
Reply from 61.152.93.131: bytes=32 time=21ms TTL=118
Reply from 61.152.93.131: bytes=32 time=19ms TTL=118
Reply from 61.152.93.131: bytes=32 time=18ms TTL=118
Reply from 61.152.93.131: bytes=32 time=22ms TTL=118
Ping statistics for 61.152.93.131:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss
Approximate round trip times in milli-seconds:
Minimum = 18ms, Maximum = 22ms, Average = 20ms
D:\Documents and Settings\hx>ping 61.152.104.40
Pinging 61.152.104.40 with 32 bytes of data:
Reply from 61.152.104.40: bytes=32 time=28ms TTL=54
Reply from 61.152.104.40: bytes=32 time=18ms TTL=54
Reply from 61.152.104.40: bytes=32 time=18ms TTL=54
Reply from 61.152.104.40: bytes=32 time=13ms TTL=54
Ping statistics for 61.152.104.40:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss
Approximate round trip times in milli-seconds:
Minimum = 13ms, Maximum = 28ms, Average = 19ms
第一台TTL为118,则基本可以判断这是一台Windows机器,从我的机器到这台机器经过了10个节点,因为128-118=10。而第二台应该是台Linux,理由一样64-54=10。
了解了上面的东西,可能有人会有一些疑问,例如以下:
1,不是说包可能走很多路径吗,为什么我看到的4个包TTL都是一样的,没有出现不同?
这是由于包经过的路径是经过了一些最优选择算法来定下来的,在网络拓扑稳定一段时间后,包的路由路径也会相对稳定在一个最短路径上。具体怎么算出来的要去研究路由算法了,不在讨论之列。
2,对于上面例子第二台机器,为什么不认为它是经过了74个节点的Windows机器?因为128-74=54。
对于这个问题,我们要引入另外一个很好的ICMP协议工具。不过首先要声明的是,一个包经过74个节点这个有些恐怖,这样的路径还是不用为好。
要介绍的这个工具是tracert(*nix下为traceroute),让我们来看对上面的第二台机器用这个命令的结果
D:\Documents and Settings\hx>tracert 61.152.104.40
Tracing route to 61.152.104.40 over a maximum of 30 hops
1 13 ms 16 ms 9 ms 10.120.32.1
2 9 ms 9 ms 11 ms 219.233.244.105
3 12 ms 10 ms 10 ms 219.233.238.173
4 15 ms 15 ms 17 ms 219.233.238.13
5 14 ms 19 ms 19 ms 202.96.222.73
6 14 ms 17 ms 13 ms 202.96.222.121
7 14 ms 15 ms 14 ms 61.152.81.86
8 15 ms 14 ms 13 ms 61.152.87.162
9 16 ms 16 ms 28 ms 61.152.99.26
10 12 ms 13 ms 18 ms 61.152.99.94
11 14 ms 18 ms 16 ms 61.152.104.40
Trace complete.
从这个命令的结果能够看到从我的机器到服务器所走的路由,确实是11个节点(上面说10个好像是我犯了忘了算0的错误了,应该是64-54+1,嘿嘿),而不是128的TTL经过了70多个节点。
既然已经说到这里了,不妨顺便说说关于这两个ICMP命令的高级一点的东西。
首先是ping命令,其实ping有这样一个参数,可以无视操作系统默认TTL值而使用自己定义的值来发送ICMP Request包。
例如还是用那台Linux机器,用以下命令:
D:\Documents and Settings\hx>ping 61.152.104.40 -i 11
Pinging 61.152.104.40 with 32 bytes of data:
Reply from 61.152.104.40: bytes=32 time=10ms TTL=54
Reply from 61.152.104.40: bytes=32 time=13ms TTL=54
Reply from 61.152.104.40: bytes=32 time=10ms TTL=54
Reply from 61.152.104.40: bytes=32 time=13ms TTL=54
Ping statistics for 61.152.104.40:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 10ms, Maximum = 13ms, Average = 11ms
D:\Documents and Settings\hx>
这个命令我们定义了发包的TTL为11,而前面我们知道,我到这台服务器是要经过11个节点的,所以这个输出和以前没什么不同。现在再用这个试试看:
D:\Documents and Settings\hx>ping 61.152.104.40 -i 10
Pinging 61.152.104.40 with 32 bytes of data:
Reply from 61.152.99.94: TTL expired in transit.
Reply from 61.152.99.94: TTL expired in transit.
Reply from 61.152.99.94: TTL expired in transit.
Reply from 61.152.99.94: TTL expired in transit.
Ping statistics for 61.152.104.40:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
D:\Documents and Settings\hx>
可以看到,结果不一样了,我定义了TTL为10来发包,结果是TTL expired in transit.就是说在到达服务器之前这个包的生命周期就结束了。注意看这句话前面的ip,这个ip恰好是我们前面tracert结果到服务器之前的最后1个ip,包的TTL就是在这里减少到0了,根据我们前面的讨论,当TTL减为0时设备会丢弃包并发送一个TTL过期的ICMP反馈给源地址,这里的结果就是最好的证明。
通过这里再次又证明了从我机器到服务器是经过了11个节点而不是70多个,呵呵。
最后再巩固一下知识,有人可能觉得tracer这个命令很神奇,可以发现一个包所经过的路由路径。其实这个命令的原理就在我们上面的讨论中。
想象一下,如果我给目的服务器发送一个TTL为1的包,结果会怎样?
根据前面的讨论,在包港出发的第一个节点,TTL就会减少为0,这时这个节点就会回应TTL失效的反馈,这个回应包含了设备本身的ip地址,这样我们就得到了路由路径的第一个节点的地址。
因此,我们继续发送TTL=2的包,也就受到第二个节点的TTL失效回应
依次类推,我们一个一个的发现,当最终返回的结果不是TTL失效而是ICMP Response的时候,我们的tracert也就结束了,就是这么简单。
顺便补一句ping命令还有个-n的参数指定要发包的数量,指定了这个数字就会按照你的要求来发包了而不是默认的4个包。如果使用-t参数的话,命令会一直发包直到你强行中止它。
发表评论
-
HTTP 头部解释
2011-08-04 15:29 1141HTTP 头部解释 ======== ... -
软件破解小记【转】
2011-07-12 16:46 2951最近突然对软件破解起 ... -
swftools转换文件时线程堵塞问题的解决方法 【转】
2011-05-20 08:26 1781在使用swftools工具作转换时,最需要注意的是对转换过程中 ... -
Eclipse插件FatJar安装与使用
2010-12-22 16:00 10393今天启动tomcat发现特别慢,得等1分多钟才启动完,这才想起 ... -
IE Icon If you found this page rendered incorrect, please click this button to
2010-12-15 12:20 1061定义 HTTP状态码(H ... -
eclipse 如何批量导入project
2010-11-25 13:13 2734File > Import > General & ... -
【原创】关于JSTL的多数值Split不准确问题及解决方法
2010-05-12 15:41 3761最近项目中需要对数据做拆分处理的问题,于是乎选择用fn:spl ... -
Java中四种XML解析技术
2010-04-26 15:56 818在平时工作中,难免会遇到把 XML 作为数据存储格式。面对 ... -
jstl应用--从HashMap取值-普通类型和泛型取值
2010-03-01 12:49 4876jstl应用--从HashMap取值: 1.普通类型 假设,r ... -
jdom 根据多个属性查询各节点值
2010-02-26 11:11 1579用XPath.selectSingleNode(root,xp ... -
dom4j通过xpath查询xml
2010-02-26 11:05 2764获取Document SAXReader saxRea ... -
Log4j配置,error级别单独文件输出
2010-02-22 12:42 4812Java代码 #用来作界面显示的...只显 ... -
[原创] jstl字符串去重,简洁方便
2010-02-09 12:57 2651最近项目前端表现采用jstl标签,在处理字符串重复时,不能采用 ... -
java 页面url传值中文乱码问题解决
2010-01-27 18:43 3992中文问题,是在应用中常常遇到的问题。 本节讲的是aja ...
相关推荐
3. **执行Ping命令**:利用操作系统提供的系统API调用来执行Ping命令。在PowerBuilder中,可以使用`SystemExecute`函数执行外部命令。例如,在Windows系统中,可以使用如下代码: ```powerbuilder string ls_Cmd, ...
### 知识点详解:PING命令及其实现原理 ...综上所述,通过分析给定的源代码片段,我们可以了解到PING命令的基本原理及其在程序中的具体实现方式。这些知识对于理解网络通信过程以及调试网络问题是十分有用的。
### Ping命令详解 #### 命令概述 `ping` 是一个非常实用的网络诊断工具,主要用于测试网络连接状态及主机是否可达。它通过发送ICMP(Internet Control Message Protocol)回声请求(Echo Request)数据包到目标...
ping命令的格式如下:ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS] [-r count] [-s count] [[-j host-list] | [-k host-list]] [-w timeout] destination-list。其中的常用参数参数说明如下:-t 使...
(2)PATH命令中的路径,若有两条以上,各路径之间以一个分号“;”隔开; (3)PATH命令有三种使用方法: PATH[盘符1:][路径1][盘符2:][路径2]…(设定可执行文件的搜索路径) PATH:(取消所有路径) ...
- 通过分析 `ping` 的返回结果,比如 `time=2ms`,可以了解数据包往返的时间延迟,而TTL值则可以帮助判断目标系统的类型(例如,TTL=32 表示是 Windows 98,TTL=128 代表 Windows 2000,TTL=250 通常为 Unix 系统)...
实验报告书写要求,每条命令都执行,如果有多个参数的,至少需要体现 2 个以上常用参数,截图运行结果,并说明参数意义以及执行结果的具体含义。 2. Ipconfig 命令: Ipconfig 命令可以用来显示本机当前的 TCP/IP...
根据提供的文件信息,我们可以推断出这是一段包含Redis命令示例的数据,但由于内容似乎是乱码,无法直接解析出具体含义。不过,基于标题“redis命令参考”和描述“本文详细介绍了redis命令的使用方法,是一本好的...
- **`nethelpmsg error_code`**:例如,如果遇到错误代码88,可以使用`nethelpmsg 88`来获取错误的具体含义。 #### 5. 远程登录与信息获取(`telnet`) - **`telnet`**:通过该命令可以登录远程主机并执行命令。 ...
- **Ping命令**:这是一种常用的测试网络连通性的命令。它向目标主机发送ICMP请求报文,并等待目标主机回应ICMP响应报文,以此来检测收发双方网络层是否连通。 **实验过程**: 1. 在Wireshark中开始捕获数据包。 2....
其中,`40`是一个无特殊含义的参数,可以是任意值,类似网络中的TTL(Time To Live)概念。该参数的具体值对于保持连接并无实际作用,但必须包含。 #### 三、Notification服务器Ping客户端 除了客户端主动发送Ping...
其中最常用的为回送请求/应答报文,即我们常说的Ping命令所使用的ICMP类型。 ##### 2. 基于ICMP的应用程序 基于ICMP的应用程序主要有两种: - **Ping**:是一种用来测试网络联通性的程序,其工作原理是向目标主机...
3. **ICMP协议**:ICMP用于网络诊断,如错误报告(如无法到达目的地)和信息查询(如ping命令)。报告可能会解释各种ICMP消息类型及其用途。 4. **DHCP协议**:动态主机配置协议,负责自动分配IP地址和其他网络参数...
本篇将详细阐述ICMP报文的类型及其具体含义。 #### 二、ICMP报文概述 ICMP报文由一系列字段组成,包括类型(Type)、代码(Code)和校验和(Checksum)。这些字段共同构成了ICMP报头,并且在不同的ICMP消息中保持...
通过本次实验,不仅掌握了DNS服务的基础配置,还深入了解了DNS工作原理及配置文件的具体含义。遇到的主要问题是配置文件的细节处理和DNS服务启动失败等问题。这些问题大多是因为对配置文件的理解不够深入以及操作时...
通常用于测试目的主机是否可达,即我们常说的Ping命令。 ##### 2. 目的地不可达 目的地不可达是一类重要的错误报告,Type 3表示目的地不可达,其Code值进一步指明了不可达的具体原因: - **Code 0**: Network ...
下面我们将深入探讨Redis配置文件中的各项参数及其含义。 1. **服务器设置** - `port`: 指定Redis服务器监听的端口,默认为6379。 - `bind`: 设置Redis服务器监听的IP地址,可以是单个IP或多个,若不指定则监听...