荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: windmoon.bbs@bbs.zju.edu.cn (风神月影), 信区: Linux
标  题: 调谐LINUX网络性能之调试工具篇
发信站: 浙江大学海纳百川 (Sat Feb 15 15:55:55 2003)
转信站: SZU!news.tiaozhan.com!news.happynet.org!ZJUBBS

本文是调协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]#route
  Kernel IP routing table
  Destination Gateway Genmask Flags Metric Ref Use Iface
  10.10.8.224 * 255.255.255.255 UH 0 0 0 eth0
  10.10.8.0 * 255.255.255.0 U 0 0 0 eth0
  127.0.0.0 * 255.0.0.0 U 0 0 0 lo
  default dgc8.njupt.edu 0.0.0.0 UG 0 0 0 eth0
  default dgc8.njupt.edu 0.0.0.0 UG 1 0 0 eth0
  [root@lee /root]#



  输出结果中各个字段的含义是:

  · Destination表示路由的目标IP地址。

  · Gateway表示网关使用的主机名或者是IP地址。上面输出的"*"表示没有网关。

  ·
Genmask表示路由的网络掩码。在把它与路由的目标地址进行比较之前,内核通过Genma
sk和数据包的IP地址进行按位"与"操作来设置路由。

  ·
Flags是表示路由的标志。可用的标志及其意义是:U表示路由在启动,H表示target是
一台主机,G表示使用网关,R表示对动态路由进行复位设置;D表示动态安装路由,M表
示修改路由,!表示拒绝路由。

  · Metric表示路由的单位开销量。

  · Ref表示依赖本路由现状的其它路由数目。

  · Use表示路由表条目被使用的数目。

  · Iface表示路由所发送的包的目的网络。

  通过查看这些输出信息,我们就可以方便地管理网络的路由表了。

netstat

  netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际
的网络连接以及每一个网络接口设备的状态信息。在计算机上执行netstat后,其输出结
果如下所示:


  [root@lee /root]#netstat
  Active Internet connections (w/o servers)
  Proto Recv-Q Send-Q Local Address Foreign Address State
  Active UNIX domain sockets (w/o servers)
  Proto RefCnt Flags Types State I-Node Path
  Unix 5 [ ] DGRAM 460 /dev/log
  Unix 0 [ ] STREAM CONNECTED 173 @00000014
  Unix 0 [ ] DGRAM 662
  Unix 0 [ ] DGRAM 631
  Unix 0 [ ] DGRAM 544
  Unix 0 [ ] DGRAM 484
  Unix 0 [ ] DGRAM 470
  [root@lee /root]#



  从整体上看,netstat的输出结果可以分为两个部分:第一部分:是Active
Internet
connections,称为有源TCP连接,在上面的输出结果中,这一部分没有内容,表示暂时
还没有TCP连接。第二部分:是Active UNIX domain
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栈只为本地主机接收入站的数据包
绑定同时忽略网络上的其它计算机编址(除非您使用的是一台路由器)。当运行tcpdum
p命令时,它会将TCP/IP栈设置为promiscuous模式。该模式可接收所有的数据包并使其
有效显示。如果我们关心的只是我们本地主机的通信情况,一种方法是使用“-p”参数
禁止promiscuous模式,还有一种方法就是指定主机名:


  tcpdump -i eth0 host hostname



  此时,系统将只对名为hostname的主机的通信数据包进行监视。主机名可以是本地
主机,也可以是网络上的任何一台计算机。下面的命令可以读取主机hostname发送的所
有数据:


  tcpdump -i eth0 src host hostname



  下面的命令可以监视所有送到主机hostname的数据包:


  tcpdump -i eth0 dst host hostname



  我们还可以监视通过指定网关的数据包:


  tcpdump -i eth0 gateway Gatewayname



  如果你还想监视编址到指定端口的TCP或UDP数据包,那么执行以下命令:


  tcpdump -i eth0 host hostname and port 80



  该命令将显示从每个数据包传出的头和来自主机hostname对端口80的编址。端口80
是系统默认的HTTP服务端口号。如果我们只需要列出送到80端口的数据包,用dst
port;如果我们只希望看到返回80端口的数据包,用src port。

小结

  本文我们介绍了网络调谐测试工具的使用方法及其可实现的功能。在下一篇文章中
,我们将解析网络配置文件,了解网络配置文件的内容以及如何修改文件。


--
※ 来源:·浙江大学海纳百川站 bbs.zju.edu.cn·[FROM: windmoon]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店