加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

一文掌握 Linux 性能分析之网络篇

发布时间:2019-03-19 15:40:53 所属栏目:Windows 来源:著名的矿洞程序员
导读:副标题#e# 比较宽泛地讲,网络方向的性能分析既包括主机测的网络配置查看、监控,又包括网络链路上的包转发时延、吞吐量、带宽等指标分析。包括但不限于以下分析工具: ping:测试网络连通性 ifconfig:接口配置 ip:网络接口统计信息 netsat:多种网络栈和

4)netstat -r 显示路由表信息

一文掌握 Linux 性能分析之网络篇

这条命令能够看到主机路由表的一个情况。当然查路由我们也可以用 ip route 和 route 命令,这个命令显示的信息会更详细一些。

ifstat

ifstat 主要用来监测主机网口的网络流量,常用的选项包括:

  • -a:监测主机所有网口
  • -i:指定要监测的网口
  • -t:在每行输出信息前加上时间戳
  • -b:以 Kbit/s 显示流量数据,而不是默认的 KB/s
  • -delay:采样间隔(单位是 s),即每隔 delay 的时间输出一次统计信息
  • -count:采样次数,即共输出 count 次统计信息

比如,通过以下命令统计主机所有网口某一段时间内的流量数据:

可以看出,分别统计了三个网口的流量数据,前面输出的时间戳,有助于我们统计一段时间内各网口总的输入、输出流量。

netcat

netcat,简称 nc,命令简单,但功能强大,在排查网络故障时非常有用,因此它也在众多网络工具中有着“瑞士军刀”的美誉。

它主要被用来构建网络连接。可以以客户端和服务端的方式运行,当以服务端方式运行时,它负责监听某个端口并接受客户端的连接,因此可以用它来调试客户端程序;当以客户端方式运行时,它负责向服务端发起连接并收发数据,因此也可以用它来调试服务端程序,此时它有点像 Telnet 程序。

常用的选项包括以下几种:

  • -l:以服务端的方式运行,监听指定的端口。默认是以客户端的方式运行。
  • -k:重复接受并处理某个端口上的所有连接,必须与 -l 一起使用。
  • -n:使用 IP 地址表示主机,而不是主机名,使用数字表示端口号,而不是服务名称。
  • -p:当以客户端运行时,指定端口号。
  • -s:设置本地主机发出的数据包的 IP 地址。
  • -C:将 CR 和 LF 两个字符作为结束符。
  • -U:使用 UNIX 本地域套接字通信。
  • -u:使用 UDP 协议通信,默认使用的是 TCP 协议。
  • -w:如果 nc 客户端在指定的时间内未检测到任何输入,则退出。
  • -X:当 nc 客户端与代理服务器通信时,该选项指定它们之间的通信协议,目前支持的代理协议包括 “4”(SOCKS v.4),“5”(SOCKS v.5)和 “connect” (HTTPs Proxy),默认使用 SOCKS v.5。
  • -x:指定目标代理服务器的 IP 地址和端口号。

下面举一个简单的例子,使用 nc 命令发送消息:

首先,启动服务端,用 nc -l 0.0.0.0 12345 监听端口 12345 上的所有连接。

一文掌握 Linux 性能分析之网络篇

然后,启动客户端,用 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 上所有收到和发出的所有数据包,使用:

  1. tcpdump host 200.200.200.100 

2)捕获多个主机的数据包

比如要捕获主机 200.200.200.1 和主机 200.200.200.2 或 200.200.200.3 的通信,使用:

  1. 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 包,使用:

  1. tcpdump tcp port 23 host 200.200.200.1 

4)捕获某端口相关的数据包

比如捕获在端口 6666 上通过的包,使用:

  1. tcpdump port 6666 

5)捕获某网口的数据包

比如捕获在网口 eth0 上通过的包,使用:

  1. tcpdump -i eth0 

下面还是举个例子,抓取 TCP 三次握手的包:(具体抓包的过程请移步到我的公众号进一步了解,那里阅读体验好一点,谢谢。)

总结:

本文总结了几种初级的网络工具,基本的网络性能分析,通过组合以上几种工具,基本都能应付,但对于复杂的问题,以上工具可能就无能为力了。更多高阶的工具将在下文送上,敬请期待。

(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!