我是靠谱客的博主 怕黑月饼,最近开发中收集的这篇文章主要介绍socket通信问题(三)查看SOCKET使用情况# ss -s,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Linux系统中,查看SOCKET使用情况可以使用ss命令。

1、命令格式:
ss [参数]
ss [参数] [过滤]
2、命令功能:
ss(Socket Statistics的缩写)命令可以用来获取 socket统计信息,此命令输出的结果类似于 
netstat输出的内容,但它能显示更多更详细的 TCP连接状态的信息,且比 netstat 更快速高效。它使用了 TCP协议栈中 
tcp_diag(是一个用于分析统计的模块),能直接从获得第一手内核信息,这就使得 ss命令快捷高效。在没有 
tcp_diag,ss也可以正常运行。
3、命令参数:
-h, --help 帮助信息
-V, --version 程序版本信息
-n, --numeric 不解析服务名称
-r, --resolve 解析主机名
-a, --all 显示所有套接字(sockets)
-l, --listening 显示监听状态的套接字(sockets)
-o, --options 显示计时器信息
-e, --extended 显示详细的套接字(sockets)信息
-m, --memory 显示套接字(socket)的内存使用情况
-p, --processes 显示使用套接字(socket)的进程
-i, --info 显示 TCP内部信息
-s, --summary 显示套接字(socket)使用概况
-4, --ipv4 仅显示IPv4的套接字(sockets)
-6, --ipv6 仅显示IPv6的套接字(sockets)
-0, --packet 显示 PACKET 套接字(socket)
-t, --tcp 仅显示 TCP套接字(sockets)
-u, --udp 仅显示 UCP套接字(sockets)
-d, --dccp 仅显示 DCCP套接字(sockets)
-w, --raw 仅显示 RAW套接字(sockets)
-x, --unix 仅显示 Unix套接字(sockets)
-f, --family=FAMILY 显示 FAMILY类型的套接字(sockets),FAMILY可选,支持 unix, inet, inet6, link, netlink
-A, --query=QUERY, --socket=QUERY
QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]
-D, --diag=FILE 将原始TCP套接字(sockets)信息转储到文件
-F, --filter=FILE 从文件中都去过滤器信息
FILTER := [ state TCP-STATE ] [ EXPRESSION ]

4、使用实例:

 

# ss -s

Total: 140 (kernel 166)
TCP:   108 (estab 84, closed 16, orphaned 0, synrecv 0, timewait 15/0), ports 88


Transport Total     IP        IPv6
*         166       -         -
RAW       0         0         0
UDP       0         0         0
TCP       92        92        0
INET      92        92        0
FRAG      0         0         0

 

 

# ss -t -a
State      Recv-Q Send-Q                            Local Address:Port                                Peer Address:Port
LISTEN     0      128                                           *:http                                           *:*
SYN-RECV   0      0                                      10.0.0.2:http                                5.206.224.30:optika-emedia
LISTEN     0      128                                           *:epmd                                           *:*
LISTEN     0      128                                           *:ssh                                            *:*
LISTEN     0      128                                           *:15672                                          *:*
LISTEN     0      128                                           *:https                                          *:*
LISTEN     0      128                                           *:amqp                                           *:*
LISTEN     0      128                                           *:25672                                          *:*
ESTAB      0      0                                      10.0.0.2:46408                                   10.0.0.7:27017
TIME-WAIT  0      0                                     127.0.0.1:47209                                  127.0.0.1:http
TIME-WAIT  0      0                                      10.0.0.2:56428                               17.143.163.8:2195
ESTAB      0      0                                      10.0.0.2:33258                                   10.0.0.8:27017

 

 

也可以直接查看sockstat

# cat /proc/net/sockstat
sockets: used 141
TCP: inuse 93 orphan 0 tw 13 alloc 94 mem 19
UDP: inuse 0 mem 0
UDPLITE: inuse 0
RAW: inuse 0
FRAG: inuse 0 memory 0

说明:
sockets: used:已使用的所有协议套接字总量
TCP: inuse:正在使用(正在侦听)的TCP套接字数量。其值≤ netstat –lnt | grep ^tcp | wc –l
TCP: orphan:无主(不属于任何进程)的TCP连接数(无用、待销毁的TCP socket数)
TCP: tw:等待关闭的TCP连接数。其值等于netstat –ant | grep TIME_WAIT | wc –l
TCP:alloc(allocated):已分配(已建立、已申请到sk_buff)的TCP套接字数量。其值等于netstat –ant | grep ^tcp | wc –l
TCP:mem:套接字缓冲区使用量(单位不详。用scp实测,速度在4803.9kB/s时:其值=11,netstat –ant 中相应的22端口的Recv-Q=0,Send-Q≈400)
UDP:inuse:正在使用的UDP套接字数量
RAW:
FRAG:使用的IP段数量

 

查看TCP网络连接情况

 

命令:netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

   www.2cto.com  

返回结果示例:

Cmd代码  

LAST_ACK 5  

SYN_RECV 30  

ESTABLISHED 15  

FIN_WAIT1 51  

FIN_WAIT2 5  

TIME_WAIT 10  

 

其中的SYN_RECV表示正在等待处理的请求数;ESTABLISHED表示正常数据传输状态;TIME_WAIT表示处理完毕,等待超时结束的请求数。

 

命令:netstat -n | awk '/^tcp/'

Cmd代码  

tcp        0      0 192.168.1.102:8879          192.168.2.199:4516          TIME_WAIT     

tcp        0      0 192.168.1.102:8879          192.168.2.199:4520          TIME_WAIT     

tcp        0      0 192.168.1.102:8879          192.168.2.199:4525          TIME_WAIT     

tcp        0      0 192.168.1.102:56488         192.168.2.103:1521          ESTABLISHED   

tcp        0      0 192.168.1.102:56482         192.168.2.103:1521          ESTABLISHED   

tcp        0      0 192.168.1.102:56483         192.168.2.103:1521          ESTABLISHED  

   www.2cto.com  

状态:描述

CLOSED:无连接是活动的或正在进行

LISTEN:服务器在等待进入呼叫

SYN_RECV:一个连接请求已经到达,等待确认

SYN_SENT:应用已经开始,打开一个连接

ESTABLISHED:正常数据传输状态

FIN_WAIT1:应用说它已经完成

FIN_WAIT2:另一边已同意释放

ITMED_WAIT:等待所有分组死掉

CLOSING:两边同时尝试关闭

TIME_WAIT:另一边已初始化一个释放

LAST_ACK:等待所有分组死掉

 

netstat(network status网络状态)命令各个参数说明如下:

  -t : 指明显示TCP端口,t是TCP的首字母。

  -u : 指明显示UDP端口,u是UDP的首字母

  -l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序),l是listening的首字母。

  -p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序,p是program的首字母。

  -n : 不进行DNS轮询,显示IP(可以加速操作),n是numeric的首字母,以数字形式显示地址和端口号。

       -a:显示所有连接和侦听端口,a是all的首字母。

       -o:显示拥有的每个连接关联的进程id,o是own的首字母。

即可显示当前服务器上所有端口及进程服务,于grep结合可查看某个具体端口及服务情况··

netstat -ntlp   //查看当前所有tcp端口·

netstat -ntulp |grep 80   //查看所有80端口使用情况·

netstat -an | grep 3306   //查看所有3306端口使用情况·

查看一台服务器上面哪些服务及端口

netstat  -lanp

查看一个服务有几个端口。比如要查看mysqld

ps -ef |grep mysqld

查看某一端口的连接数量,比如3306端口

netstat -pnt |grep :3306 |wc

查看某一端口的连接客户端IP 比如3306端口

netstat -anp |grep 3306

netstat -an 查看网络端口 

lsof -i :port,使用lsof -i :port就能看见所指定端口运行的程序,同时还有当前连接。 

nmap 端口扫描
netstat -nupl  (UDP类型的端口)
netstat -ntpl  (TCP类型的端口)
netstat -anp 显示系统端口使用情况


lsof -i :port,使用lsof -i :port就能看见所指定端口运行的程序,同时还有当前连接。 

nmap 端口扫描
netstat -nupl  (UDP类型的端口)
netstat -ntpl  (TCP类型的端口)
netstat -anp 显示系统端口使用情况
--------------------- 
作者:顺其自然~ 
来源:CSDN 
原文:https://blog.csdn.net/fuhanghang/article/details/83627359 
版权声明:本文为博主原创文章,转载请附上博文链接!

最后

以上就是怕黑月饼为你收集整理的socket通信问题(三)查看SOCKET使用情况# ss -s的全部内容,希望文章能够帮你解决socket通信问题(三)查看SOCKET使用情况# ss -s所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部