netstat 命令详解

这篇具有很好参考价值的文章主要介绍了netstat 命令详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

netstat 命令是 Linux 系统中一个非常常用的网络工具,用于查询和统计网络连接的状态和数据传输情况。在网络故障排除和性能调优中,netstat 命令是必不可少的工具之一。本文将详细介绍 netstat 命令的常用参数及其用法。

命令格式

netstat [-a] [-c] [-e] [-f] [-i] [-n] [-o] [-p protocol] [-r] [-s] [-t] [-u] [interval]

常用选项

netstat 命令的常用选项如下:

  • -a(all):显示所有连接状态,包括 TCP、UDP 和 Unix 域套接字;
    • -t(tcp):显示 TCP 连接状态;
    • -u(udp):显示 UDP 连接状态;
    • -x:列出所有unix端口
  • -c(continuous):连续显示网络状态信息。按 Ctrl + C 结束。
  • -e(extend):显示网络统计信息。包括网络接口、协议等。
  • -f:显示外部地址的完全限定域名(FQDN)。
  • -i:显示网络接口信息。
  • -n:以数字形式显示地址和端口号。
  • -o:显示与每个连接相关的进程 ID。
  • -p protocol:显示特定协议(tcp、udp 或 icmp)的连接。
  • -r:显示路由表。
  • -s:显示网络统计信息。包括网络接口、协议等。
  • -t:显示 TCP 协议的连接。
  • -u:显示 UDP 协议的连接。
  • interval:指定连续显示网络状态信息的时间间隔(单位为秒)。

常用命令

查询进程所占用的端口号

 netstat -ano | grep 进程ID

查看端口号的使用情况

 netstat -ano | grep 端口号

显示所有连接和监听端口并显示每个连接相关的进程ID

netstat -ano

显示UDP、TCP协议的连接的统计信息并显示每个连接相关的进程 ID

netstat -so -p udp

netstat -so -p tcp
IPv4 的 TCP 统计信息

  主动开放                        = 8055
  被动开放                       = 1136
  失败的连接尝试          = 2469
  重置连接                   = 1712
  当前连接                 = 67
  接收的分段                   = 2473796
  发送的分段                       = 454254
  重新传输的分段              = 10493

活动连接

  协议  本地地址          外部地址        状态           PID
  TCP    127.0.0.1:6000         kubernetes:51683       ESTABLISHED     16460
  TCP    127.0.0.1:6000         kubernetes:51684       ESTABLISHED     16460

显示所有已建立的连接

netstat -ano | grep ESTABLISHED
TCP    127.0.0.1:6000         127.0.0.1:51684        ESTABLISHED     16460
TCP    127.0.0.1:6000         127.0.0.1:51685        ESTABLISHED     16460

显示每个进程的连接数

netstat -ano | grep ESTABLISHED | awk '{print $5}' | sort | uniq -c | sort -nr | head -10

netstat -ano: 显示所有连接和监听端口,以数字形式显示地址和端口号,并显示与每个连接相关的进程 ID

  TCP    0.0.0.0:47001          0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:49664          0.0.0.0:0              LISTENING       1044
  TCP    127.0.0.1:4244         0.0.0.0:0              LISTENING       15104
  TCP    127.0.0.1:6000         127.0.0.1:51683        ESTABLISHED     16460
  TCP    127.0.0.1:6000         127.0.0.1:51685        ESTABLISHED     16460
  ...
  UDP    192.168.2.226:1900     *:*                                    10428
  UDP    192.168.2.226:61395    *:*                                    10428
  UDP    [::]:3702              *:*                                    15956
  UDP    [::]:57584             *:*                                    15956
  UDP    [::1]:1900             *:*                                    10428
  UDP    [::1]:61392            *:*                                    10428
  UDP    [fe80::b131:35eb:14b3:8958%50]:1900  *:*                                    10428

grep ESTABLISHED :过滤出已建立的连接。

  TCP    127.0.0.1:6000         127.0.0.1:51683        ESTABLISHED     16460
  TCP    127.0.0.1:6000         127.0.0.1:51685        ESTABLISHED     16460
  TCP    127.0.0.1:49671        127.0.0.1:62522        ESTABLISHED     8244
  TCP    127.0.0.1:49672        127.0.0.1:49673        ESTABLISHED     6952
  TCP    127.0.0.1:49673        127.0.0.1:49672        ESTABLISHED     6952
  TCP    127.0.0.1:51058        127.0.0.1:51059        ESTABLISHED     4612
  TCP    127.0.0.1:51059        127.0.0.1:51058        ESTABLISHED     4612
  TCP    127.0.0.1:51061        127.0.0.1:51062        ESTABLISHED     4612

awk '{print $5}' :提取出第5列进程ID。

16460
16460
8244
6952
6952
4612
4612
4612

sort | uniq -c | sort -nr :排序统计每个进程ID的连接数量,并按照连接数量从高到低排序;

  • sort:排序。
  • uniq -c:用于在文本中查找并计数唯一行,有点像count - group by
  • sort -nr:用于对文本进行排序。
    • -n 选项表示按照数值大小排序,而不是按照字典序排序;
    • -r 选项表示按照逆序排序,即从大到小排序。
netstat -ano | grep ESTABLISHED | awk '{print $5}' | sort
16460
16460
4612
4612
4612
6952
6952
8244

netstat -ano | grep ESTABLISHED | awk '{print $5}' | sort | uniq -c
2 16460
3 4612
2 6952
1 8244

netstat -ano | grep ESTABLISHED | awk '{print $5}' | sort | uniq -c | sort -nr
3 4612
2 16460
2 6952
1 8244

head : 显示前面的若干行。

netstat -ano | grep ESTABLISHED | awk '{print $5}' | sort | uniq -c | sort -nr | head -2
3 4612
2 16460

显示每个IP地址的连接数

netstat -ano | awk '{print $3}' | cut -d: -f1 | sort | uniq -c | sort -rn

cut -d: -f1 :用于从文本中剪切文本并打印出指定字段。目的是从连接信息中提取远程 IP 地址,剔除掉冒号和端口号。

  • -d: 表示使用冒号作为分隔符
  • -f1 表示提取分隔符左边的第一个字段
netstat -ano | grep ESTABLISHED | awk '{print $3}'
127.0.0.1:51240
10.2.3.411:443
110.236.32.1:443

netstat -ano | awk '{print $3}' | cut -d: -f1
127.0.0.1
10.2.3.411
110.236.32.1

其他命令跟上面一样单步调试即可。

显示每种类型TCP/UDP的连接数

netstat -ano | awk '{print $1}' | sort | uniq -c
120 TCP
82 UDP

显示每种网络状态的数量

// TCP 网络状态的数量
netstat -ano |grep TCP | awk '{print $4}' | sort | uniq -c
62 ESTABLISHED
51 LISTENING
 2 TIME_WAIT

显示指定进程ID网络状态的数量

// TCP 网络状态的数量
netstat -ano |grep 进程ID | awk '{print $4}' | sort | uniq -c
62 ESTABLISHED
51 LISTENING
 2 TIME_WAIT

显示端口占用数量

netstat -ano | grep -c :
或者
netstat -a -n | grep -c "TCP"
netstat -a -n | grep -c "UDP"
netstat -a -n | grep -w "TCP" | wc -l
netstat -ano | awk 'NR>2{print $1}' | sort | uniq -c | awk '{print $2 "占用了"$1"个端口"}'
上面的都有重复
netstat -ano | awk '{print $3}' | cut -d: -f1 | sort | uniq -c | sort -rn

grep -c : : grep 命令用于在文件或输出中查找与指定模式匹配的行,并将匹配的行打印出来。

  • 其中 -c 选项用于统计匹配到的行数
  • : : 表示匹配冒号字符。
    因此,grep -c : 命令会统计输出或文件中包含冒号字符的行数。

显示指定进程ID指定协议的数量

netstat -ano | grep 进程ID | grep UDP | grep -v -E ':5353|::' 
  • -v:排除相关的行。grep -v UDP排除UDP相关的行。

  • -E 'keyword1|keyword2|keyword3' : 匹配多个关键词,keyword1keyword2keyword3是关键词,用|分隔。

  • wc -l : 用于统计文件的行数

    netstat -ano | grep 6712 | grep UDP | grep -v -E ':5353|::' | wc -l文章来源地址https://www.toymoban.com/news/detail-416903.html

网络状态

State 状态
LISTENING 监听中,服务端需要打开一个socket进行监听,侦听来自远方TCP端口的连接请求
ESTABLISHED 已连接,代表一个打开的连接,双方可以进行或已经在数据交互了
SYN_SENT 客户端通过应用程序调用connect发送一个SYN以请求建立一个连接。在收到ACK后,状态转为ESTABLIHSED。
CLOSE_WAIT 被动关闭端接到FIN后,就发出ACK以回应FIN请求(它的接收也作为文件结束符传递给上层应用程序)
TIME_WAIT 主动关闭端接收到FIN后,TCP就发送ACK包,并进入TIME-WAIT状态
LAST_ACK 等待对方回应一个ACK(这是准备关闭连接的一个步骤,意味着这个连接正在关闭)

到了这里,关于netstat 命令详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【网络常用命令汇总】ping和ipconfig命令、nslookup命令、netstat和tracert命令、route和arp命令详解(附图详解)

    【写在前面】由于考试将近我也是临时抱个佛脚,之前对网络这块的概念真的只是停留在大学里面学的计算机网络,但是当时并没有接触这些实在的东西,也就只有工作后才会去想那么多,比如网络连通性ping一下就知道,其他的更不知道,nslookup命令、ipconfig命令、netstat命令

    2024年01月17日
    浏览(45)
  • linux下netstat指令详解

    简介:在Linux系统中,网络连接和状态是我们日常工作中经常需要了解和监控的内容。而netstat指令作为一个强大的网络工具,能够提供关于网络连接、路由表和网络接口等信息,帮助我们更好地管理和诊断网络问题。本篇博客将以通俗易懂的方式,详细解析netstat指令的常用参

    2024年02月11日
    浏览(40)
  • 【linux】探索Linux命令行中强大的网络工具:netstat

    在Linux命令行中,有许多实用的工具可帮助我们管理和监控网络连接。其中一个最重要的工具就是netstat,它提供了丰富的网络连接和统计信息,帮助我们诊断网络问题并了解系统的网络状态。 在日常的网络管理和故障排除过程中,了解系统的网络连接情况是至关重要的。而在

    2024年02月09日
    浏览(53)
  • Linux——kali系统简介及命令

    kali是Linux的一种,内部包含众多的网络安全相关的软件。 用户分为两类: 1.管理员用户也是root,管理员用户具有全部权限,可以进行任意的操作。 2.普通用户,新建的用户都是普通用户,权限非常低。 Linux是一个单根系统,根的表示方式是 /  Linux里的文件是严格区分大小写

    2024年02月05日
    浏览(52)
  • Linux学习之nginx虚拟域名主机,lsof和netstat命令查看端口是否被监听

    需要先参考我的博客《Linux学习之Ubuntu 20.04在https://openresty.org下载源码安装Openresty 1.19.3.1,使用systemd管理OpenResty服务》安装好 Openresty 。 虚拟域名可以使用让不同的域名访问到同一台主机。 cd /usr/local/openresty 切换当前访问目录到 /usr/local/openresty 。 在 /usr/local/openresty/nginx/co

    2024年02月11日
    浏览(48)
  • 【Linux】firewall-cmd之防火墙简介及命令详解【附加实战⭐建议收藏!!⭐】

    【Linux】firewall-cmd之防火墙简介及命令详解+实例   在CentOS 7中,新引入了firewalld防火墙,取代了CentOS 6之前的iptables防火墙。   iptables用于过滤数据包,属于网络层防火墙。iptables主要是基于接口,来设置规则,从而判断网络的安全性。   firewalld能够允许哪些服务可用,

    2024年02月02日
    浏览(47)
  • linux系统安全配置命令详解

    Liunx 密码相关配置文件 vim /etc/login.defs(密码长度/天数) vim /etc/motd(添加For authorized users only)(登录系统) vim /etc/profile(添加export TMOUT=300)(连接时间) vim /etc/pam.d/system-auth(复杂性) 防火墙相关常用 iptables iptables -t 表名 -A/I/D/R 规则链名 [规则号] -i/o 网卡名 -p 协议名 -s 源IP/源子网 --s

    2024年04月25日
    浏览(31)
  • Linux 系统 less命令详解

    Linux中的less命令是一个非常常用的文本查看工具,它可以用于查看任意大小的文本文件,支持滚动翻页、搜索、标记等功能。在本文中,我们将详细介绍less命令的用法、参数和实例,并对其背后的原理和相关技术进行简要讲解。 less命令可以用于查看文本文件,其基本语法如

    2024年02月14日
    浏览(35)
  • linux系统scp命令详解

    Linux系统scp命令用于Linux系统之间复制文件和目录的操作。 从本地复制ct.sql文件到远程192.168.26.11服务器(需要输入远程机器密码) 从本地复制sqlfile目录到远程192.168.26.11服务器(需要输入远程机器密码 从远程192.168.26.11服务器复制init-info.txt文件到本地需要输入远程机器密码)

    2024年02月06日
    浏览(38)
  • Linux 系统 history(查看执行命令历史) 命令详解

    history 命令是Linux/Unix系统中的一个常用命令,用于查看当前用户在命令行中执行过的命令历史记录。该命令允许用户查看、搜索、编辑和执行之前执行过的命令,为用户提供了方便、快捷的操作方式。本文将全面详细地讲解 history 命令的各种用法和注意事项,并提供一些实用

    2024年02月16日
    浏览(89)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包