java socket連接,ss命令,顯示socket狀態

 2023-10-05 阅读 27 评论 0

摘要:ss命令用于顯示socket狀態. 他可以顯示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix domain sockets等等統計. 它比其他工具展示等多tcp和state信息. 它是一個非常實用、快速、有效的跟蹤IP連接和sockets的新工具.SS命令可以提供如下信息ÿ

ss命令用于顯示socket狀態. 他可以顯示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix domain sockets等等統計. 它比其他工具展示等多tcp和state信息. 它是一個非常實用、快速、有效的跟蹤IP連接和sockets的新工具.SS命令可以提供如下信息:

  • 所有的TCP sockets
  • 所有的UDP sockets
  • 所有ssh/ftp/ttp/https持久連接
  • 所有連接到Xserver的本地進程
  • 使用state(例如:connected, synchronized, SYN-RECV, SYN-SENT,TIME-WAIT)、地址、端口過濾
  • 所有的state FIN-WAIT-1 tcpsocket連接以及更多

很多流行的Linux發行版都支持ss以及很多監控工具使用ss命令.熟悉這個工具有助于您更好的發現與解決系統性能問題.本人強烈建議使用ss命令替代netstat部分命令,例如netsat -ant/lnt等.

java socket連接。展示他之前來做個對比,統計服務器并發連接數

netstat
# time netstat -ant | grep EST | wc -l
3100
?
real 0m12.960s
user 0m0.334s
sys 0m12.561s
# time ss -o state established | wc -l
3204
?
real 0m0.030s
user 0m0.005s
sys 0m0.026s

結果很明顯ss統計并發連接數效率完敗netstat,在ss能搞定的情況下, 你還會在選擇netstat嗎, 還在猶豫嗎, 看以下例子,或者跳轉到幫助頁面.

常用ss命令:

ss -l 顯示本地打開的所有端口
ss -pl 顯示每個進程具體打開的socket
ss -t -a 顯示所有tcp socket
ss -u -a 顯示所有的UDP Socekt
ss -o state established '( dport = :smtp or sport = :smtp )' 顯示所有已建立的SMTP連接
ss -o state established '( dport = :http or sport = :http )' 顯示所有已建立的HTTP連接
ss -x src /tmp/.X11-unix/* 找出所有連接X服務器的進程
ss -s 列出當前socket詳細信息:

websocket服務器端,顯示sockets簡要信息
列出當前已經連接,關閉,等待的tcp連接

# ss -s
Total: 3519 (kernel 3691)
TCP: 26557 (estab 3163, closed 23182, orphaned 194, synrecv 0, timewait 23182/0), ports 1452
?
Transport Total IP IPv6
* 3691 - -
RAW 2 2 0
UDP 10 7 3
TCP 3375 3368 7
INET 3387 3377 10
FRAG 0 0 0

列出當前監聽端口

# ss -l
Recv-Q Send-Q Local Address:Port Peer Address:Port
0 10 :::5989 :::*
0 5 *:rsync *:*
0 128 :::sunrpc :::*
0 128 *:sunrpc *:*
0 511 *:http *:*
0 128 :::ssh :::*
0 128 *:ssh *:*
0 128 :::35766 :::*
0 128 127.0.0.1:ipp *:*
0 128 ::1:ipp :::*
0 100 ::1:smtp :::*
0 100 127.0.0.1:smtp *:*
0 511 *:https *:*
0 100 :::1311 :::*
0 5 *:5666 *:*
0 128 *:3044 *:*

ss列出每個進程名及其監聽的端口

# ss -pl

SOL_SOCKET,ss列所有的tcp sockets

# ss -t -a

ss列出所有udp sockets

# ss -u -a

ss列出所有http連接中的連接

# ss -o state established '( dport = :http or sport = :http )'

socket operation on non-socket?·以上包含對外提供的80,以及訪問外部的80
·用以上命令完美的替代netstat獲取http并發連接數,監控中常用到

ss列出本地哪個進程連接到x server

# ss -x src /tmp/.X11-unix/*

ss列出處在FIN-WAIT-1狀態的http、https連接

# ss -o state fin-wait-1 '( sport = :http or sport = :https )'

sockets、ss常用的state狀態

established
syn-sent
syn-recv
fin-wait-1
fin-wait-2
time-wait
closed
close-wait
last-ack
listen
closing
all : All of the above states
connected : All the states except for listen and closed
synchronized : All the connected states except for syn-sent
bucket : Show states, which are maintained as minisockets, i.e. time-wait and syn-recv.
big : Opposite to bucket state.

ss使用IP地址篩選

ss src ADDRESS_PATTERN
src:表示來源
ADDRESS_PATTERN:表示地址規則
?
如下:
ss src 120.33.31.1 # 列出來之20.33.31.1的連接
?
# 列出來至120.33.31.1,80端口的連接
ss src 120.33.31.1:http
ss src 120.33.31.1:80

ss使用端口篩選

ss dport OP PORT
OP:是運算符
PORT:表示端口
dport:表示過濾目標端口、相反的有sport

socket is closed、OP運算符如下:

<= or le : 小于等于 >= or ge : 大于等于
== or eq : 等于
!= or ne : 不等于端口
< or lt : 小于這個端口 > or gt : 大于端口

OP實例

ss sport = :http 也可以是 ss sport = :80
ss dport = :http
ss dport \> :1024
ss sport \> :1024
ss sport \< :32000
ss sport eq :22
ss dport != :22
ss state connected sport = :http
ss \( sport = :http or sport = :https \)
ss -o state fin-wait-1 \( sport = :http or sport = :https \) dst 192.168.1/24

為什么ss比netstat快:
netstat是遍歷/proc下面每個PID目錄,ss直接讀/proc/net下面的統計信息。所以ss執行的時候消耗資源以及消耗的時間都比netstat少很多

websocket原理、ss命令幫助

# ss -h
Usage: ss [ OPTIONS ]
???????ss [ OPTIONS ] [ FILTER ]
???-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
???-i, --info?????????? show internal TCP information
???-s, --summary??????? show socket usage summary
?
???-4, --ipv4????????? display only IP version 4 sockets
???-6, --ipv6????????? display only IP version 6 sockets
???-0, --packet display PACKET sockets
???-t, --tcp??????????? display only TCP sockets
???-u, --udp??????????? display only UDP sockets
???-d, --dccp?????????? display only DCCP sockets
???-w, --raw??????????? display only RAW sockets
???-x, --unix?????????? display only Unix domain sockets
???-f, --family=FAMILY display sockets of type FAMILY
?
???-A, --query=QUERY, --socket=QUERY
???????QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]
?
???-D, --diag=FILE????? Dump raw information about TCP sockets to FILE
???-F, --filter=FILE?? read filter information from FILE

???????FILTER := [ state TCP-STATE ] [ EXPRESSION ]

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/118363.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息