netstat基本用法.docx

上传人:b****6 文档编号:7314726 上传时间:2023-01-22 格式:DOCX 页数:8 大小:18.31KB
下载 相关 举报
netstat基本用法.docx_第1页
第1页 / 共8页
netstat基本用法.docx_第2页
第2页 / 共8页
netstat基本用法.docx_第3页
第3页 / 共8页
netstat基本用法.docx_第4页
第4页 / 共8页
netstat基本用法.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

netstat基本用法.docx

《netstat基本用法.docx》由会员分享,可在线阅读,更多相关《netstat基本用法.docx(8页珍藏版)》请在冰豆网上搜索。

netstat基本用法.docx

netstat基本用法

Netstat简介

Netstat是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括tcp,udp以及unix套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字。

如果你想确认系统上的Web服务有没有起来,你可以查看80端口有没有打开。

以上功能使netstat成为网管和系统管理员的必备利器。

在这篇教程中,我会列出几个例子,教大家如何使用netstat去查找网络连接信息和系统开启的端口号。

以下的简单介绍来自netstat的man手册:

netstat-打印网络连接、路由表、连接的数据统计、伪装连接以及广播域成员。

1.列出所有连接

第一个要介绍的,是最简单的命令:

列出所有当前的连接。

使用-a选项即可。

$netstat-a

ActiveInternetconnections(serversandestablished)

ProtoRecv-QSend-QLocalAddressForeignAddressState

tcp00enlightened:

domain*:

*LISTEN

tcp00localhost:

ipp*:

*LISTEN

tcp00enlightened.local:

54750li240-5.members.li:

httpESTABLISHED

tcp00enlightened.local:

49980del01s07-in-f14.1:

httpsESTABLISHED

tcp600ip6-localhost:

ipp[:

:

]:

*LISTEN

udp00enlightened:

domain*:

*

udp00*:

bootpc*:

*

udp00enlightened.local:

ntp*:

*

udp00localhost:

ntp*:

*

udp00*:

ntp*:

*

udp00*:

58570*:

*

udp00*:

mdns*:

*

udp00*:

49459*:

*

udp600fe80:

:

216:

36ff:

fef8:

ntp[:

:

]:

*

udp600ip6-localhost:

ntp[:

:

]:

*

udp600[:

:

]:

ntp[:

:

]:

*

udp600[:

:

]:

mdns[:

:

]:

*

udp600[:

:

]:

63811[:

:

]:

*

udp600[:

:

]:

54952[:

:

]:

*

ActiveUNIXdomainsockets(serversandestablished)

ProtoRefCntFlagsTypeStateI-NodePath

unix2[ACC]STREAMLISTENING12403@/tmp/dbus-IDgfj3UGXX

unix2[ACC]STREAMLISTENING40202@/dbus-vfs-daemon/socket-6nUC6CCx

上述命令列出tcp,udp和unix协议下所有套接字的所有连接。

然而这些信息还不够详细,管理员往往需要查看某个协议或端口的具体连接情况。

2.只列出TCP或UDP协议的连接

使用-t选项列出TCP协议的连接:

$netstat-at

ActiveInternetconnections(serversandestablished)

ProtoRecv-QSend-QLocalAddressForeignAddressState

tcp00enlightened:

domain*:

*LISTEN

tcp00localhost:

ipp*:

*LISTEN

tcp00enlightened.local:

36310del01s07-in-f24.1:

httpsESTABLISHED

tcp00enlightened.local:

45038a96-17-181-10.depl:

httpESTABLISHED

tcp00enlightened.local:

37892ABTS-North-Static-:

httpESTABLISHED

.....

使用-u选项列出UDP协议的连接:

$netstat-au

ActiveInternetconnections(serversandestablished)

ProtoRecv-QSend-QLocalAddressForeignAddressState

udp00*:

34660*:

*

udp00enlightened:

domain*:

*

udp00*:

bootpc*:

*

udp00enlightened.local:

ntp*:

*

udp00localhost:

ntp*:

*

udp00*:

ntp*:

*

udp600fe80:

:

216:

36ff:

fef8:

ntp[:

:

]:

*

udp600ip6-localhost:

ntp[:

:

]:

*

udp600[:

:

]:

ntp[:

:

]:

*

上面同时显示了IPv4和IPv6的连接。

3.禁用反向域名解析,加快查询速度

默认情况下netstat会通过反向域名解析技术查找每个IP地址对应的主机名。

这会降低查找速度。

如果你觉得IP地址已经足够,而没有必要知道主机名,就使用-n选项禁用域名解析功能。

$netstat-ant

ActiveInternetconnections(serversandestablished)

ProtoRecv-QSend-QLocalAddressForeignAddressState

tcp00127.0.1.1:

530.0.0.0:

*LISTEN

tcp00127.0.0.1:

6310.0.0.0:

*LISTEN

tcp00192.168.1.2:

49058173.255.230.5:

80ESTABLISHED

tcp00192.168.1.2:

33324173.194.36.117:

443ESTABLISHED

tcp600:

:

1:

631:

:

:

*LISTEN

上述命令列出所有TCP协议的连接,没有使用域名解析技术。

Soeasy?

非常好。

4.只列出监听中的连接

任何网络服务的后台进程都会打开一个端口,用于监听接入的请求。

这些正在监听的套接字也和连接的套接字一样,也能被netstat列出来。

使用-l选项列出正在监听的套接字。

$netstat-tnl

ActiveInternetconnections(onlyservers)

ProtoRecv-QSend-QLocalAddressForeignAddressState

tcp00127.0.1.1:

530.0.0.0:

*LISTEN

tcp00127.0.0.1:

6310.0.0.0:

*LISTEN

tcp600:

:

1:

631:

:

:

*LISTEN

现在我们可以看到处于监听状态的TCP端口和连接。

如果你查看所有监听端口,去掉-t选项。

如果你只想查看UDP端口,使用-u选项,代替-t选项。

注意:

不要使用-a选项,否则netstat会列出所有连接,而不仅仅是监听端口。

5.获取进程名、进程号以及用户ID

查看端口和连接的信息时,能查看到它们对应的进程名和进程号对系统管理员来说是非常有帮助的。

举个栗子,Apache的httpd服务开启80端口,如果你要查看http服务是否已经启动,或者http服务是由apache还是nginx启动的,这时候你可以看看进程名。

使用-p选项查看进程信息。

~$sudonetstat-nlpt

ActiveInternetconnections(onlyservers)

ProtoRecv-QSend-QLocalAddressForeignAddressStatePID/Programname

tcp00127.0.1.1:

530.0.0.0:

*LISTEN1144/dnsmasq

tcp00127.0.0.1:

6310.0.0.0:

*LISTEN661/cupsd

tcp600:

:

1:

631:

:

:

*LISTEN661/cupsd

使用-p选项时,netstat必须运行在root权限之下,不然它就不能得到运行在root权限下的进程名,而很多服务包括http和ftp都运行在root权限之下。

相比进程名和进程号而言,查看进程的拥有者会更有用。

使用-ep选项可以同时查看进程名和用户名。

$sudonetstat-ltpe

ActiveInternetconnections(onlyservers)

ProtoRecv-QSend-QLocalAddressForeignAddressStateUserInodePID/Programname

tcp00enlightened:

domain*:

*LISTENroot110901144/dnsmasq

tcp00localhost:

ipp*:

*LISTENroot9755661/cupsd

tcp600ip6-localhost:

ipp[:

:

]:

*LISTENroot9754661/cupsd

上面列出TCP协议下的监听套接字,同时显示进程信息和一些额外信息。

这些额外的信息包括用户名和进程的索引节点号。

这个命令对网管来说很有用。

注意-假如你将-n和-e选项一起使用,User列的属性就是用户的ID号,而不是用户名。

6.打印统计数据

netstat可以打印出网络统计数据,包括某个协议下的收发包数量。

下面列出所有网络包的统计情况:

$netstat-s

Ip:

32797totalpacketsreceived

0forwarded

0incomingpacketsdiscarded

32795incomingpacketsdelivered

29115requestssentout

60outgoingpacketsdropped

Icmp:

125ICMPmessagesreceived

0inputICMPmessagefailed.

ICMPinputhistogram:

destinationunreachable:

125

125ICMPmessagessent

0ICMPmessagesfailed

ICMPoutputhistogram:

destinationunreachable:

125

...OUTPUTTRUNCATED...

如果想只打印出TCP或UDP协议的统计数据,只要加上对应的选项(-t和-u)即可,soeasy。

7.显示内核路由信息

使用-r选项打印内核路由信息。

打印出来的信息与route命令输出的信息一样。

我们也可以使用-n选项禁止域名解析。

$netstat-rn

KernelIProutingtable

DestinationGatewayGenmaskFlagsMSSWindowirttIface

0.0.0.0192.168.1.10.0.0.0UG000eth0

192.168.1.00.0.0.0255.255.255.0U000eth0

8.打印网络接口

netstat也能打印网络接口信息,-i选项就是为这个功能而生。

$netstat-i

KernelInterfacetable

IfaceMTUMetRX-OKRX-ERRRX-DRPRX-OVRTX-OKTX-ERRTX-DRPTX-OVRFlg

eth0150003161100027503000BMRU

lo65536029130002913000LRU

上面输出的信息比较原始。

我们将-e选项和-i选项搭配使用,可以输出用户友好的信息。

$netstat-ie

KernelInterfacetable

eth0Linkencap:

EthernetHWaddr00:

16:

36:

f8:

b2:

64

inetaddr:

192.168.1.2Bcast:

192.168.1.255Mask:

255.255.255.0

inet6addr:

fe80:

:

216:

36ff:

fef8:

b264/64Scope:

Link

UPBROADCASTRUNNINGMULTICASTMTU:

1500Metric:

1

RXpackets:

31682errors:

0dropped:

0overruns:

0frame:

0

TXpackets:

27573errors:

0dropped:

0overruns:

0carrier:

0

collisions:

0txqueuelen:

1000

RXbytes:

29637117(29.6MB)TXbytes:

4590583(4.5MB)

Interrupt:

18Memory:

da000000-da020000

loLinkencap:

LocalLoopback

inetaddr:

127.0.0.1Mask:

255.0.0.0

inet6addr:

:

:

1/128Scope:

Host

UPLOOPBACKRUNNINGMTU:

65536Metric:

1

RXpackets:

2921errors:

0dropped:

0overruns:

0frame:

0

TXpackets:

2921errors:

0dropped:

0overruns:

0carrier:

0

collisions:

0txqueuelen:

0

RXbytes:

305297(305.2KB)TXbytes:

305297(305.2KB)

上面的输出信息与ifconfig输出的信息一样。

9.netstat持续输出

我们可以使用netstat的-c选项持续输出信息。

$netstat-ct

这个命令可持续输出TCP协议信息。

10.显示多播组信息

选项-g会输出IPv4和IPv6的多播组信息。

$netstat-g

IPv6/IPv4GroupMemberships

InterfaceRefCntGroup

------------------------------------------

lo1all-

eth01224.0.0.251

eth01all-

lo1ip6-allnodes

lo1ff01:

:

1

eth01ff02:

:

fb

eth01ff02:

:

1:

fff8:

b264

eth01ip6-allnodes

eth01ff01:

:

1

wlan01ip6-allnodes

wlan01ff01:

:

1

更多用法

目前为止我们列出了netstat的基本用法,现在让我们一起来geek吧~

打印active状态的连接

active状态的套接字连接用"ESTABLISHED"字段表示,所以我们可以使用grep命令获得active状态的连接:

$netstat-atnp|grepESTA

(Notallprocessescouldbeidentified,non-ownedprocessinfo

willnotbeshown,youwouldhavetoberoottoseeitall.)

tcp00192.168.1.2:

49156173.255.230.5:

80ESTABLISHED1691/chrome

tcp00192.168.1.2:

33324173.194.36.117:

443ESTABLISHED1691/chrome

配合watch命令监视active状态的连接:

$watch-d-n0"netstat-atnp|grepESTA"

查看服务是否在运行

如果你想看看http,smtp或ntp服务是否在运行,使用grep。

$sudonetstat-aple|grepntp

udp00enlightened.local:

ntp*:

*root174301789/ntpd

udp00localhost:

ntp*:

*root174291789/ntpd

udp00*:

ntp*:

*root174221789/ntpd

udp600fe80:

:

216:

36ff:

fef8:

ntp[:

:

]:

*root174321789/ntpd

udp600ip6-localhost:

ntp[:

:

]:

*root174311789/ntpd

udp600[:

:

]:

ntp[:

:

]:

*root174231789/ntpd

unix2[]DGRAM174181789/ntpd

从这里可以看到ntp服务正在运行。

使用grep命令你可以查看http或smtp或其它任何你想查看的服务。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 成考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1