网络分析工具

时间:2022-01-29 08:48:12

在后台开发中网络通信这一块非常重要,在处理定位问题或者多方联调时,需要用到网络分析工具。这里学习一下ping、tcpdump、netstat和lsof这4个网络分析工具的使用。

1、 ping

介绍:ping(Packet Internet Groper,因特网包探索器)是Windows、UNIX和Linux系统下的一个命令。ping也属于一个通信协议,是TCP/IP协议的一部分。

原理:ping发送一个ICMP(Internet Control Messages Protocol,因特网信报控制协议),请求消息给目的地并报告是否收到所希望的ICMP echo(ICMP回声应答),它是用来检查网络是否畅通或者网络连接速度的命令。利用网络上机器IP地址的唯一性,给目标IP地址发送一个数据包,再要求对方返回一个同样大小的数据包来确定两台网络机器是否连接相同以及时延是多少。

作用:利用ping命令可以检查网络是否连通,可以很好地帮助分析和判定网络故障。

应用格式:ping IP 地址
例如:ping一下百度首页

# ping www.baidu.com
PING www.a.shifen.com (220.181.112.244): 56 data bytes
64 bytes from 220.181.112.244: icmp_seq=0 ttl=52 time=2.502 ms
64 bytes from 220.181.112.244: icmp_seq=1 ttl=52 time=2.648 ms
64 bytes from 220.181.112.244: icmp_seq=2 ttl=52 time=5.930 ms
64 bytes from 220.181.112.244: icmp_seq=3 ttl=52 time=5.908 ms
64 bytes from 220.181.112.244: icmp_seq=4 ttl=52 time=5.079 ms
64 bytes from 220.181.112.244: icmp_seq=5 ttl=52 time=2.793 ms
64 bytes from 220.181.112.244: icmp_seq=6 ttl=52 time=2.765 ms
64 bytes from 220.181.112.244: icmp_seq=7 ttl=52 time=3.375 ms

这里发现Linux下和Windows下的ping有一点点细微的差别:
(1)Linux的ping数据包是64Byte,而Windows的是32Byte
(2)Windows下默认发送4次数据包后结束,Linux下的ping程序默认不停发送数据包,直到用户手动停止(停止命令是ctrl+c)。

ping的使用
网络连接问题是由许多原因引起的,如本地配置错误、远程主机协议失效等,当然还包括设备等造成的故障。使用ping检查连通性有以下6个步骤:
(1)使用ipconfig/all观察本地网络设置是否正确。(Linux下使用ifconfig)
(2)ping 127.0.0.1,来检查本地的TCP/IP协议有没有设置好。
(3)ping本机IP地址,这样是为了检查本机的IP地址是否设置有误。
(4)ping本网网关或本网IP地址,这样是为了检查硬件设备是否有问题,也可以检查本机与本地网络连接是否正常。(在非局域网中这一步骤可以忽略)
(5)ping本地DNS地址,这样做是为了检查本地DNS服务器是否工作正常
(6)ping远程IP地址,这主要是检查本网或本机与外部的连接是否正常。ping远程IP地址可以用来测试网络延时。

网络分析工具

从上图可以看到,向百度域名发了10个包,对方10个都收到了,没有丢包,共耗时9013ms,RTT(一个连接的往返时间)的最小、平均、最大和算术平均差分别是1.000ms、1.066ms、1.189ms、0.074

time=1.01ms是响应时间,这个时间越小,说明连接的这个地址速度越快。

从图中还可以看出,用ping命令可以寻找固定网站网址的IP地址,其中61.135.169.121就是www.baidu.com其中一台机器的IP地址,在浏览器输入这个IP,会跳转到百度首页。

网络分析工具

2、 tcpdump

介绍
tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助去掉无用的信息。

命令格式
tcpdump [ -adeflnNOpqStvx ] [ -c数量 ] [ -F 文件名 ]
[ -i 网络接口 ] [ -r 文件名 ] [ -s snaplen ]
[ -T 类型 ] [ -w 文件名 ] [ 表达式 ]
表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。

撑不住要去睡了,明天继续补充…………