Linux系统使用ss命令查看端口状态
Linux系统使用ss命令查看端口状态
1.可用工具
2.ss帮助
2.1 选项分类说明
2.2 过滤选项family
2.3 过滤选项state
2.4 状态之间的关系
3.ss的使用
3.1 使用示例
3.2 过滤
3.2.1 状态过滤
3.2.2 通过family过滤
3.2.3 使用地址和端口过滤
3.3 常用组合
1.可用工具
- 逐渐淘汰的 netstat 命令在 net-tools 软件包里(多年没有维护;效率很低)
 - 逐渐成为主流的 ss 命令在 iproute2 软件包里(对常用网络命令做了改进和优化)
 
ArchLinux已弃用"net-tools",转而使用"iproute2"
弃用命令	>	替换命令
arp		>	ip n
ifconfig	>	ip a, ip link, ip -s
netstat	>	ss, ip route, ip -s link
route	>	ip route
详见:https://www.cnblogs.com/sztom/articles/10764994.html
不推荐使用的Linux网络命令及其替代品
2.ss帮助
$ ss -h
 -h,	 --help	this message	帮助信息
 -V,
--version	output version information	输出版本信息
 -n,
--numeric	don't resolve service names	不解析服务名称
 -r,
--resolve	resolve host names	解析主机名
 -a,	 --all	display
all sockets	显示所有套接字
 -l,
--listening	display listening sockets	显示侦听套接字
 -o,	 --options	show
timer information	显示计时器信息
 -e,
--extended	show detailed socket information	显示详细的套接字信息
 -m,	 --memory	show
socket memory usage	显示套接字内存使用量
 -p,
--processes	show process using socket	显示使用socket的进程信息
 -i,	 --info	show
internal TCP information	显示内部TCP信息
	 --tipcinfo	show
internal tipc socket information	显示内部tipc套接字信息
 -s,	 --summary	show
socket usage summary	show socket使用摘要
	 --tos	show tos and
priority information	显示tos和优先级信息
 -b,	 --bpf	show bpf
filter socket information	显示bpf过滤器套接字信息
 -E,
--events	continually display sockets as they are
destroyed	在它们被摧毁时不断显示套接字
 -Z,
--context	display process SELinux security contexts	显示进程SELinux安全上下文
 -z,
--contexts	display process and socket SELinux security
contexts	显示进程和套接字SELinux安全上下文
 -N,	 --net	switch
to the specified network namespace name	切换到指定的网络命名空间名称
 
 -4,	 --ipv4	display
only IP version 4 sockets	只显示ipv4的套接字;
 -6,	 --ipv6	display
only IP version 6 sockets	只显示ipv6的套接字;
 -0,
--packet	display PACKET sockets	显示PACKET套接字
 -t,	 --tcp	display
only TCP sockets	仅显示TCP套接字
 -S,	 --sctp	display
only SCTP sockets	仅显示SCTP套接字
 -u,	 --udp	display
only UDP sockets	仅显示UDP套接字
 -d,	 --dccp	display
only DCCP sockets	仅显示DCCP套接字
 -w,	 --raw	display
only RAW sockets	仅显示RAW套接字
 -x,	 --unix	display
only Unix domain sockets	仅显示Unix域套接字
	 --tipc	display
only TIPC sockets	仅显示TIPC套接字
	 --vsock	display
only vsock sockets	仅显示vsock套接字
 -f,
--family=FAMILY	display sockets of type FAMILY	显示FAMILY类型的套接字
	 FAMILY :=
	{inet|inet6|link|unix|netlink|vsock|tipc|help}	
 
 -K,
--kill	forcibly close sockets, display what was
closed	强行关闭套接字,显示已关闭的内容
 -H,
--no-header	Suppress header line	抑制标题行
 
 -A,	 --query=QUERY,
 --socket=QUERY	QUERY :=
{all|inet|tcp|udp|raw|unix|unix_dgram|unix_stream|unix_seqpacket|packet|netlink|vsock_tipc}[,QUERY]	
 
 -D,
--diag=FILE	Dump raw information about TCP sockets to
FILE	将有关TCP套接字的原始信息转储到FILE
 -F,
--filter=FILE	read filter information from FILE	从FILE中读取过滤器信息
	 FILTER :=	 [ state
STATE-FILTER ] [ EXPRESSION ]	
	 STATE-FILTER
:=	{all|connected|synchronized|bucket|big|TCP-STATES}	
	 TCP-STATES
:=	{established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|closed|close-wait|last-ack|listening|closing}	
	 connected
:=	{established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}	
	 synchronized
:=	{established|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}	
	 bucket
:=	{syn-recv|time-wait}	
	 big
:=	{established|syn-sent|fin-wait-{1,2}|closed|close-wait|last-ack|listening|closing}
2.1
选项分类说明
这2个选项(-n,
-r)不能同时使用
 -n,
--numeric	don't resolve service names	不解析服务名称
 -r,
--resolve	resolve host names	解析主机名
统计摘要
 -s,	 --summary	show
socket usage summary	show socket使用摘要
显示全部
 -a,	 --all	display
all sockets	显示所有套接字
仅显示部分
 -l,
--listening	display listening sockets	显示侦听套接字
 -4,	 --ipv4	display
only IP version 4 sockets	只显示ipv4的套接字;
 -6,	 --ipv6	display
only IP version 6 sockets	只显示ipv6的套接字;
 -0,
--packet	display PACKET sockets	显示PACKET套接字
 -t,	 --tcp	display
only TCP sockets	仅显示TCP套接字
 -S,	 --sctp	display
only SCTP sockets	仅显示SCTP套接字
 -u,	 --udp	display
only UDP sockets	仅显示UDP套接字
 -d,	 --dccp	display
only DCCP sockets	仅显示DCCP套接字
 -w,	 --raw	display
only RAW sockets	仅显示RAW套接字
 -x,	 --unix	display
only Unix domain sockets	仅显示Unix域套接字
其他更多信息
 -p,
--processes	show process using socket	显示使用socket的进程信息
 -o,	 --options	show
timer information	显示计时器信息
 -e,
--extended	show detailed socket information	显示详细的套接字信息
 -m,	 --memory	show
socket memory usage	显示套接字内存使用量
 -i,	 --info	show
internal TCP information	显示内部TCP信息
2.2
过滤选项
family
-f,
--family=FAMILY	display sockets of type FAMILY	显示FAMILY类型的套接字
	 FAMILY :=
	{inet|inet6|link|unix|netlink|vsock|tipc|help}
2.3
过滤选项 state
state
:	{all|connected|synchronized|bucket|big|TCP-STATES}	
	 TCP-STATES
:=	{established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|closed|close-wait|last-ack|listening|closing}	
	 connected
:=	{established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}	
	 synchronized
:=	{established|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}	
	 bucket
:=	{syn-recv|time-wait}	
	 big
:=	{established|syn-sent|fin-wait-{1,2}|closed|close-wait|last-ack|listening|closing}
2.4
状态之间的关系
详细内容请看原文:https://blog.51cto.com/net881004/2164020
图1:客户端和服务器建立连接的挥手过程原理图

图2:TCP状态转移图

图3:关闭部分的状态转移图

3.
ss的使用
如果不添加选项
ss 命令默认输出所有建立的连接(不包含监听的端口),包括
tcp, udp, and unix socket 三种类型的连接:
$ ss
Netid  State
Recv-Q   Send-Q  Local Address:Port    Peer Address:Port
tcp    ESTAB       0
      0     192.168.31.177:38885  60.227.167.98:24932
tcp    ESTAB       0
      0     192.168.31.177:35846   89.42.31.211:polestar
tcp    CLOSE-WAIT
32      0          127.0.0.1:59638      127.0.0.1:socks
tcp    CLOSE-WAIT  1
      0          127.0.0.1:59612      127.0.0.1:socks
tcp    FIN-WAIT-2  0
      0          127.0.0.1:socks      127.0.0.1:59606
tcp    ESTAB       0
      0     192.168.31.177:34970   89.42.31.211:polestar
3.1
使用示例
显示每个协议的摘要统计信息。
$ ss -s
Total: 916
TCP:   75 (estab 15,
closed 26, orphaned 4, timewait 18)
Transport Total
IP        IPv6
RAW	  1         1
     0
UDP	  14        13
     1
TCP	  49        48
     1
INET	  64        62
      2
FRAG	  0         0
      0
查看所有套接字:
ss -a
$ ss |wc -l
901
$ ss -a |wc -l
//898
State	1
CLOSE-WAIT	2
ESTAB	749
FIN-WAIT-2	2
LAST-ACK	1
LISTEN	32
TIME-WAIT	2
UNCONN	110
合计
结果	898
显示侦听套接字,列出所有打开的网络连接端口,
ss -l或
--listening
$ ss -l |wc -l
//147
显示数字地址,而不是尝试确定符号主机,端口或用户名(跳过DNS转换)ss
-n或--numeric
$ ss -n
显示符号主机,端口或用户名,而不是数字表示。Netstat默认执行此操作。ss
-r或--resolve
$ ss -r
显示进程ID(PID)和每个套接字所属程序的名称。
$ ss -p
包括与网络计时器相关的信息。ss
-o或--options
$ ss -o
显示更高级别的细节。ss
-e或--extended
$ ss -e
Netid  State
Recv-Q   Send-Q  Local Address:Port    Peer Address:Port
tcp    ESTAB       0
      0     192.168.31.177:34970   89.42.31.211:polestar    uid:1001
ino:3316553 sk:750 <->
tcp    ESTAB       0
      0          127.0.0.1:59570      127.0.0.1:socks
timer:(keepalive,38sec,0) uid:1001 ino:3335889 sk:76a <->
3.2
过滤
3.2.1
状态过滤
$ ss state syn-recv
有如下选项可用,后面的数字是本机当前按状态查询的行数
|wc -l
syn-sent 发送同步信号
syn-recv 接收同步信号
established	建立连接
fin-wait-{1,2}	等待
完成	2
time-wait	等待时间	2
closed	关闭	111
Close-wait	等待关闭	2
Last-ack	最后确认
listening 坚听	32
closing	关闭	1
all : 所有以上10种状态
connected : 除了
listening and closed 的剩所有状态(8种状态)
synchronized :所有
connected 除了
syn-sent (7种状态)
bucket :
显示状态为maintained
as minisockets,如:time-wait和syn-recv.(2种状态)
big :
和bucket相反.(8种状态)

$ ss state all |wc
-l
1036
$ ss state connected
|wc -l
889
$ ss state
synchronized |wc -l
904
$ ss state bucket
|wc -l
18
$ ss state big |wc
-l
1023
$ ss state listening
|wc -l
34
3.2.2
通过family过滤
{inet|inet6|link|unix|netlink|vsock|tipc|help}
$ ss -f inet
$ ss -f inet |wc -l
33
$ ss -f link |wc -l
6
$ ss -f unix |wc -l
851
$ ss -f netlink |wc
-l
62
$ ss -f vsock |wc -l
3.2.3
使用地址和端口过滤
可以通过
dst/src/dport/sprot 语法来过滤连接的来源和目标,来源端口和目标端口。
匹配本地地址和端口号
$ ss src
192.168.31.177
Netid State
Recv-Q  Send-Q    Local Address:Port      Peer Address:Port
tcp   ESTAB     0
   0        192.168.31.177:60412     89.42.31.211:polestar
tcp   ESTAB     0
   0        192.168.31.177:51972    58.250.136.56:http-alt
tcp   LAST-ACK  0
   1        192.168.31.177:57926   220.194.95.148:https
匹配远程地址和端口号
$ ss dst
89.42.31.211
Netid  State  Recv-Q
 Send-Q     Local Address:Port      Peer Address:Port
tcp    ESTAB  0
 0         192.168.31.177:60476     89.42.31.211:polestar
tcp    ESTAB  0
 0         192.168.31.177:60452     89.42.31.211:polestar
$ ss dst
192.168.31.113:http
$ ss dst
192.168.31.113:80
端口过滤
$ ss dport OP PORT
$ ss sport OP PORT
操作符OP
可以代表以下任意一个:
   <=	le	小于或等于某个端口号
   >=	ge	大于或等于某个端口号
   ==	eq	等于某个端口号
   !=	ne	不等于某个端口号 
   >	gt	大于某个端口号
   <	lt	小于某个端口号
$ ss -tunl sport lt
50
$ ss -tunl sport \<
50
3.3
常用组合
查看主机监听的端口,本地IP地址及tcp数字端口号(t:tcp;
n:数字显示;l监听)
$ ss -tnl
显示名称,比如上面的127.0.0.1:53显示为tigger:domain;
端口22显示为ssh等。
$ ss -tlr
$ ss -tnl
State     Recv-Q
Send-Q       Local Address:Port        Peer Address:Port
LISTEN    0
128              127.0.0.1:1080             0.0.0.0:*
LISTEN    0
5                  0.0.0.0:8999             0.0.0.0:*
LISTEN    0
5                     [::]:8999                [::]:*
$ ss -trl
State     Recv-Q
Send-Q       Local Address:Port        Peer Address:Port
LISTEN    0
128              localhost:socks            0.0.0.0:*
LISTEN    0
5                  0.0.0.0:bctp             0.0.0.0:*
LISTEN    0
5                     [::]:bctp                [::]:*
加上p,显示pid
$ ss -tlrp
State     Recv-Q
Send-Q       Local Address:Port        Peer Address:Port
LISTEN    0
128              localhost:socks            0.0.0.0:*
users:(("sslocal",pid=1123,fd=3))
LISTEN    0
5                  0.0.0.0:bctp             0.0.0.0:*
users:(("qbittorrent",pid=618,fd=29))
LISTEN    0
5                     [::]:bctp                [::]:*
users:(("qbittorrent",pid=618,fd=28))
所有的tcp连接
 ss -tan
State        Recv-Q
 Send-Q      Local Address:Port       Peer Address:Port
LISTEN       0
 128             127.0.0.1:1080            0.0.0.0:*
LISTEN       0
 5                 0.0.0.0:8999            0.0.0.0:*
TIME-WAIT    0
 0               127.0.0.1:1080          127.0.0.1:32874
TIME-WAIT    0
 0               127.0.0.1:1080          127.0.0.1:32890
ESTAB        0
 0               127.0.0.1:1080          127.0.0.1:32910
ESTAB        0
 0          192.168.31.177:37342      89.42.31.211:1060
ESTAB        0
 0               127.0.0.1:32898         127.0.0.1:1080
CLOSE-WAIT   0
 0          192.168.31.177:57108     58.250.136.56:8080
ESTAB        0
 0               127.0.0.1:1080          127.0.0.1:32894
ESTAB        0
 0          192.168.31.177:37330      89.42.31.211:1060
ESTAB        0
 0               127.0.0.1:1080          127.0.0.1:32902
ESTAB        0
 0               127.0.0.1:32894         127.0.0.1:1080
ESTAB        0
 0          192.168.31.177:37334      89.42.31.211:1060
ESTAB        0
 0               127.0.0.1:32906         127.0.0.1:1080
ESTAB        0
 0               127.0.0.1:32910         127.0.0.1:1080
ESTAB        0
 0               127.0.0.1:1080          127.0.0.1:32898
ESTAB        0
 0          192.168.31.177:49443     60.227.167.98:24932
ESTAB        0
 0          192.168.31.177:37346      89.42.31.211:1060
ESTAB        0
 0               127.0.0.1:1080          127.0.0.1:32906
ESTAB        0
 0          192.168.31.177:37338      89.42.31.211:1060
ESTAB        0
 0               127.0.0.1:32902         127.0.0.1:1080
LISTEN       0
 5                    [::]:8999               [::]:*
查看所有tcp,udp,数字显示,显示pid
$ ss -tuanp
查看所有tcp,udp,名称显示,显示pid
$ ss -tuarp
其他命令:
'nc' means 'netcat',
not 'netconsole'.
Install gnu-netcat
and try again.
https://wiki.archlinux.org/index.php/Netconsole
https://wiki.archlinux.org/index.php/Network_tools#Netcat
https://en.wikipedia.org/wiki/Netcat
https://www.archlinux.org/packages/?name=socat
Linux系统使用ss命令查看端口状态的更多相关文章
- Linux系统采用netstat命令查看DDOS攻击的方法
		
Linux系统采用netstat命令查看DDOS攻击的方法 来源:互联网 作者:佚名 时间:07-05 15:10:21 [大 中 小] 这篇文章主要为大家介绍了Linux系统采用netstat命令查 ...
 - linux操作系统中的netstat命令查看端口状态的使用和window操作系统查看端口号
		
1:linux操作系统 netstat 命令用于显示各种网络相关信息,即网络状态.而我主要使用netstat查看端口号是否启动: 参数详情: 1 -a (all)显示所有选项,默认不显示LISTEN相 ...
 - Linux系统中用stat命令查看文件的三个时间属性
		
在Linux中,没有文件创建时间的概念.只有文件的访问时间.修改时间.状态改变时间.也就是说无法知道文件的创建时间. [root@rhel7 yum.repos.d]# stat cdrom.repo ...
 - dos命令查看端口状态
		
netstat 显示协议统计信息和当前 TCP/IP 网络连接. NETSTAT [-a] [-b] [-e] [-n] [-o] [-p proto] [-r] [-s] [-v] [interva ...
 - Linux 系统巡检常用命令
		
Linux系统巡检常用命令 # uname -a # 查看内核/操作系统# cat /etc/centos-release # 查看centos操作系统版本# cat /proc/cpuinfo ...
 - lsof命令查看端口关联的文件
		
lsof命令查看端口关联的文件 lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网 ...
 - 10.8 ss:查看网络状态
		
ss命令 是类似并将取代netstat的工具,它能用来查看网络状态信息,包括TCP.UDP连接.端口等.它的优点是能够显示更多更详细的有关网络连接状态的信息,而且比netstat更快速更高效. ...
 - [r]Ubuntu Linux系统下apt-get命令详解
		
Ubuntu Linux系统下apt-get命令详解(via|via) 常用的APT命令参数: apt-cache search package 搜索包 apt-cache show package ...
 - 如何解决Linux 系统下 ifconfig 命令无网络接口 ens33
		
今天我在做Redis的哨兵集群模式的时候,以前都是好的,也不知道从什么时候开始就无法连接Redis服务器了,就是运行如下命令,没有效果:redis-server redis.conf,然后在通过命令查 ...
 
随机推荐
- Java的反射机制之反向抽烟
			
show me the code and take to me,做的出来更要说的明白 GitHub项目JavaHouse同步收录 喜欢就点个赞呗! 你的支持是我分享的动力! 引入 反射是一种不按套路处 ...
 - 带有“全选”的combotree
			
<div id="setBtn_dd" class="easyui-window" data-options="iconCls:'icon-sa ...
 - Kubernetes的pod控制器及ReplicaSet控制器类型的pod的定义
			
为什么需要Pod Kubernetes项目之所以这么做的原因: 因为Kubernetes是谷歌公司基于Borg项目做出来的,谷歌工程师发现,他们部署的应用往往存在这进程与进程组的关系.具体说呢,就是这 ...
 - ANSYS 瞬态热分析--样件加热
			
目录 1. 要求 2. ANSYS有限元分析 2.1 APDL建模 1. 要求 一块0.8m*0.4m*0.2m厚的钢板,在300℃的炉子中进行加热,其材料参数如下表所示: 材料参数 序号 名称 参数 ...
 - FileUpload之FileItem类的常用方法
			
http://blog.csdn.net/chinaliuyan/article/details/7002014
 - kaggle赛题Digit Recognizer:利用TensorFlow搭建神经网络(附上K邻近算法模型预测)
			
一.前言 kaggle上有传统的手写数字识别mnist的赛题,通过分类算法,将图片数据进行识别.mnist数据集里面,包含了42000张手写数字0到9的图片,每张图片为28*28=784的像素,所以整 ...
 - Linux批量装机(PXE)!
			
一 .PXE 简介PXE:Pre-boot Excution Environment,预启动执行环境PXE 是由 Intel 公司开发的网络引导技术,工作在 Client/Server 模式,允许客户 ...
 - leetCode练题——14. Longest Common Prefix
			
1.题目 14. Longest Common Prefix Write a function to find the longest common prefix string amongst a ...
 - 第七届蓝桥杯javaB组真题解析-方格填数(第六题)
			
题目 /* 方格填数 如下的10个格子 +--+--+--+ | | | | +--+--+--+--+ | | | | | +--+--+--+--+ | | | | +--+--+--+ (如果显 ...
 - 栈结构Stack
			
package seday12; import java.util.Deque; import java.util.LinkedList; /** * @author xingsir * 栈结构. 栈 ...