一文掌握 Linux 性能分析之网络篇(2)
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 上所有收到和发出的所有数据包,使用:
2)捕获多个主机的数据包 比如要捕获主机 200.200.200.1 和主机 200.200.200.2 或 200.200.200.3 的通信,使用:
同样要捕获主机 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 包,使用:
4)捕获某端口相关的数据包 比如捕获在端口 6666 上通过的包,使用:
5)捕获某网口的数据包 比如捕获在网口 eth0 上通过的包,使用:
下面还是举个例子,抓取 TCP 三次握手的包:(具体抓包的过程请移步到我的公众号进一步了解,那里阅读体验好一点,谢谢。) 总结: 本文总结了几种初级的网络工具,基本的网络性能分析,通过组合以上几种工具,基本都能应付,但对于复杂的问题,以上工具可能就无能为力了。更多高阶的工具将在下文送上,敬请期待。 (编辑:ASP站长网) |