当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > 调谐LINUX网络性能之调试工具篇

Unix/Linux
mysql+httpd+gd+php+zend
automake 小回顾
unix黑客精神的最好诠释
www
sun t3存储的设置
RPM简明中文手册
Linux爱好者入门教程 序章 (持续更新)
第一章 Linux基础知识 (飘心)
linux下进程与线程
浅谈如何学习linux
第二章 Linux安装
硬件安装指南
Windows 2000 的桌面不見了的解決方法
部分的ADSL路由器默认帐号密码
如何设定安全log服务器呢?
iptables 规则速查
网友学习 Linux 的七点忠告
sniffer的含义及原理
Linux编程白皮书 第二章 内存管理
Linux编程白皮书 第二章 内存管理 2.1.1 请求调页 --2.1.5 访问控制

Unix/Linux 中的 调谐LINUX网络性能之调试工具篇


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 49 ::
收藏到网摘: n/a


本文是调协Linux系统网络性能的,主要介绍了route、netstat、tcpdump三种网络调谐测试工具的使用方法及其可实现的功能。route在配置网络时,要为机器指定接收数据包时该包要经过的路径。在Linux系统中,提供一个命令route,这个命令可以为ifconfig命令配置的网卡设置静态路由。这种设置工作通常在/etc/rc.d/rc.inet1中引入,在系统引导时进行。我们通过几个例子来说明如何使用route命令:route add -net 127.0.0.0这个命令将向路由表中添加一个指定地址或者网络的路由。注意此时网络为A类地址,掩码被设置为255.0.0.0,这个新添加的条目被连接到lo设备上。route add -net xxx.xxx.xxx.xxx netmask 255.255.255.0 dev eth0这个命令为IP地址为xxx.xxx.xxx.xxx的主机增加一个路由,它的网络掩码被设置为255.255.255.0。route del -net xxx.xxx.xxx.xxx此命令将删除xxx.xxx.xxx.xxx这个网络的路由。使用route命令还可以很方便地对整个网络的路由信息进行管理,其输出结果是网络的路由表。如下所示:-----------------------------------------------------------------[root@lee /root]#routeKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface10.10.8.224 * 255.255.255.255 UH 0 0 0 eth010.10.8.0 * 255.255.255.0 U 0 0 0 eth0127.0.0.0 * 255.0.0.0 U 0 0 0 lodefault dgc8.njupt.edu 0.0.0.0 UG 0 0 0 eth0default dgc8.njupt.edu 0.0.0.0 UG 1 0 0 eth0[root@lee /root]#-----------------------------------------------------------------输出结果中各个字段的含义是: ·Destination表示路由的目标IP地址。 ·Gateway表示网关使用的主机名或者是IP地址。上面输出的"*"表示没有网关。 ·Genmask表示路由的网络掩码。在把它与路由的目标地址进行比较之前,内核通过Genmask和数据包的IP地址进行按位"与"操作来设置路由。 ·Flags是表示路由的标志。可用的标志及其意义是:U表示路由在启动,H表示target是一台主机,G表示使用网关,R表示对动态路由进行复位设置;D表示动态安装路由,M表示修改路由,!表示拒绝路由。 ·Metric表示路由的单位开销量。 ·Ref表示依赖本路由现状的其它路由数目。 ·Use表示路由表条目被使用的数目。 ·Iface表示路由所发送的包的目的网络。 通过查看这些输出信息,我们就可以方便地管理网络的路由表了。 netstat netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。在计算机上执行netstat后,其输出结果如下所示: -----------------------------------------------------------------[root@lee /root]#netstatActive Internet connections (w/o servers)Proto Recv-Q Send-Q Local Address Foreign Address StateActive UNIX domain sockets (w/o servers)Proto RefCnt Flags Types State I-Node PathUnix 5 [ ] DGRAM 460 /dev/logUnix 0 [ ] STREAM CONNECTED 173 @00000014Unix 0 [ ] DGRAM 662 Unix 0 [ ] DGRAM 631 Unix 0 [ ] DGRAM 544 Unix 0 [ ] DGRAM 484 Unix 0 [ ] DGRAM 470 [root@lee /root]#-----------------------------------------------------------------[Nextpage]从整体上看,netstat的输出结果可以分为两个部分:第一部分:是Active Internetconnections,称为有源TCP连接,在上面的输出结果中,这一部分没有内容,表示暂时还没有TCP连接。第二部分:是Active UNIXdomain sockets,称为有源Unix域套接口。输出结果显示的是Unix域套接口的连接情况: ·Proto显示连接使用的协议。 ·RefCnt表示连接到本套接口上的进程号。 ·Types显示套接口的类型。 ·State显示套接口当前的状态。 ·Path表示连接到套接口的其它进程使用的路径名。 可以用netstat -a来查看所有套接字的状态,这在您调试网络程序的时候是非常有用的。netstat-r将显示路由表的内容,一般还要同时指定"-n"选项,这样可以得到数字格式的地址,也可显示默认路由器的IP地址。使用netstat-i则将显示所有的网络接口信息。使用netstat还可以获得当前的网络状态以及网络的拓扑结构,这在实际中是非常有用的。 tcpdump tcpdump命令用于监视TCP/IP连接并直接读取数据链路层的数据包头。您可以指定哪些数据包被监视、哪些控制要显示格式。例如我们要监视所有Ethernet上来往的通信,执行下述命令: tcpdump -i eth0 即使是在一个相对平静的网络上,也有很多的通信,所以我们可能只需要得到我们感兴趣的那些数据包的信息。在一般情况下,TCP/IP栈只为本地主机接收入站的数据包绑定同时忽略网络上的其它计算机编址(除非您使用的是一台路由器)。当运行tcpdump命令时,它会将TCP/IP栈设置为promiscuous模式。该模式可接收所有的数据包并使其有效显示。如果我们关心的只是我们本地主机的通信情况,一种方法是使用“-p”参数禁止promiscuous模式,还有一种方法就是指定主机名: tcpdump -i eth0 host hostname 此时,系统将只对名为hostname的主机的通