netstat用法.docx
- 文档编号:30170893
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:10
- 大小:100.20KB
netstat用法.docx
《netstat用法.docx》由会员分享,可在线阅读,更多相关《netstat用法.docx(10页珍藏版)》请在冰豆网上搜索。
netstat用法
netstat的10个基本用法
Netstat简介
Netstat是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括tcp,udp以及unix套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字。
如果你想确认系统上的Web服务有没有起来,你可以查看80端口有没有打开。
以上功能使netstat成为网管和系统管理员的必备利器。
在这篇教程中,我会列出几个例子,教大家如何使用netstat去查找网络连接信息和系统开启的端口号。
以下的简单介绍来自netstat的man手册:
netstat-打印网络连接、路由表、连接的数据统计、伪装连接以及广播域成员。
1.列出所有连接
第一个要介绍的,是最简单的命令:
列出所有当前的连接。
使用-a选项即可。
1.$netstat-a
2.
3.ActiveInternetconnections(serversandestablished)
4.ProtoRecv-QSend-QLocalAddressForeignAddressState
5.tcp00enlightened:
domain*:
*LISTEN
6.tcp00localhost:
ipp*:
*LISTEN
7.tcp00enlightened.local:
54750li240-5.members.li:
httpESTABLISHED
8.tcp00enlightened.local:
49980del01s07-in-f14.1:
httpsESTABLISHED
9.tcp600ip6-localhost:
ipp[:
:
]:
*LISTEN
10.udp00enlightened:
domain*:
*
11.udp00*:
bootpc*:
*
12.udp00enlightened.local:
ntp*:
*
13.udp00localhost:
ntp*:
*
14.udp00*:
ntp*:
*
15.udp00*:
58570*:
*
16.udp00*:
mdns*:
*
17.udp00*:
49459*:
*
18.udp600fe80:
:
216:
36ff:
fef8:
ntp[:
:
]:
*
19.udp600ip6-localhost:
ntp[:
:
]:
*
20.udp600[:
:
]:
ntp[:
:
]:
*
21.udp600[:
:
]:
mdns[:
:
]:
*
22.udp600[:
:
]:
63811[:
:
]:
*
23.udp600[:
:
]:
54952[:
:
]:
*
24.ActiveUNIXdomainsockets(serversandestablished)
25.ProtoRefCntFlagsTypeStateI-NodePath
26.unix2[ACC]STREAMLISTENING12403@/tmp/dbus-IDgfj3UGXX
27.unix2[ACC]STREAMLISTENING40202@/dbus-vfs-daemon/socket-6nUC6CCx
上述命令列出tcp,udp和unix协议下所有套接字的所有连接。
然而这些信息还不够详细,管理员往往需要查看某个协议或端口的具体连接情况。
2.只列出TCP或UDP协议的连接
使用 -t 选项列出TCP协议的连接:
1.$netstat-at
2.ActiveInternetconnections(serversandestablished)
3.ProtoRecv-QSend-QLocalAddressForeignAddressState
4.tcp00enlightened:
domain*:
*LISTEN
5.tcp00localhost:
ipp*:
*LISTEN
6.tcp00enlightened.local:
36310del01s07-in-f24.1:
httpsESTABLISHED
7.tcp00enlightened.local:
45038a96-17-181-10.depl:
httpESTABLISHED
8.tcp00enlightened.local:
37892ABTS-North-Static-:
httpESTABLISHED
9......
使用 -u 选项列出UDP协议的连接:
1.$netstat-au
2.ActiveInternetconnections(serversandestablished)
3.ProtoRecv-QSend-QLocalAddressForeignAddressState
4.udp00*:
34660*:
*
5.udp00enlightened:
domain*:
*
6.udp00*:
bootpc*:
*
7.udp00enlightened.local:
ntp*:
*
8.udp00localhost:
ntp*:
*
9.udp00*:
ntp*:
*
10.udp600fe80:
:
216:
36ff:
fef8:
ntp[:
:
]:
*
11.udp600ip6-localhost:
ntp[:
:
]:
*
12.udp600[:
:
]:
ntp[:
:
]:
*
上面同时显示了IPv4和IPv6的连接。
3.禁用反向域名解析,加快查询速度
默认情况下netstat会通过反向域名解析技术查找每个IP地址对应的主机名。
这会降低查找速度。
如果你觉得IP地址已经足够,而没有必要知道主机名,就使用 -n 选项禁用域名解析功能。
1.$netstat-ant
2.ActiveInternetconnections(serversandestablished)
3.ProtoRecv-QSend-QLocalAddressForeignAddressState
4.tcp00127.0.1.1:
530.0.0.0:
*LISTEN
5.tcp00127.0.0.1:
6310.0.0.0:
*LISTEN
6.tcp00192.168.1.2:
49058173.255.230.5:
80ESTABLISHED
7.tcp00192.168.1.2:
33324173.194.36.117:
443ESTABLISHED
8.tcp600:
:
1:
631:
:
:
*LISTEN
上述命令列出所有TCP协议的连接,没有使用域名解析技术。
Soeasy?
非常好。
4.只列出监听中的连接
任何网络服务的后台进程都会打开一个端口,用于监听接入的请求。
这些正在监听的套接字也和连接的套接字一样,也能被netstat列出来。
使用 -l 选项列出正在监听的套接字。
1.$netstat-tnl
2.ActiveInternetconnections(onlyservers)
3.ProtoRecv-QSend-QLocalAddressForeignAddressState
4.tcp00127.0.1.1:
530.0.0.0:
*LISTEN
5.tcp00127.0.0.1:
6310.0.0.0:
*LISTEN
6.tcp600:
:
1:
631:
:
:
*LISTEN
现在我们可以看到处于监听状态的TCP端口和连接。
如果你查看所有监听端口,去掉 -t 选项。
如果你只想查看UDP端口,使用 -u 选项,代替 -t 选项。
注意:
不要使用 -a 选项,否则netstat会列出所有连接,而不仅仅是监听端口。
5.获取进程名、进程号以及用户ID
查看端口和连接的信息时,能查看到它们对应的进程名和进程号对系统管理员来说是非常有帮助的。
举个栗子,Apache的httpd服务开启80端口,如果你要查看http服务是否已经启动,或者http服务是由apache还是nginx启动的,这时候你可以看看进程名。
使用 -p 选项查看进程信息。
1.~$sudonetstat-nlpt
2.ActiveInternetconnections(onlyservers)
3.ProtoRecv-QSend-QLocalAddressForeignAddressStatePID/Programname
4.tcp00127.0.1.1:
530.0.0.0:
*LISTEN1144/dnsmasq
5.tcp00127.0.0.1:
6310.0.0.0:
*LISTEN661/cupsd
6.tcp600:
:
1:
631:
:
:
*LISTEN661/cupsd
使用 -p 选项时,netstat必须运行在root权限之下,不然它就不能得到运行在root权限下的进程名,而很多服务包括http和ftp都运行在root权限之下。
相比进程名和进程号而言,查看进程的拥有者会更有用。
使用 -ep 选项可以同时查看进程名和用户名。
1.$sudonetstat-ltpe
2.ActiveInternetconnections(onlyservers)
3.ProtoRecv-QSend-QLocalAddressForeignAddressStateUserInodePID/Programname
4.tcp00enlightened:
domain*:
*LISTENroot110901144/dnsmasq
5.tcp00localhost:
ipp*:
*LISTENroot9755661/cupsd
6.tcp600ip6-localhost:
ipp[:
:
]:
*LISTENroot9754661/cupsd
上面列出TCP协议下的监听套接字,同时显示进程信息和一些额外信息。
这些额外的信息包括用户名和进程的索引节点号。
这个命令对网管来说很有用。
注意 -假如你将 -n 和 -e 选项一起使用,User列的属性就是用户的ID号,而不是用户名。
6.打印统计数据
netstat可以打印出网络统计数据,包括某个协议下的收发包数量。
下面列出所有网络包的统计情况:
1.$netstat-s
2.Ip:
3.32797totalpacketsreceived
4.0forwarded
5.0incomingpacketsdiscarded
6.32795incomingpacketsdelivered
7.29115requestssentout
8.60outgoingpacketsdropped
9.Icmp:
10.125ICMPmessagesreceived
11.0inputICMPmessagefailed.
12.ICMPinputhistogram:
13.destinationunreachable:
125
14.125ICMPmessagessent
15.0ICMPmessagesfailed
16.ICMPoutputhistogram:
17.destinationunreachable:
125
18....OUTPUTTRUNCATED...
如果想只打印出TCP或UDP协议的统计数据,只要加上对应的选项(-t 和 -u)即可,soeasy。
7.显示内核路由信息
使用 -r 选项打印内核路由信息。
打印出来的信息与route命令输出的信息一样。
我们也可以使用 -n 选项禁止域名解析。
1.$netstat-rn
2.KernelIProutingtable
3.DestinationGatewayGenmaskFlagsMSSWindowirttIface
4.0.0.0.0192.168.1.10.0.0.0UG000eth0
5.192.168.1.00.0.0.0255.255.255.0U000eth0
8.打印网络接口
netstat也能打印网络接口信息,-i 选项就是为这个功能而生。
1.$netstat-i
2.KernelInterfacetable
3.IfaceMTUMetRX-OKRX-ERRRX-DRPRX-OVRTX-OKTX-ERRTX-DRPTX-OVRFlg
4.eth0150********0027503000BMRU
5.lo65536029130002913000LRU
上面输出的信息比较原始。
我们将 -e 选项和 -i 选项搭配使用,可以输出用户友好的信息。
1.$netstat-ie
2.KernelInterfacetable
3.eth0Linkencap:
EthernetHWaddr00:
16:
36:
f8:
b2:
64
4.inetaddr:
192.168.1.2Bcast:
192.168.1.255Mask:
255.255.255.0
5.inet6addr:
fe80:
:
216:
36ff:
fef8:
b264/64Scope:
Link
6.UPBROADCASTRUNNINGMULTICASTMTU:
1500Metric:
1
7.RXpackets:
31682errors:
0dropped:
0overruns:
0frame:
0
8.TXpackets:
27573errors:
0dropped:
0overruns:
0carrier:
0
9.collisions:
0txqueuelen:
1000
10.RXbytes:
29637117(29.6MB)TXbytes:
4590583(4.5MB)
11.Interrupt:
18Memory:
da000000-da020000
12.
13.loLinkencap:
LocalLoopback
14.inetaddr:
127.0.0.1Mask:
255.0.0.0
15.inet6addr:
:
:
1/128Scope:
Host
16.UPLOOPBACKRUNNINGMTU:
65536Metric:
1
17.RXpackets:
2921errors:
0dropped:
0overruns:
0frame:
0
18.TXpackets:
2921errors:
0dropped:
0overruns:
0carrier:
0
19.collisions:
0txqueuelen:
0
20.RXbytes:
305297(305.2KB)TXbytes:
305297(305.2KB)
上面的输出信息与ifconfig输出的信息一样。
9.netstat持续输出
我们可以使用netstat的 -c 选项持续输出信息。
1.$netstat-ct
这个命令可持续输出TCP协议信息。
10.显示多播组信息
选项 -g 会输出IPv4和IPv6的多播组信息。
1.$netstat-g
2.IPv6/IPv4GroupMemberships
3.InterfaceRefCntGroup
4.------------------------------------------
5.lo1all-
6.eth01224.0.0.251
7.eth01all-
8.lo1ip6-allnodes
9.lo1ff01:
:
1
10.eth01ff02:
:
fb
11.eth01ff02:
:
1:
fff8:
b264
12.eth01ip6-allnodes
13.eth01ff01:
:
1
14.wlan01ip6-allnodes
15.wlan01ff01:
:
1
更多用法
目前为止我们列出了netstat的基本用法,现在让我们一起来geek吧~
打印active状态的连接
active状态的套接字连接用"ESTABLISHED"字段表示,所以我们可以使用grep命令获得active状态的连接:
1.$netstat-atnp|grepESTA
2.(Notallprocessescouldbeidentified,non-ownedprocessinfo
3.willnotbeshown,youwouldhavetoberoottoseeitall.)
4.tcp00192.168.1.2:
49156173.255.230.5:
80ESTABLISHED1691/chrome
5.tcp00192.168.1.2:
33324173.194.36.117:
443ESTABLISHED1691/chrome
配合watch命令监视active状态的连接:
1.$watch-d-n0"netstat-atnp|grepESTA"
查看服务是否在运行
如果你想看看http,smtp或ntp服务是否在运行,使用grep。
1.$sudonetstat-aple|grepntp
2.udp00enlightened.local:
ntp*:
*root174301789/ntpd
3.udp00localhost:
ntp*:
*root174291789/ntpd
4.udp00*:
ntp*:
*root174221789/ntpd
5.udp600fe80:
:
216:
36ff:
fef8:
ntp[:
:
]:
*root174321789/ntpd
6.udp600ip6-localhost:
ntp[:
:
]:
*root174311789/ntpd
7.udp600[:
:
]:
ntp[:
:
]:
*root174231789/ntpd
8.unix2[]DGRAM174181789/ntpd
从这里可以看到ntp服务正在运行。
使用grep命令你可以查看http或smtp或其它任何你想查看的服务。
好了,netstat的大部分功能都介绍过了,如果你想知道netstat更高级的功能,阅读它的手册吧(mannetstat)。
欢迎在下面留下你的反馈和建议。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- netstat 用法