您所在的位置: &
机械工业出版社华章公司
《鸟哥的Linux私房菜——服务器架设篇》(第二版)第五章的主要介绍一些常见的网络命令,并新增了一些数据包捕获的命令。本文主要介绍的是ping命令。
5.2.1& ping
这个ping是很重要的命令,ping主要通过ICMP数据包来进行整个网络的状况报告,当然,最重要的就是ICMP type 0、8这两个类型,分别是要求回报与主动回报网络状态是否存在的特性。要特别注意的是,ping需要通过IP数据包来传送ICMP数据包,而IP数据包里有个相当重要的TTL(Time To Live)属性,这是一个很重要的路由特性,详细的IP与ICMP表头数据请参考网络基础的详细介绍。
[root@linux ~]# ping [-bcstnM] IP
-b,后面接的是 broadcast 的 IP,用在你“需要对整个网段的主机进行 ping ”时;
-c,后面接的是执行 ping 的次数,例如 -c 5 ;
-n,不进行 IP 与主机名称的反查,直接使用 IP ;
-s,发送出去的 ICMP 数据包大小,默认为 56(bytes),再加 8 bytes 的 ICMP 表头资料。
-t,TTL 的数值,默认是 255,每经过一个节点就会少
-M [do|dont] :主要在检测网络的 MTU 数值大小,两个常见的项目是:
do,代表传送一个 DF (Don't Fragment) 旗标,让数据包不能重新拆包与打包;
dont,代表不要传送 DF 标记,表示数据包可以在其他主机上拆包与打包。
范例一:检测一下 168.95.1.1 这部 DNS 主机是否存在?
[root@linux ~]# ping -c 3 168.95.1.1
PING 168.95.1.1 (168.95.1.1) 56(84) bytes of data.
64 bytes from 168.95.1.1: icmp_seq=0 ttl=243 time=9.16 ms
64 bytes from 168.95.1.1: icmp_seq=1 ttl=243 time=8.98 ms
64 bytes from 168.95.1.1: icmp_seq=2 ttl=243 time=8.80 ms
--- 168.95.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 8.807/8.986/9.163/0.164 ms, pipe 2
ping最简单的功能就是传送ICMP数据包去要求对方主机响应是否存在于网络环境中。上面的响应信息当中,几个重要的项目如下。
·&64 Bytes:表示这次传送的ICMP数据包大小为64 Bytes,这是默认值。在某些特殊场合中,例如,要搜索整个网络内最大的MTU时,可以使用-s 2000之类的数值来取代。
·&icmp_seq=0:ICMP所检测进行的次数,第一次编号为0。
·&ttl=243:TTL与IP数据包内的TTL是相同的,每经过一个带有MAC的节点(node)时,例如router、bridge时,TTL就会减少1,默认的TTL为255,你可以通过 -t 150之类的方法来重新设置默认TTL数值。
·&time=9.16 ms:响应时间,单位有ms(0.001秒)及&s(0.000001秒),一般来说,响应时间越小,表示两台主机之间的网络联机越良好。
如果你忘记加上 -c 3这样的规定检测次数,那就得要使用 [ctrl]-c将它结束掉了。
范例二:针对整个网段进行 ping 的追查
[root@linux ~]# ping -c 3 -b 192.168.10.255
WARNING: pinging broadcast address
&==会告知危险。
PING 192.168.10.255 (192.168.10.255) 56(84) bytes of data.
64 bytes from 192.168.10.100: icmp_seq=1 ttl=64 time=0.177 ms
64 bytes from 192.168.10.20: icmp_seq=1 ttl=64 time=0.179 ms (DUP!)
64 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=0.302 ms (DUP!)
64 bytes from 192.168.10.40: icmp_seq=1 ttl=64 time=0.304 ms (DUP!)
# 当针对整台主机作 ping 的检测时,可以利用 -b 这个参数。
# 请特别注意,当使用 ping -b 时,会对整个网段进行检测。没事别乱用。
# 例如上面的范例中,区网内的 192.168.10.20... 等主机会被检测到。
如果想要了解网内有多少台主机存活着,那么使用ping -b broadcast就能够知道了。而不必一台一台主机来检测。另外要特别注意一下,如果你的主机与待检测主机并不在同一个网段内,那么TTL默认使用255,如果是同一个网段内,那么TTL默认则使用64。看看上面的输出即可明白。
我们在前几章的网络基础里面谈到加大帧(frame)时,对于网络性能是有帮助的,因为数据包打包的次数会减少,加上如果整个传输的媒介都能够接受这个frame而不需要重新进行数据包的拆解与重组的话,那么性能当然会更好,修改frame大小的参数就是MTU。好了,现在我们知道网卡的MTU可以通过ifconfig或者是ip等来实现,那么追踪整个网络传输的最大MTU时,又该如何查询?最简单的方法当然是通过ping传送一个大数据包,并且不许中继的路由器或Switch将该数据包重组,这就能够处理了:
范例三:找出最大的 MTU 数值
[root@linux ~]# ping -c 2 -s 1000 -M do 192.168.10.10
PING 192.168.10.10 (192.168.10.10) ) bytes of data.
1008 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=0.424 ms
# 如果有响应,那就是可以接受这个数据包,如果无响应,那就表示这个 MTU 太大了
[root@linux ~]# ping -c 2 -s 8000 -M do 192.168.10.10
PING 192.168.10.10 (192.168.10.10) ) bytes of data.
ping: local error: Message too long, mtu=1500
# 这个错误信息是说,本地端的 MTU 才到 1500 而已,你要检测 8000 的 MTU
# 根本就是无法实现的。那如何是好?用前一小节介绍的 ip link 来进行 MTU 设置吧
不过,你需要知道的是,由于IP数据包表头(不含options)已经占用了20Bytes,再加上ICMP的表头有8Bytes,所以当然你在使用 -s size的时候,那个数据包就得要先扣除 (20+8=28)的大小了。因此如果要使用MTU为1500时,就得要下达“ping -s 1472 -M do xx.yy.zz.ip”才行。另外,由于本地端的网卡MTU也会影响到检测,所以如果想要检测整个传输媒介的MTU数值,那么每个可以调整的主机就得要先使用ifcofig或ip将MTU调大,然后再去进行检测,否则就会像上面提供的案例一样,可能会出现“Message too long,mtu=1500”之类的字样。如果检测完毕后,想要调整最佳化的MTU,那么请参考前一章节的内容来调整。
不过不要随便调整MTU,除非真的有问题。通常是在如下情况调整MTU。
·&因为全部的主机群都是在内部的网段,例如群集架构(Cluster)的环境下,由于内部的网络节点都是我们可以控制的,因此可以通过修改MTU来改进网络性能。
·&因为操作系统默认的MTU与你的网段不符,导致某些网站可以顺利联机,某些网站则无法联机。以Windows操作系统作为联机分享的主机时,在Client端挺容易发生这个问题。
如果是要连上Internet的主机,注意不要随便调整MTU,因为我们无法知道Internet上面的每台机器能够支持的MTU到多大,因为这些也不是我们能够管得到的。
另外,其实每种联机方式都有不同的MTU值,常见的各种接口的MTU值如表5-1所示。
表5-1& 常见的各种接口的MTU值
网络上也有免费帮忙查询MTU与传输相关数据的网站,例如下面这个网站:
http://forums.speedguide.net:8117/
连接上这个网站之前,请先取消你浏览器上的代理服务器(Proxy)的设置,才能显示出正确的信息。如果在Windows的系统上想要修改MTU值的话,那就得要修改Windows的日志文件,在Windows上面对于MTU的检测与修改的详细做法可以参考微软的官方网站:
/taiwan/msclub/member/TIPS/Spring_2001
/tip1to3/tip1to3_2.htm
【责任编辑: TEL:(010)】&&&&&&
关于&&&&&&&&的更多文章
本专题汇集了多款渗透测试平台及工具,包括:Burpsuite Pro、Mimi
本书描述了黑客用默默无闻的行动为数字世界照亮了一条道路的故事。
讲师: 13人学习过讲师: 66人学习过讲师: 29人学习过
Kubernetes是由谷歌开源的Docker容器集群管理系统,为
这是一个数据爆发的时代,尤其是在互联网+的风口上,
MATLAB 是数值计算、可视化及编程的一种高级语言和互
作为深受编程人员爱戴和尊敬的编程专家,微软.NET开发团队的顾问,本书作者Jeffrey Richter针对开发各种应用程序(如Web Form、W
51CTO旗下网站 非接触式 IC 卡收费机使用手册 1、 收费方法举例 输入消费金额 按“R”键...(6) 如果在收费过程中,由于误操作产生了错误的收费交易,这时就需要进行更正,... 用户基本消费信息存于卡中,使用时收费机从卡中 读取消费信息,IC 卡收费系统能...正式使用后如无特殊情况请勿使用本功能, 否则请先将收费机内的消费数据读空(... 卡收费机 J-SF2008 说明书 机器设置 (5)在“ARG...数据一旦被清空,将彻底不能恢复,所 以操作过程中要...平方读出错 e 平方写出错 e 平方中的系统信息出错... 智能卡网吧收费机操作8_电子/电路_工程科技_专业资料。智能卡网吧收费机产品...在 main.h 中函数声明 提示:SLE4442 操作命令(见第 1 页) 任务 5 调试读... 识宝skypos售饭机CM-51收费机饭堂收款机-学校IC卡消费机错误代码对照表_机械/...通讯过程错误。 文件读写错误。 无卡。 卡片插反,或没有插好。 ①关闭服务... 2、 免费向客户提 供***(调试)技术咨询工作、系统操作手册以及使用过程中的...消费扣款时,持卡人 只须将就 IC 卡,放至收费机读卡感应区有效读卡范围内(0... IC/ID 卡就餐机、收费机、考勤机、门禁机、进出管理、水 控机、电控读写器...经过多年的努力,丰锐通系列产品在 IC/ID 卡收费系统、考勤门禁系统 项目中有了... 科密IC卡ID卡收费机常见故障及其解决办法_信息与通信...但消费卡 放入感应区,机器不感应(不能读卡) ,...检查及处理:首先检查软件机器设置中,COM 口设置是否... 3.在管理软件中选择“收费机设置”-&“数据下传”初始化收费机。 4.默认 4...2、计算器方式 把卡片放在读写区域内,显示卡上余额。 单项消费:如某次消费5...你对PING了解多少?PING命令详细解释
Ping是潜水艇人员的专用术语,表示回应的声纳脉冲,在网络中Ping 是一个十分好用的TCP/IP工具,它主要的功能是用来检测网络的连通情况和分析网络速度,以下是对Ping命令的详细解释。Ping有好的善的一面也有恶的一面,先说一下善的一面吧。上面已经说过Ping的用途就是用来检测网络的连同情况和分析网络速度,但它是通过什么来显示连通呢?这首先要了解Ping的一些参数和返回信息。使用Ping检查连通性有五个步骤:1. 使用ipconfig /all观察本地网络设置是否正确;2. Ping 127.0.0.1,127.0.0.1 回送地址Ping回送地址是为了检查本地的TCP/IP协议有没有设置好;3. Ping本机IP地址,这样是为了检查本机的IP地址是否设置有误;4. Ping本网网关或本网IP地址,这样的是为了检查硬件设备是否有问题,也可以检查本机与本地网络连接是否正常;(在非局域网中这一步骤可以忽略)5. Ping远程IP地址,这主要是检查本网或本机与外部的连接是否正常。在检查网络连通的过程中可能出现一些错误,这些错误总的来说分为两种最常见。1. Request Timed Out“request time out”这提示除了在《PING(一)》提到的对方可能装有防火墙或已关机以外,还有就是本机的IP不正确和网关设置错误。①、IP不正确:IP不正确主要是IP地址设置错误或IP地址冲突,这可以利用ipconfig /all这命令来检查。在WIN2000下IP冲突的情况很少发生,因为系统会自动检测在网络中是否有相同的IP地址并提醒你是否设置正确最新xp系统下载。在NT中不但会出现“request time out”这提示而且会出现“Hardware error”这提示信息比较特殊不要给它的提示所迷惑。②、网关设置错误:这个错误可能会在第四个步骤出现。网关设置错误主要是网关地址设置不正确或网关没有帮你转发数据,还有就是可能远程网关失效。这里主要是在你Ping外部网络地址时出错。错误表现为无法Ping外部主机返回信息“Request timeout”。2. Destination Host Unreachable当你在开始PING网络计算机时如果网络设备出错它返回信息会提示“destination host unreachable”。如果局域网中使用DHCP分配IP时,而碰巧DHCP失效,这时使用 PING命令就会产生此错误。因为在DHCP失效时客户机无法分配到IP系统只有自设IP,它往往会设为不同子网的IP。所以会出现“Destination Host Unreachable”。另外子网掩码设置错误也会出现这错误。还有一个比较特殊就是路由返回错误信息,它一般都会在“Destination Host Unreachable”前加上IP地址说明哪个路由不能到达目标主机。这说明你的机器与外部网络连接没有问题,但与某台主机连接存在问题。举个例子吧。我管理的网络有19台机,由一台100M集线器连接服务器,使用DHCP动态分配IP地址。有一次有位同事匆忙地告诉我“我的OUTLOOK打不开了”,我到他机器检查,首先我检查了本地网络设置,我用ipconfig /all看IP分配情况一切正常。接着我就开始PING网络中的其中一台机器,第一次PING结果很正常,但outlook还是无法使用其它网络软件和Copy网络文件都可以使用但网络速度很慢,第二次PING我用了一个参数-t(-t可以不中断地PING对方,当时我想PING一次可能发现不了问题)发现有time=30ms和request time out,从服务器PING这台机就更有趣,request time out比正常数据还多,在局域中竟然有time=30ms和request time out太不正常了。开始我认为是网卡的问题但换网卡后故障依旧,重做网线还是不能解决问题,这故障真有趣!最后我没办法了把它插在集线器端口上的另一端的网线换到另一个端口,哈!故障解决了。原来是集线器端口坏了。如何用Ping命令来判断一条链路的速度?Ping这个命令除了可以检查网络的连通和检测故障以外,还有一个比较有趣的用途,那就是可以利用它的一些返回数据,来估算你跟某台主机之间的速度是多少字节每秒我们先来看看它有那些返回数据。Pinging 202.105.136.105 with 32 bytes of data:Reply from 202.105.136.105: bytes=32 time=590ms TTL=114Reply from 202.105.136.105: bytes=32 time=590ms TTL=114Reply from 202.105.136.105: bytes=32 time=590ms TTL=114Reply from 202.105.136.105: bytes=32 time=601ms TTL=114Ping statistics for 202.105.136.105:Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:Minimum = 590ms, Maximum = 601ms, Average = 593ms在例子中“bytes=32”表示ICMP报文中有32个字节的测试数据(这是估算速度的关键数据),“time=590ms”是往返时间。怎样估算链路的速度呢?举个例子吧。我们把A和B之间设置为PPP链路。从上面的PING例子可以注意到,默认情况下发送的ICMP报文有32个字节。除了这32个字节外再加上20个字节的IP首部和8个字节的ICMP首部,整个IP数据报文的总长度就是60个字节(因为IP和ICMP是Ping命令的主要使用协议,所以整个数据报文要加上它们)。另外在使用Ping命令时还使用了另一个协议进行传输,那就是PPP协议(点对点协议),所以在数据的开始和结尾再加上8个字节。在传输过程中,由于每个字节含有8bit数据、1bit起始位和1bit结束位,因此传输速率是每个字节2.98ms。由此我们可以估计需要405ms。即68*2.98*2(乘2是因为我们还要计算它的往返时间)。我们来测试一下33600 b/s的链路:Pinging 202.105.36.125 with 32 bytes of data:Reply from 202.105.36.125: bytes=32 time=415ms TTL=114Reply from 202.105.36.125: bytes=32 time=415ms TTL=114Reply from 202.105.36.125: bytes=32 time=415ms TTL=114Reply from 202.105.36.125: bytes=32 time=421ms TTL=114Ping statistics for 202.105.36.125:Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:Minimum = 415ms, Maximum = 421ms, Average = 417ms看是不是差不多啊。这里大家可能要注意到,这估算值跟实际值是有误差的,为什么呢?因为我们现在估算的是一个理论值,还有一些东西我们没有考虑。比如在网络中的其它干扰,这些干扰主要来之别的计算机。因为在你测试时不可能全部计算机停止使用网络给你做测试,这是不实际的。另外就是传输设备,因为有某些设备如MODEM它在传输时会把数据压缩后再发送,这大大减少了传输时间。这些东西产生的误差我们是不能避免的,但其数值大约在5%以内我们都可以接受(利用MODEM传输例外),但是可以减少误差的产生。比如把MODEM的压缩功能关闭和在网络没有那么繁忙时进行测试。有时候误差是无须消除的windows7系统下载。因为我们需要这些误差跟所求得的理论值进行比较分析,从而找出网络的缺陷而进行优化。这时测试网络的所有数据包括误差都会成为我们优化的依据。还要注意,这种算法在局域网并不适用,因为在局域网中速度非常的快几乎少于1ms,而Ping的最小时间分辨率是1ms,所以根本无法用Ping命令来检测速度。如果想测试速度那就要用专门仪器来检测。以下是PING的一些参数:ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [-j computer-list] | [-k computer-list] [-w timeout] destination-list……-tPing 指定的计算机直到中断。-a将地址解析为计算机名。-n count发送 count 指定的 ECHO 数据包数。默认值为 4。-l length发送包含由 length 指定的数据量的 ECHO 数据包。默认为 32 字节;最大值是65,527。-f在数据包中发送“不要分段”标志。数据包就不会被路由上的网关分段。-i ttl将“生存时间”字段设置为 ttl 指定的值。-v tos将“服务类型”字段设置为 tos 指定的值。-r count在“记录路由”字段中记录传出和返回数据包的路由。count 可以指定最少 1 台,最多 9 台计算机。-s count指定 count 指定的跃点数的时间戳。-j computer-list利用 computer-list 指定的计算机列表路由数据包。连续计算机可以被中间网关分隔(路由稀疏源)IP 允许的最大数量为 9。-k computer-list利用 computer-list 指定的计算机列表路由数据包。连续计算机不能被中间网关分隔(路由严格源)IP 允许的最大数量为 9。-w timeout指定超时间隔,单位为毫秒。destination-list指定要 ping 的远程计算机。Ping的返回信息有“Request Timed Out”、“Destination Net Unreachable”和“Bad IP address”还有“Source quench received”。“Request Timed Out”这个信息表示对方主机可以到达到TIME OUT,这种情况通常是为对方拒绝接收你发给它的数据包造成数据包丢失。大多数的原因可能是对方装有防火墙或已下线。“Destination Net Unreachable”这个信息表示对方主机不存在或者没有跟对方建立连接。这里要说明一下“destination host unreachable”和“time out”的区别,如果所经过的路由器的路由表中具有到达目标的路由,而目标因为其它原因不可到达,这时候会出现“time out”,如果路由表中连到达目标的路由都没有,那就会出现“destination host unreachable”。“Bad IP address” 这个信息表示你可能没有连接到Dns服务器所以无法解析这个IP地址,也可能是IP地址不存在。“Source quench received”信息比较特殊,它出现的机率很少。它表示对方或中途的服务器繁忙无法回应。怎样使用Ping这命令来测试网络连通呢?连通问题是由许多原因引起的,如本地配置错误、远程主机协议失效等,当然还包括设备等造成的故障。总的来说,Ping命令是一个在故障检查方面很有用而且很便利的工具,你不应该忽视它的存在。
阅读本文后您有什么感想? 已有
人给出评价!
09-12-2809-02-0304-11-0704-10-0804-10-0804-10-0704-10-0704-10-07
注:您的评论需要经过审核才会显示出来
Copyright &
PC6下载().All Rights Reserved
备案编号:湘ICP备号