zoukankan      html  css  js  c++  java
  • ping 和 traceroute 命令

    ping命令

    ping 程序 就是发送一个ICMP查询报文给某服务器,以测试该服务器是否可达。
    当返回ICMP回显应答时,要打印出序列号、TTL,和往返时间;
    [root@localhost src]# ping www.baidu.com
    PING www.a.shifen.com (61.135.169.125) 56(84) bytes of data.
    64 bytes from 61.135.169.125: icmp_seq=1 ttl=54 time=1.40 ms
    64 bytes from 61.135.169.125: icmp_seq=2 ttl=54 time=1.43 ms

    参数说明

    -d 使用Socket的SO_DEBUG功能。
    -f  极限检测。大量且快速地送网络封包给一台机器,看它的回应。
    -n 只输出数值。
    -q 不显示任何传送封包的信息,只显示最后的结果。
    -r 忽略普通的Routing Table,直接将数据包送到远端主机上。通常是查看本机的网络接口是否有问题。
    -R 记录路由过程。
    -v 详细显示指令的执行过程。
    -c 数目:在发送指定数目的包后停止。
    -i 秒数:设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。
    -I 网络界面:使用指定的网络界面送出数据包。
    -l 前置载入:设置在送出要求信息之前,先行发出的数据包。
    -p 范本样式:设置填满数据包的范本样式。
    -s 字节数:指定发送的数据字节数,预设值是56,加上8字节的ICMP头,一共是64ICMP数据字节。
    -t 存活数值:设置存活数值TTL的大小。

    测试丢包情况

    ping -c 1000 -f 10.75.49.29

    traceroute命令

    traceroute程序:向目的发送具有不同TTL的IP报文(封装一个UDP格式的数据,并选择一个不可能的值作为UPD端口号),以确定至目的地址的路由;
    首先,traceroute发送一个TTL=1的IP报文,处理这份数据报的第一个路由器将TTL-1,然后丢弃该数据报,并发回一个ICMP超时报文,
    这份包含ICMP信息的IP报文的信源地址就是该路由器的地址,这样就得到了该路径中的第一个路由器的地址;
    然后traceroute发送一个TTL=2的IP报文,可以得到第二个路由器的地址;继续这个过程直到数据报送至目的主机。
     
    当IP报文到的目的主机时,TTL=1,目的主机认为数据报已经到达目的端,因此不会丢弃该报文;
    但由于目的主机上的任何一个应用程序都没有使用指定的UPD端口号,因此会产生一个端口不可达的ICMP报文。
    traceroute程序根据接收到的ICMP报文是超时、还是端口不可达以判断什么时候结束。
    traceroute命令格式:
    traceroute hostname

    traceroute指令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes,用户可另行设置。

    参数说明:

    -d 使用Socket层级的排错功能
    -f 设置第一个检测数据包的存活数值TTL的大小
    -F 设置勿离断位
    -g 设置来源路由网关,最多可设置8个
    -i 使用指定的网络界面送出数据包
    -I 使用ICMP回应取代UDP,有时可以解决命令打印 “*”的问题
    -m 设置检测数据包的最大存活数值TTL的大小
    -n 直接使用IP地址而非主机名称,避免DNS解析
    -p UDP传输协议的通信端口
    
    -q 设置探测包个数,默认为3
    -r 忽略普通的Routing Table,直接将数据包送到远端主机上
    -s 设置本地主机送出数据包的IP地址
    -t 设置检测数据包的TOS数值
    -v 详细显示指令的执行过程
    -w 设置等待远端主机回报的时间
    -x 开启或关闭数据包的正确性检验

    练习一下

    [root@localhost ~]# traceroute www.baidu.com
    traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets
     1  192.168.74.2 (192.168.74.2)  2.606 ms  2.771 ms  2.950 ms
     2  211.151.56.57 (211.151.56.57)  0.596 ms  0.598 ms  0.591 ms
     3  211.151.227.206 (211.151.227.206)  0.546 ms  0.544 ms  0.538 ms
     4  210.77.139.145 (210.77.139.145)  0.710 ms  0.748 ms  0.801 ms
     5  202.106.42.101 (202.106.42.101)  6.759 ms  6.945 ms  7.107 ms
     6  61.148.154.97 (61.148.154.97)  718.908 ms * bt-228-025.bta.net.cn (202.106.228.25)  5.177 ms
     7  124.65.58.213 (124.65.58.213)  4.343 ms  4.336 ms  4.367 ms
     8  202.106.35.190 (202.106.35.190)  1.795 ms 61.148.156.138 (61.148.156.138)  1.899 ms  1.951 ms
     9  * * *
    30  * * *
    [root@localhost ~]# 

    说明

    1、记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,单位是 ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果您用 traceroute -q 4 www.58.com ,表示向每个网关发送4个数据包。
    2、有时我们traceroute 一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。
    3、有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会 有延时长的现象;您可以加-n 参数来避免DNS解析,以IP格式输出数据。
    4、如果在局域网中的不同网段之间,我们可以通过traceroute 来排查问题所在,是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute 追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;

     

    更网络命令请参考:http://linux.vbird.org/linux_server/0140networkcommand.php 

  • 相关阅读:
    关于Jquery内存的释放
    jQuery 事件 mouseleave() 方法 mouseenter() 方法
    模版方法模式
    js中return的用法
    HTTP返回码中301与302的区别
    DS介绍
    Java MySql乱码解决
    [IOS] UIViewController的parentViewController属性
    LinuxFind命令
    Linux第一课
  • 原文地址:https://www.cnblogs.com/596014054-yangdongsheng/p/10445118.html
Copyright © 2011-2022 走看看