linux中的ping命令可以用来测试与目标主机的连通性,是通过发送ICMP echo_request数据包到主机,并显示响应情况。
命令1 ping一台主机
ping 192.168.120.205
命令2 ping 网关
ping -b 192.168.120.1
命令3 指定参数 -i 表示发送时间为3s,-s表示设置发送包大小为1024(指定发送的数据字节数,预设值是56,加上8字节的ICMP头,一共是64ICMP数据字节。) -t 表示设置TTL值为255,-c表示发送10次
ping -i 3 -c 10 -s 1024 -t 255 192.168.120.206
traceroute可以测试主机到另一个主机走的什么路径,但是每次数据包走的路径可能会不一样,在windows下使用命令tracert
常用的参数有
-d 使用Socket层级的排错功能。
-f 设置第一个检测数据包的存活数值TTL的大小。
-F 设置勿离断位。
-g 设置来源路由网关,最多可设置8个。
-i 使用指定的网络界面送出数据包。
-I 使用ICMP回应取代UDP资料信息。
-m 设置检测数据包的最大存活数值TTL的大小。
-n 直接使用IP地址而非主机名称。
-p 设置UDP传输协议的通信端口。
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。
-s 设置本地主机送出数据包的IP地址。
-t 设置检测数据包的TOS数值。
-v 详细显示指令的执行过程。
-w 设置等待远端主机回报的时间。
-x 开启或关闭数据包的正确性检验。
命令1 主机到另一个机器的路径
traceroute www.baidu.com
其返回值,每一行为一个序列号,就是一跳,每跳表示一个网关,每一跳中的一个时间表示一个数据包的返回时间,可以用-q 指定探测包的个数,有些行是*号表示的,可能是防火墙封掉了ICMP的返回信息,所以获取不到相关包的数据,-n参数可以避免dns解析,直接使用IP格式输出。
命令2 设置跳数
traceroute -m 10 www.baidu.com
命令3 设置UDP的传输端口
traceroute -p 6888 www.baidu.com
命令4 -r可以忽略路由表,直接连接到对应的主机上。可能会发生网络不可达
traceroute -r www.baidu.com
命令5 -w可以设置等待相应时间,单位是s
traceroute -w 3 www.baidu.com
traceroute命令的原理:
Traceroute程序的设计是利用ICMP及IP header的TTL(Time To Live)栏位(field)。首先,traceroute送出一个TTL是1的IP datagram(其实,每次送出的为3个40字节的包,包括源地址,目的地址和包发出的时间标签)到目的地,当路径上的第一个路由器(router)收到这个datagram时,它将TTL减1。此时,TTL变为0了,所以该路由器会将此datagram丢掉,并送回一个「ICMP time exceeded」消息(包括发IP包的源地址,IP包的所有内容及路由器的IP地址),traceroute 收到这个消息后,便知道这个路由器存在于这个路径上,接着traceroute 再送出另一个TTL是2 的datagram,发现第2 个路由器...... traceroute 每次将送出的datagram的TTL 加1来发现另一个路由器,这个重复的动作一直持续到某个datagram 抵达目的地。当datagram到达目的地后,该主机并不会送回ICMP time exceeded消息,因为它已是目的地了,那么traceroute如何得知目的地到达了呢?
Traceroute在送出UDP datagrams到目的地时,它所选择送达的port number 是一个一般应用程序都不会用的号码(30000 以上),所以当此UDP datagram 到达目的地后该主机会送回一个「ICMP port unreachable」的消息,而当traceroute 收到这个消息时,便知道目的地已经到达了。所以traceroute 在Server端也是没有所谓的Daemon 程式。
Traceroute提取发 ICMP TTL到期消息设备的IP地址并作域名解析。每次 ,Traceroute都打印出一系列数据,包括所经过的路由设备的域名及 IP地址,三个包每次来回所花时间。
参考文档:
http://www.cnblogs.com/peida/archive/2013/03/06/2945407.html
http://www.cnblogs.com/peida/archive/2013/03/07/2947326.html