?博客主页?:?https://blog.csdn.net/wkd_007?
?博客内容?:?嵌入式开发、Linux、C语言、C++、数据结构、音视频?
?本文内容?:?介绍 ?
?金句分享?:?你不能选择最好的,但最好的会来选择你——泰戈尔?
本文未经允许,不得转发!!!
?一、netstat介绍
✨1.1 netstat 概述
netstat
是一个命令行工具,可以用于查看系统的网络连接、路由表、接口统计信息、伪装连接和多播成员身份。
在网络编程中,可能需要使用netstat查看一些网络连接状态或路由表等信息,本文将详细介绍Linux系统中netstat工具的使用。
由于不同版本的netstat具备的功能可能存在差异,可以在命令行执行netstat -h
,查看自己的netstat工具支持哪些功能:
也可以执行netstat -V
,查看自己netstat的版本信息:
✨1.2 netstat 选项说明
选项 | 说明 |
---|---|
-r, --route | 显示路由表 |
-i, --interfaces | 显示网络接口表 |
-g, --groups | 显示多播组成员身份 |
-s, --statistics | 显示网络统计信息(如SNMP) |
-M, --masquerade | 显示伪装的连接,Linux不支持 |
-v, --verbose | 详细地告诉用户发生了什么。特别是打印一些有关未配置地址族的有用信息 |
-W, --wide | 不要根据需要使用输出来截断IP地址。这是可选的,目前不破坏现有脚本。 |
-n, --numeric | 显示数字地址,而不是解析为名称 |
–numeric-hosts | 显示数字主机地址,不解析主机名。 |
–numeric-ports | 不解析端口名 |
–numeric-users | 不解析用户名 |
-N, --symbolic | 解析硬件名称 |
-e, --extend | 显示其他/更多信息 |
-p, --programs | 显示套接字的PID/程序名称 |
-o, --timers | 显示计时器 |
-c, --continuous | 这将导致netstat连续每秒打印一次所选信息。 |
-l, --listening | 仅显示处于监听状态的套接字。(默认情况下会省略这些。) |
-a, --all | 显示所有套接字(默认只显示已连接的) |
-F, --fib | 显示转发信息库(默认) |
-C, --cache | 显示路由缓存而不是FIB |
-Z, --context | 显示套接字的SELinux安全上下文 |
-t, --tcp | 仅显示TCP相关 |
-u, --ud | 仅显示UDP相关 |
-w, --raw | 仅显示RAW套接字相关 |
-x, --unix | 仅显示Unix域套接字相关 |
-4 | 仅显示IPv4相关 |
-6 | 仅显示IPv6相关 |
上面表格介绍了netstat的大部分选项,其中红色字体的是比较常用的,要重点掌握。
?二、查看网络连接
通常,netstat使用-a、-t、-u、-l、-4、-6
来查看一些常见的网络连接,关于各个选项的解释可以看上面表格,下面对输出的每一列进行说明:
Proto
:套接字使用的协议(tcp、udp、udpl、raw等)。Recv-Q
:Established状态下,表示连接到此套接字的用户程序未复制的字节数。
Listening状态下,从内核2.6.18开始,此列包含当前syn囤积。Send-Q
:Established状态下,表示远程主机未确认的字节数。
Listening状态下,从内核2.6.18开始,此列包含syn囤积的最大大小。Local Address
:套接字本地端的地址和端口号。除非指定了–numeric(-n)选项,否则套接字地址将解析为其规范主机名(FQDN),端口号将转换为相应的服务名称。Foreign Address
:套接字远程端的地址和端口号。State
:套接字的状态。由于原始模式中没有状态,UDP和UDPLite中通常也没有使用状态,因此此列可能为空。PID/Program name
:用斜线分隔的进程id(PID)和拥有套接字的进程的进程名称对。Path
:表示连接到套接口的其它进程使用的路径名。
✨2.1 查看全部网络连接
运行netstat -a
可以查看全连接,下面是运行后的结果截选。
wkd_007$ netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:36155 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:microsoft-ds 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:nfs 0.0.0.0:* LISTEN
tcp 0 0 localhost:10501 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:60329 0.0.0.0:* LISTEN
....
tcp 0 0 virtual-machin:ssh 192.168.2.170:5254 ESTABLISHED
tcp 0 0 localhost:60490 localhost:9100 TIME_WAIT
...
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 ip6-localhost:ipp [::]:* LISTEN
udp 0 0 0.0.0.0:44546 0.0.0.0:*
udp 0 0 0.0.0.0:57189 0.0.0.0:*
udp6 0 0 [::]:35298 [::]:*
raw6 0 0 [::]:ipv6-icmp [::]:* 7
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] DGRAM 29108 /var/lib/samba/private/msg.sock/1797
unix 2 [ ACC ] STREAM LISTENING 29574 @/tmp/.ICE-unix/1851
unix 2 [ ACC ] STREAM LISTENING 13734 /run/systemd/private
unix 2 [ ACC ] STREAM LISTENING 29575 /tmp/.ICE-unix/1851
...
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
另外,可以加上-n
使不解析名称,直接显示ip地址等数值;也可以加上-p
来显示进程ID或名称。
netstat -an
netstat -ap
netstat -anp
- 1
- 2
- 3
✨2.2 查看TCP连接
netstat -at
:查看全部tcp连接;
netstat -t
:查看不带LISTEN
状态的tcp连接;
netstat -tl
:只查看LISTEN
状态的tcp连接;
在上面三个分别加上-n
,可以不解析名称,全部显示数值:
netstat -atn
:查看全部tcp连接;
netstat -tn
:查看不带LISTEN
状态的tcp连接;
netstat -tln
:只查看LISTEN
状态的tcp连接;
加上-p
来显示进程ID或名称:
netstat -atp
netstat -tp
netstat -alp
netstat -atnp
netstat -tnp
netstat -alnp
- 1
- 2
- 3
- 4
- 5
- 6
加上-4
或-6
仅先IPv4或IPv6的TCP连接
netstat -atp4
netstat -tp4
netstat -alp4
netstat -atnp6
netstat -tnp6
netstat -aln6
- 1
- 2
- 3
- 4
- 5
- 6
✨2.3 查看UDP连接
基础的查看UDP连接的命令就netstat -au
,
另外,-l
命令在UDP连接一般是用不到的,其他的-n、-p、-4、-6
的选项也都是可以合并使用的,看上一小节,这里不再赘述。
?三、查看路由表
netstat使用-r
选项可以查看内核的IP路由表,下面是使用netstat -r
和netstat -rn
的结果,带n
会不解析名称,直接显示数值。
?四、打印统计数据
netstat使用-s
选项,可以打印统计数据,与-u、-t
一并使用可以查看某个协议的统计数据。
?五、打印IPv6/IPv4组成员身份
netstat使用-g
选项,打印IPv6/IPv4组成员身份,与-4、-6
一并使用可以单独查看某个协议的。
?六、总结
?本文详细解释netstat命令怎么查看网络连接、查看路由表、查看统计数据等,并介绍了各个选项的用法。
如果文章有帮助的话,点赞?、收藏⭐,支持一波,谢谢 ???
?博客主页?:?https://blog.csdn.net/wkd_007?
?博客内容?:?嵌入式开发、Linux、C语言、C++、数据结构、音视频?
?本文内容?:?介绍 ?
?金句分享?:?你不能选择最好的,但最好的会来选择你——泰戈尔?
本文未经允许,不得转发!!!
?一、netstat介绍
✨1.1 netstat 概述
netstat
是一个命令行工具,可以用于查看系统的网络连接、路由表、接口统计信息、伪装连接和多播成员身份。
在网络编程中,可能需要使用netstat查看一些网络连接状态或路由表等信息,本文将详细介绍Linux系统中netstat工具的使用。
由于不同版本的netstat具备的功能可能存在差异,可以在命令行执行netstat -h
,查看自己的netstat工具支持哪些功能:
也可以执行netstat -V
,查看自己netstat的版本信息:
✨1.2 netstat 选项说明
选项 | 说明 |
---|---|
-r, --route | 显示路由表 |
-i, --interfaces | 显示网络接口表 |
-g, --groups | 显示多播组成员身份 |
-s, --statistics | 显示网络统计信息(如SNMP) |
-M, --masquerade | 显示伪装的连接,Linux不支持 |
-v, --verbose | 详细地告诉用户发生了什么。特别是打印一些有关未配置地址族的有用信息 |
-W, --wide | 不要根据需要使用输出来截断IP地址。这是可选的,目前不破坏现有脚本。 |
-n, --numeric | 显示数字地址,而不是解析为名称 |
–numeric-hosts | 显示数字主机地址,不解析主机名。 |
–numeric-ports | 不解析端口名 |
–numeric-users | 不解析用户名 |
-N, --symbolic | 解析硬件名称 |
-e, --extend | 显示其他/更多信息 |
-p, --programs | 显示套接字的PID/程序名称 |
-o, --timers | 显示计时器 |
-c, --continuous | 这将导致netstat连续每秒打印一次所选信息。 |
-l, --listening | 仅显示处于监听状态的套接字。(默认情况下会省略这些。) |
-a, --all | 显示所有套接字(默认只显示已连接的) |
-F, --fib | 显示转发信息库(默认) |
-C, --cache | 显示路由缓存而不是FIB |
-Z, --context | 显示套接字的SELinux安全上下文 |
-t, --tcp | 仅显示TCP相关 |
-u, --ud | 仅显示UDP相关 |
-w, --raw | 仅显示RAW套接字相关 |
-x, --unix | 仅显示Unix域套接字相关 |
-4 | 仅显示IPv4相关 |
-6 | 仅显示IPv6相关 |
上面表格介绍了netstat的大部分选项,其中红色字体的是比较常用的,要重点掌握。
?二、查看网络连接
通常,netstat使用-a、-t、-u、-l、-4、-6
来查看一些常见的网络连接,关于各个选项的解释可以看上面表格,下面对输出的每一列进行说明:
Proto
:套接字使用的协议(tcp、udp、udpl、raw等)。Recv-Q
:Established状态下,表示连接到此套接字的用户程序未复制的字节数。
Listening状态下,从内核2.6.18开始,此列包含当前syn囤积。Send-Q
:Established状态下,表示远程主机未确认的字节数。
Listening状态下,从内核2.6.18开始,此列包含syn囤积的最大大小。Local Address
:套接字本地端的地址和端口号。除非指定了–numeric(-n)选项,否则套接字地址将解析为其规范主机名(FQDN),端口号将转换为相应的服务名称。Foreign Address
:套接字远程端的地址和端口号。State
:套接字的状态。由于原始模式中没有状态,UDP和UDPLite中通常也没有使用状态,因此此列可能为空。PID/Program name
:用斜线分隔的进程id(PID)和拥有套接字的进程的进程名称对。Path
:表示连接到套接口的其它进程使用的路径名。
✨2.1 查看全部网络连接
运行netstat -a
可以查看全连接,下面是运行后的结果截选。
wkd_007$ netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:36155 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:microsoft-ds 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:nfs 0.0.0.0:* LISTEN
tcp 0 0 localhost:10501 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:60329 0.0.0.0:* LISTEN
....
tcp 0 0 virtual-machin:ssh 192.168.2.170:5254 ESTABLISHED
tcp 0 0 localhost:60490 localhost:9100 TIME_WAIT
...
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 ip6-localhost:ipp [::]:* LISTEN
udp 0 0 0.0.0.0:44546 0.0.0.0:*
udp 0 0 0.0.0.0:57189 0.0.0.0:*
udp6 0 0 [::]:35298 [::]:*
raw6 0 0 [::]:ipv6-icmp [::]:* 7
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] DGRAM 29108 /var/lib/samba/private/msg.sock/1797
unix 2 [ ACC ] STREAM LISTENING 29574 @/tmp/.ICE-unix/1851
unix 2 [ ACC ] STREAM LISTENING 13734 /run/systemd/private
unix 2 [ ACC ] STREAM LISTENING 29575 /tmp/.ICE-unix/1851
...
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
另外,可以加上-n
使不解析名称,直接显示ip地址等数值;也可以加上-p
来显示进程ID或名称。
netstat -an
netstat -ap
netstat -anp
- 1
- 2
- 3
✨2.2 查看TCP连接
netstat -at
:查看全部tcp连接;
netstat -t
:查看不带LISTEN
状态的tcp连接;
netstat -tl
:只查看LISTEN
状态的tcp连接;
在上面三个分别加上-n
,可以不解析名称,全部显示数值:
netstat -atn
:查看全部tcp连接;
netstat -tn
:查看不带LISTEN
状态的tcp连接;
netstat -tln
:只查看LISTEN
状态的tcp连接;
加上-p
来显示进程ID或名称:
netstat -atp
netstat -tp
netstat -alp
netstat -atnp
netstat -tnp
netstat -alnp
- 1
- 2
- 3
- 4
- 5
- 6
加上-4
或-6
仅先IPv4或IPv6的TCP连接
netstat -atp4
netstat -tp4
netstat -alp4
netstat -atnp6
netstat -tnp6
netstat -aln6
- 1
- 2
- 3
- 4
- 5
- 6
✨2.3 查看UDP连接
基础的查看UDP连接的命令就netstat -au
,
另外,-l
命令在UDP连接一般是用不到的,其他的-n、-p、-4、-6
的选项也都是可以合并使用的,看上一小节,这里不再赘述。
?三、查看路由表
netstat使用-r
选项可以查看内核的IP路由表,下面是使用netstat -r
和netstat -rn
的结果,带n
会不解析名称,直接显示数值。
?四、打印统计数据
netstat使用-s
选项,可以打印统计数据,与-u、-t
一并使用可以查看某个协议的统计数据。
?五、打印IPv6/IPv4组成员身份
netstat使用-g
选项,打印IPv6/IPv4组成员身份,与-4、-6
一并使用可以单独查看某个协议的。
?六、总结
?本文详细解释netstat命令怎么查看网络连接、查看路由表、查看统计数据等,并介绍了各个选项的用法。
如果文章有帮助的话,点赞?、收藏⭐,支持一波,谢谢 ???
评论记录:
回复评论: