司马他

237 阅读8分钟

目前网络间交互在服务中应用特别多,尤其是目前第三方服务基本都是远程访问,快速解决网络问题,定位网络问题可以节省我们很多时间,下面就介绍一下,ping、telnet、traceroute等几款工具

快速查看自己的出口IP

linux系统可以使用命令,windows系统可以使用命令
还可以使用一些第三方服务,如: 可以直接在浏览器执行,或者使用curl请求访问

提供查看公网IP的第三方服务

http://myip.ipip.net/
http://ip.cn/
http://ipinfo.io/
http://cip.cc/
http://ifconfig.me/
 

ping命令查看当前域名访问情况

Ping程序实际就是发送一个ICMP回显请求报文给目的主机,并等待回显的ICMP应答。然后打印出回显的报文。ping命令查看丢包、查看当前域名解析地址,此命令可以持续执行,也可以简短执行观察是否畅通,一般情况下都是开启ping的,特定服务没有开启,可以使用telnet等方案来查看问题

Pinging b2b.ccb.com [219.142.89.23] with 32 bytes of data:
 
Request timed out.
Request timed out.
Request timed out.
Request timed out.
 
Ping statistics for 219.142.89.23:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
 

PING得到的结果包括字节数、反应时间、以及生存时间。Ping程序通过在ICMP报文数据中存放发送请求的时间来计算返回时间。当应答返回时,根据现在时间减去报文中存放的发送时间就得到反应时间了。生存时间(TTL),本来就存放在IP数据报的头部,直接就能够获取。上面示例代表,发送4个包,4个丢包,网络有相应问题

-t选项 不停的ping主机,直到你按下Control-C
-a选项 解析计算机NetBios名。
-n选项 发送count指定的Echo数据包数。 
-l选项 定义echo数据包大小
-f选项 在数据包中发送“不要分段”标志。 
-i选项 TTL Time To Live. 指定TTL值在对方的系统里停留的时间。
-r选项 在“记录路由”字段中记录传出和返回数据包的路由。(限制9个路由)
-s选项  指定 count 指定的跃点数的时间戳。
-j选项 指定的计算机列表路由数据包。连续计算机可以被中间网关分隔(路由稀疏源)IP 允许的最大数量为 9。
-k选项 利用 computer-list 指定的计算机列表路由数据包。连续计算机不能被中间网关分隔(路由严格源)IP 允许的最大数量为 9。 
-w选项 指定超时间隔,单位为毫秒。
 

小技巧:可以通过ping返回的TTL判断目标机器的操作系统~

telnet命令查看当前端口能否访问通

telnet命令通常用来远程登录。telnet程序是基于TELNET协议的远程登录客户端程序。telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了,但是其可以很方便的测试端口的连通性。

telnet baidu.com 80
 
欢迎使用 Microsoft Telnet Client
 
Escape 字符为 'CTRL+]'
 
 
Microsoft Telnet> quit
 

上面示例所示,即可看出端口是否畅通,退出为”CTRL+]”

traceroute命令查看网络请求节点访问情况

Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP 数据报访问目标所采取的路径。Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其它主机的路由。Tracert 先发送 TTL 为 1 的回应数据包,并在随后的每次发送过程将 TTL 递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP 已超时”的消息确定路由。

tracert b2b.ccb.com
 
Tracing route to b2b.ccb.com [219.142.89.23]
over a maximum of 30 hops:
 
  1     *        *        *     Request timed out.
  2    <1 ms    <1 ms    <1 ms  10.138.17.101
  3    <1 ms    <1 ms    <1 ms  10.138.18.6
  4    <1 ms    <1 ms    <1 ms  106.120.160.67
  5     *        *        *     Request timed out.
  6     *        *        *     Request timed out.
  7     *       <1 ms     *     218.30.25.121
  8    <1 ms    <1 ms    <1 ms  218.30.28.85
  9     1 ms     1 ms     1 ms  2.254.120.106.static.bjtelecom.net [106.120.254.
2]
 10     1 ms     1 ms     1 ms  46.5.142.219.broad.bj.bj.dynamic.163data.com.cn
[219.142.5.46]
 11     *        *        *     Request timed out.
 12     *        *        *     Request timed out.
 13     *        *        *     Request timed out.
 14     *        *        *     Request timed out.
 15     *        *        *     Request timed out.
 16     *        *        *     Request timed out.
 17     *        *        *     Request timed out.
 18     *        *        *     Request timed out.
 19     *        *        *     Request timed out.
 20     *        *        *     Request timed out.
 21     *        *        *     Request timed out.
 22     *        *        *     Request timed out.
 23     *        *        *     Request timed out.
 24     *        *        *     Request timed out.
 25     *        *        *     Request timed out.
 26     *        *        *     Request timed out.
 27     *        *        *     Request timed out.
 28     *        *        *     Request timed out.
 29     *        *        *     Request timed out.
 30     *        *        *     Request timed out.
 
Trace complete.
 

上图可以看到在访问到 之后,就会丢包,这样即可让对方去排查网络问题

-d选项  不将地址解析成主机名,能够更快地显示路由器路径。
-h选项  指定跟踪的跃点数。
-w选项 指定等待每个应答的时间(以毫秒为单位)。默认值为 3000 毫秒(3 秒)
 

mtr工具友好查看网络节点访问情况

mtr是traceroute的升级版,集合了ping与traceroute的所有优点

windows下载地址:http://winmtr.net/download-winmtr/
linux安装命令:yum install mtr (centos)

测试到 example.com 的路由信息和网络连接质量

mtr -rw example.com
 
mtr -h  #提供帮助命令
mtr -v  #显示mtr的版本信息
mtr -r  #已报告模式显示
mtr -s  #用来指定ping数据包的大小
mtr --no-dns  #不对IP地址做域名解析
mtr -a  #来设置发送数据包的IP地址 这个对一个主机由多个IP地址是有用的
mtr -i  #使用这个参数来设置ICMP返回之间的要求默认是1秒
mtr -4  #IPv4
mtr -6  #IPv6
 

第一列:Host显示的是IP地址和本机域名,这点和traceroute很像
第二列:snt:10 设置每秒发送数据包的数量,默认值是10 可以通过参数 -c来指定。其中-c的说明是:–report-cycles COUNT
第三列:Loss%是显示的每个对应IP的丢包率
第四列:Last显示的最近一次的返回时延
第五列:Avg是平均值 这个应该是发送ping包的平均时延
第六列:Best是最好或者说时延最短的
第七列:Wrst是最差或者说时延最常的
第八列:StDev是标准偏差
 

nslookup命令查看DNS是否可用

一般以上几个步骤就可以排查出网络问题发生在哪里,很多间歇性问题,还可以持续使用工具来观察丢包率。

相关文章