| 关键词: 网络 主机 端口 网口 接口 信息 数据 ifconfig 命令 200.200 |
比较宽泛地讲,网络方向的性能分析既包括主机测的网络配置查看、监控,又包括网络链路上的包转发时延、吞吐量、带宽等指标分析。包括但不限于以下分析工具:
本文先来看前面 7 个。 ping ping 发送 ICMP echo 数据包来探测网络的连通性,除了能直观地看出网络的连通状况外,还能获得本次连接的往返时间(RTT 时间),丢包情况,以及访问的域名所对应的 IP 地址(使用 DNS 域名解析),比如: ![]() 我们 ping baidu.com,-c 参数指定发包数。可以看到,解析到了 baidu 的一台服务器 IP 地址为 220.181.112.244。RTT 时间的最小、平均、最大和算术平均差分别是 40.732ms、40.762ms、40.791ms 和 0.248。 ifconfig ifconfig 命令被用于配置和显示 Linux 内核中网络接口的统计信息。通过这些统计信息,我们也能够进行一定的网络性能调优。 ![]() 1)ifconfig 显示网络接口配置信息 其中,RX/TX packets 是对接收/发送数据包的情况统计,包括错误的包,丢掉多少包等。RX/TX bytes 是接收/发送数据字节数统计。其余还有很多参数,就不一一述说了,性能调优时可以重点关注 MTU(最大传输单元) 和 txqueuelen(发送队列长度),比如可以用下面的命令来对这两个参数进行微调: ifconfig eth0 txqueuelen 2000 ifconfig eth0 mtu 1500 2)网络接口地址配置 ifconfig 还常用来配置网口的地址,比如: 为网卡配置和删除IPv6地址: ifconfig eth0 add 33ffe:3240:800:1005::2/64 #为网卡eth0配置IPv6地址 ifconfig eth0 del 33ffe:3240:800:1005::2/64 #为网卡eth0删除IPv6地址 修改MAC地址: ifconfig eth0 hw ether 00:AA:BB:CC:dd:EE 配置IP地址: ifconfig eth0 192.168.2.10 ifconfig eth0 192.168.2.10 netmask 255.255.255.0 ifconfig eth0 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255 IP ip 命令用来显示或设置 Linux 主机的网络接口、路由、网络设备、策略路由和隧道等信息,是 Linux 下功能强大的网络配置工具,旨在替代 ifconfig 命令,如下显示 IP 命令的强大之处,功能涵盖到 ifconfig、netstat、route 三个命令。 ![]() netstat netstat 可以查看整个 Linux 系统关于网络的情况,是一个集多钟网络工具于一身的组合工具。 常用的选项包括以下几个:
各参数组合使用实例如下:
1)netstat 默认显示连接的套接字数据 整体上来看,输出结果包括两个部分:
2)netstat -i 显示网络接口信息 接口信息包括网络接口名称(Iface)、MTU,以及一系列接收(RX-)和传输(TX-)的指标。其中 OK 表示传输成功的包,ERR 是错误包,DRP 是丢包,OVR 是超限包。 这些参数有助于我们对网络收包情况进行分析,从而判断瓶颈所在。 3)netstat -s 显示所有网络协议栈的信息 ![]() 可以看到,这条命令能够显示每个协议详细的信息,这有助于我们针对协议栈进行更细粒度的分析。 4)netstat -r 显示路由表信息 这条命令能够看到主机路由表的一个情况。当然查路由我们也可以用 ip route 和 route 命令,这个命令显示的信息会更详细一些。 ifstat ifstat 主要用来监测主机网口的网络流量,常用的选项包括:
比如,通过以下命令统计主机所有网口某一段时间内的流量数据: ![]() 可以看出,分别统计了三个网口的流量数据,前面输出的时间戳,有助于我们统计一段时间内各网口总的输入、输出流量。 netcat netcat,简称 nc,命令简单,但功能强大,在排查网络故障时非常有用,因此它也在众多网络工具中有着“瑞士军刀”的美誉。 它主要被用来构建网络连接。可以以客户端和服务端的方式运行,当以服务端方式运行时,它负责监听某个端口并接受客户端的连接,因此可以用它来调试客户端程序;当以客户端方式运行时,它负责向服务端发起连接并收发数据,因此也可以用它来调试服务端程序,此时它有点像 Telnet 程序。 常用的选项包括以下几种:
下面举一个简单的例子,使用 nc 命令发送消息: 首先,启动服务端,用 nc -l 0.0.0.0 12345 监听端口 12345 上的所有连接。 然后,启动客户端,用 nc -p 1234 127.0.0.1 12345 使用 1234 端口连接服务器 127.0.0.1::12345。 ![]() 接着就可以在两端互发数据了。这里只是抛砖引玉,更多例子大家可以多实践。 tcpdump 最后是 tcpdump,强大的网络抓包工具。虽然有 wireshark 这样更易使用的图形化抓包工具,但 tcpdump 仍然是网络排错的必备利器。 tcpdump 选项很多,我就不一一列举了,大家可以看文章末尾的引用来进一步了解。这里列举几种 tcpdump 常用的用法。 1)捕获某主机的数据包 比如想要捕获主机 200.200.200.100 上所有收到和发出的所有数据包,使用: tcpdump host 200.200.200.100 2)捕获多个主机的数据包 比如要捕获主机 200.200.200.1 和主机 200.200.200.2 或 200.200.200.3 的通信,使用: tcpdump host 200.200.200.1 and \(200.200.200.2 or \) 同样要捕获主机 200.200.200.1 除了和主机 200.200.200.2 之外所有主机通信的 IP 包。使用: tcpdump ip host 200.200.200.1 and ! 200.200.200.2 3)捕获某主机接收或发出的某种协议类型的包 比如要捕获主机 200.200.200.1 接收或发出的 Telnet 包,使用: tcpdump tcp port 23 host 200.200.200.1 4)捕获某端口相关的数据包 比如捕获在端口 6666 上通过的包,使用: tcpdump port 6666 5)捕获某网口的数据包 比如捕获在网口 eth0 上通过的包,使用: tcpdump -i eth0 下面还是举个例子,抓取 TCP 三次握手的包:(具体抓包的过程请移步到我的公众号进一步了解,那里阅读体验好一点,谢谢。) 总结: 本文总结了几种初级的网络工具,基本的网络性能分析,通过组合以上几种工具,基本都能应付,但对于复杂的问题,以上工具可能就无能为力了。更多高阶的工具将在下文送上,敬请期待。 |
| 本文出处: https://www.toutiao.com/a6668896311753835022/ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|