当前位置 : 主页 > 网络编程 > 其它编程 >

Linux网络测试三种强大工具详解

来源:互联网 收集:自由互联 发布时间:2023-07-02
Linux网络测试三种强大工具详解本文是介绍管理Linux系统网络性能技巧的文章主要介绍了route、netstat、tcpdump三种网络管理测试工具的使用方法及 Linux网络测试三种强大工具详解 本文是介
Linux网络测试三种强大工具详解本文是介绍管理Linux系统网络性能技巧的文章主要介绍了route、netstat、tcpdump三种网络管理测试工具的使用方法及

Linux网络测试三种强大工具详解

本文是介绍管理Linux系统网络性能技巧的文章主要介绍了route、netstat、tcpdump三种网络管理测试工具的使用方法及其可实现的功能。

Linux网络测试工具route

在配置网络时要为机器指定接收数据包时该包要经过的路径。在Linux系统中提供一个命令route这个命令可以为ifconfig命令配置的网卡设置静态路由。这种设置工作通常在/etc/rc.d/rc.inet1中引入在系统引导时进行。

我们通过几个例子来说明如何使用route命令

routeadd-net127.0.0.0

这个命令将向路由表中添加一个指定地址或者网络的路由。注意此时网络为A类地址掩码被设置为255.0.0.0这个新添加的条目被连接到lo设备上。

routeadd-netxxx.xxx.xxx.xxxnetmask255.255.255.0deveth0

这个命令为IP地址为xxx.xxx.xxx.xxx的主机增加一个路由它的网络掩码被设置为255.255.255.0。

routedel-netxxx.xxx.xxx.xxx

此命令将删除xxx.xxx.xxx.xxx这个网络的路由。

使用route命令还可以很方便地对整个网络的路由信息进行管理其输出结果是网络的路由表。如下所示

[rootlee/root]#route

KernelIProutingtable

DestinationGatewayGenmaskFlagsMetricRefUseIface

10.10.8.224*255.255.255.255UH000eth0

10.10.8.0*255.255.255.0U000eth0

127.0.0.0*255.0.0.0U000lo

defaultdgc8.njupt.edu0.0.0.0UG000eth0

defaultdgc8.njupt.edu0.0.0.0UG100eth0

[rootlee/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后其输出结果如下所示

[rootlee/root]#netstat

ActiveInternetconnections(w/oservers)

ProtoRecv-QSend-QLocalAddressForeignAddressState

ActiveUNIXdomainsockets(w/oservers)

ProtoRefCntFlagsTypesStateI-NodePath

Unix5[]DGRAM460/dev/log

Unix0[]STREAMCONNECTED17300000014

Unix0[]DGRAM662

Unix0[]DGRAM631

Unix0[]DGRAM544

Unix0[]DGRAM484

Unix0[]DGRAM470

[rootlee/root]#

从整体上看netstat的输出结果可以分为两个部分第一部分是ActiveInternetconnections称为有源TCP连接在上面的输出结果中这一部分没有内容表示暂时还没有TCP连接。第二部分是ActiveUNIXdomainsockets称为有源Unix域套接口。输出结果显示的是Unix域套接口的连接情况

·Proto显示连接使用的协议。

·RefCnt表示连接到本套接口上的进程号。

·Types显示套接口的类型。

·State显示套接口当前的状态。

·Path表示连接到套接口的其它进程使用的路径名。

可以用netstat-a来查看所有套接字的状态这在您调试网络程序的时候是非常有用的。netstat-r将显示路由表的内容一般还要同时指定"-n"选项这样可以得到数字格式的地址也可显示默认路由器的IP地址。使用netstat-i则将显示所有的网络接口信息。使用netstat还可以获得当前的网络状态以及网络的拓扑结构这在实际中是非常有用的。

tcpdump

tcpdump命令用于监视TCP/IP连接并直接读取数据链路层的数据包头。您可以指定哪些数据包被监视、哪些控制要显示格式。例如我们要监视所有Ethernet上来往的通信执行下述命令

tcpdump-ieth0

即使是在一个相对平静的网络上也有很多的通信所以我们可能只需要得到我们感兴趣的那些数据包的信息。在一般情况下TCP/IP栈只为本地主机接收入站的数据包绑定同时忽略网络上的其它计算机编址除非您使用的是一台路由器)。当运行tcpdump命令时它会将TCP/IP栈设置为promiscuous模式。该模式可接收所有的数据包并使其有效显示。如果我们关心的只是我们本地主机的通信情况一种方法是使用“-p”参数禁止promiscuous模式还有一种方法就是指定主机名

tcpdump-ieth0hosthostname

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

tcpdump-ieth0srchosthostname

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

tcpdump-ieth0dsthosthostname

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

tcpdump-ieth0gatewayGatewayname

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

tcpdump-ieth0hosthostnameandport80

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

上一篇:元素排序排序算法之插入排序
下一篇:没有了
网友评论