千家信息网

Netstat命令如何使用

发表于:2024-10-06 作者:千家信息网编辑
千家信息网最后更新 2024年10月06日,这篇文章主要讲解了"Netstat命令如何使用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Netstat命令如何使用"吧!Netstat是控制台命令
千家信息网最后更新 2024年10月06日Netstat命令如何使用

这篇文章主要讲解了"Netstat命令如何使用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Netstat命令如何使用"吧!

Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

1. 列出所有连接

第一个要介绍的,是最简单的命令:列出所有当前的连接。使用 -a 选项即可。

$ netstat -aActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address           Foreign Address         State      tcp        0      0 enlightened:domain      *:*                     LISTEN    tcp        0      0 localhost:ipp           *:*                     LISTEN    tcp        0      0 enlightened.local:54750 li240-5.members.li:http ESTABLISHEDtcp        0      0 enlightened.local:49980 del01s07-in-f14.1:https ESTABLISHEDtcp6       0      0 ip6-localhost:ipp       [::]:*                  LISTEN    udp        0      0 enlightened:domain      *:*                                udp        0      0 *:bootpc                *:*                                udp        0      0 enlightened.local:ntp   *:*                                udp        0      0 localhost:ntp           *:*                                udp        0      0 *:ntp                   *:*                                udp        0      0 *:58570                 *:*                                udp        0      0 *:mdns                  *:*                                udp        0      0 *:49459                 *:*                                udp6       0      0 fe80::216:36ff:fef8:ntp [::]:*                            udp6       0      0 ip6-localhost:ntp       [::]:*                            udp6       0      0 [::]:ntp                [::]:*                            udp6       0      0 [::]:mdns               [::]:*                            udp6       0      0 [::]:63811              [::]:*                            udp6       0      0 [::]:54952              [::]:*                            Active UNIX domain sockets (servers and established)Proto RefCnt Flags       Type       State         I-Node   Pathunix  2      [ ACC ]     STREAM     LISTENING     12403    @/tmp/dbus-IDgfj3UGXXunix  2      [ ACC ]     STREAM     LISTENING     40202    @/dbus-vfs-daemon/socket-6nUC6CCx

上述命令列出 tcp, udp 和 unix 协议下所有套接字的所有连接。然而这些信息还不够详细,管理员往往需要查看某个协议或端口的具体连接情况。

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

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

$ netstat -atActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address           Foreign Address         State      tcp        0      0 enlightened:domain      *:*                     LISTEN    tcp        0      0 localhost:ipp           *:*                     LISTEN    tcp        0      0 enlightened.local:36310 del01s07-in-f24.1:https ESTABLISHEDtcp        0      0 enlightened.local:45038 a96-17-181-10.depl:http ESTABLISHEDtcp        0      0 enlightened.local:37892 ABTS-North-Static-:http ESTABLISHED.....

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

$ netstat -auActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address           Foreign Address         State      udp        0      0 *:34660                 *:*                                udp        0      0 enlightened:domain      *:*                                udp        0      0 *:bootpc                *:*                                udp        0      0 enlightened.local:ntp   *:*                                udp        0      0 localhost:ntp           *:*                                udp        0      0 *:ntp                   *:*                                udp6       0      0 fe80::216:36ff:fef8:ntp [::]:*                            udp6       0      0 ip6-localhost:ntp       [::]:*                            udp6       0      0 [::]:ntp                [::]:*

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

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

默认情况下 netstat 会通过反向域名解析技术查找每个 IP 地址对应的主机名。这会降低查找速度。如果你觉得 IP 地址已经足够,而没有必要知道主机名,就使用 -n 选项禁用域名解析功能。

$ netstat -antActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address           Foreign Address         State      tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN    tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN    tcp        0      0 192.168.1.2:49058       173.255.230.5:80        ESTABLISHEDtcp        0      0 192.168.1.2:33324       173.194.36.117:443      ESTABLISHEDtcp6       0      0 ::1:631                 :::*                    LISTEN

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

4. 只列出监听中的连接

任何网络服务的后台进程都会打开一个端口,用于监听接入的请求。这些正在监听的套接字也和连接的套接字一样,也能被 netstat 列出来。使用 -l 选项列出正在监听的套接字。

$ netstat -tnlActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address           Foreign Address         State      tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN    tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN    tcp6       0      0 ::1:631                 :::*                    LISTEN

现在我们可以看到处于监听状态的 TCP 端口和连接。如果你查看所有监听端口,去掉 -t 选项。如果你只想查看 UDP 端口,使用 -u 选项,代替 -t 选项。

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

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

查看端口和连接的信息时,能查看到它们对应的进程名和进程号对系统管理员来说是非常有帮助的。举个栗子,Apache 的 httpd 服务开启80端口,如果你要查看 http 服务是否已经启动,或者 http 服务是由 apache 还是 nginx 启动的,这时候你可以看看进程名。

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

~$ sudo netstat -nlptActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program nametcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      1144/dnsmasq    tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      661/cupsd      tcp6       0      0 ::1:631                 :::*                    LISTEN      661/cupsd

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

相比进程名和进程号而言,查看进程的拥有者会更有用。使用 -ep 选项可以同时查看进程名和用户名。

$ sudo netstat -ltpeActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program nametcp        0      0 enlightened:domain      *:*                     LISTEN      root       11090       1144/dnsmasq    tcp        0      0 localhost:ipp           *:*                     LISTEN      root       9755        661/cupsd      tcp6       0      0 ip6-localhost:ipp       [::]:*                  LISTEN      root       9754        661/cupsd

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

这些额外的信息包括用户名和进程的索引节点号。这个命令对网管来说很有用。

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

6. 打印统计数据

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

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

$ netstat -sIp:   32797 total packets received   0 forwarded   0 incoming packets discarded   32795 incoming packets delivered   29115 requests sent out   60 outgoing packets droppedIcmp:   125 ICMP messages received   0 input ICMP message failed.   ICMP input histogram:       destination unreachable: 125   125 ICMP messages sent   0 ICMP messages failed   ICMP output histogram:       destination unreachable: 125... OUTPUT TRUNCATED ...

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

7. 显示内核路由信息

使用 -r 选项打印内核路由信息。打印出来的信息与 route 命令输出的信息一样。我们也可以使用 -n 选项禁止域名解析。

$ netstat -rnKernel IP routing tableDestination     Gateway         Genmask         Flags   MSS Window  irtt Iface0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0

8. 打印网络接口

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

$ netstat -iKernel Interface tableIface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flgeth0       1500 0     31611      0      0 0         27503      0      0      0 BMRUlo        65536 0      2913      0      0 0          2913      0      0      0 LRU

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

$ netstat -ieKernel Interface tableeth0      Link encap:Ethernet  HWaddr 00:16:36:f8:b2:64           inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0         inet6 addr: fe80::216:36ff:fef8:b264/64 Scope:Link         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1         RX packets:31682 errors:0 dropped:0 overruns:0 frame:0         TX packets:27573 errors:0 dropped:0 overruns:0 carrier:0         collisions:0 txqueuelen:1000         RX bytes:29637117 (29.6 MB)  TX bytes:4590583 (4.5 MB)         Interrupt:18 Memory:da000000-da020000lo        Link encap:Local Loopback           inet addr:127.0.0.1  Mask:255.0.0.0         inet6 addr: ::1/128 Scope:Host         UP LOOPBACK RUNNING  MTU:65536  Metric:1         RX packets:2921 errors:0 dropped:0 overruns:0 frame:0         TX packets:2921 errors:0 dropped:0 overruns:0 carrier:0         collisions:0 txqueuelen:0         RX bytes:305297 (305.2 KB)  TX bytes:305297 (305.2 KB)

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

9. netstat 持续输出

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

$ netstat -ct

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

10. 显示多播组信息

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

$ netstat -gIPv6/IPv4 Group MembershipsInterface       RefCnt Group--------------- ------ ---------------------lo              1      all-systems.mcast.neteth0            1      224.0.0.251eth0            1      all-systems.mcast.netlo              1      ip6-allnodeslo              1      ff01::1eth0            1      ff02::fbeth0            1      ff02::1:fff8:b264eth0            1      ip6-allnodeseth0            1      ff01::1wlan0           1      ip6-allnodeswlan0           1      ff01::1

更多用法

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

打印 active 状态的连接

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

$ netstat -atnp | grep ESTA(Not all processes could be identified, non-owned process infowill not be shown, you would have to be root to see it all.)tcp        0      0 192.168.1.2:49156       173.255.230.5:80        ESTABLISHED 1691/chrome    tcp        0      0 192.168.1.2:33324       173.194.36.117:443      ESTABLISHED 1691/chrome

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

$ watch -d -n0 "netstat -atnp | grep ESTA"
查看服务是否在运行

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

$ sudo netstat -aple | grep ntpudp        0      0 enlightened.local:ntp   *:*                                 root       17430       1789/ntpd      udp        0      0 localhost:ntp           *:*                                 root       17429       1789/ntpd      udp        0      0 *:ntp                   *:*                                 root       17422       1789/ntpd      udp6       0      0 fe80::216:36ff:fef8:ntp [::]:*                              root       17432       1789/ntpd      udp6       0      0 ip6-localhost:ntp       [::]:*                              root       17431       1789/ntpd      udp6       0      0 [::]:ntp                [::]:*                              root       17423       1789/ntpd      unix  2      [ ]         DGRAM                    17418    1789/ntpd

从这里可以看到 ntp 服务正在运行。使用 grep 命令你可以查看 http 或 smtp 或其它任何你想查看的服务。

感谢各位的阅读,以上就是"Netstat命令如何使用"的内容了,经过本文的学习后,相信大家对Netstat命令如何使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

信息 命令 进程 端口 网络 服务 输出 监听 套接字 状态 用户 运行 域名 情况 统计 数据 统计数据 同时 就是 接口 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 云南广寒仙境网络技术有限公司 数据库按时间类型字段创建索引 北京服务器机房按需定制云服务器 网络安全隐患防范 廊坊霸州软件开发模型 注册软件开发公司需要条件 广州服务器运维服务怎么选择 《网络安全阀》 网络安全都有什么知识 工业网络技术是学什么 淮安云服务器价格 小学生国家网络安全画报模板 传感器温度湿度如何传到服务器 软件开发鲁icp 正定菏勾网络技术有限公司 开发票的服务器辐射大吗 网站怎么和公众号连接数据库 网络安全打法征文 德升软件开发 浪潮服务器怎么配置管理口 数据库连接查询语句join mysql查看数据库列表 传递闭包在关系数据库中的应用 绍兴网络安全教育 网络技术研发属于什么行业 百度大搜数据库 广州智障收容所为芒宝服务器发声 计算机网络安全教程抓包 东方财富如何提取数据库 成都程序员软件开发流程
0