当前位置: 首页 > Linux

Linux网络状态工具ss命令详解

时间:2023-04-06 02:14:28 Linux

ss命令用于显示套接字状态。它可以显示PACKET套接字、TCP套接字、UDP套接字、DCCP套接字、RAW套接字、Unix域套接字等统计信息。它比其他工具显示更多的TCP和状态信息。它是一个非常实用的新工具,可以快速高效地跟踪IP连接和套接字。SS命令可以提供以下信息:所有TCP套接字所有UDP套接字所有ssh/ftp/ttp/https持久连接所有使用状态连接到Xserver的本地进程(例如:已连接、同步、SYN-RECV、SYN-SENT、TIME-WAIT),地址,端口过滤所有状态FIN-WAIT-1tcpsocket连接和许多更流行的Linux发行版都支持ss并且许多监控工具使用ss命令。熟悉该工具将有助于您更好地发现和解决系统性能问题。强烈推荐使用ss命令来代替一些netstat命令,比如netsat-ant/lnt等。在展示他之前,我们先来对比一下服务器并发连接数netstat#timenetstat-ant|grepEST|wc-l3100real0m12.960suser0m0.334ssys0m12.561s#timess-ostateestablished|wc-l3204real0m0.030suser0m0.005ssys0m0ssstatistics数字效率优于netstat。如果ss可以搞定,你还会选择netstat吗?你还在犹豫?看下面的例子,或者跳转到帮助页面。常用ss命令:ss-l显示本地打开的所有端口ss-pl显示每个进程打开的具体套接字-t-a显示所有tcpsocketss-u-a显示所有UDPsocketss-ostateestablished'(dport=:smtporsport=:smtp)'显示所有已建立的SMTP连接ss-ostateestablished'(dport=:httporsport=:http)'DisplayallestablishedHTTPconnectionsss-xsrc/tmp/.X11-unix/*FindoutallprocessesconnectedtotheXserverss-sListcurrentsocketdetails:显示套接字的简要信息,列出当前连接、关闭、等待tcpconnections#ss-sTotal:3519(kernel3691)TCP:26557(estab3163,closed23182,orphaned194,synrecv0,timewait23182/0),ports1452TransportTotalIPIPv6*3691--RAW20UDP1073TCP337533687INET3387337710FRAG000列出当前监听端口#ss-lRecv-QSend-QLocalAddress:PortPeerAddress:Port010:::5989:::*05*:rsync*:*0128:::sunrpc:::*0128*:sunrpc*:*0511*:http*:*0128::ssh::*0128*:ssh*:*0128:::35766:::*0128127.0.0.1:ipp*:*0128::1:ipp:::*0100::1:smtp:::*0100127.0.0.1:smtp*:*0511*:https*:*0100:::1311:::*05*:5666*:*0128*:3044*:*ss列出每个进程名称和它监听的端口#ss-plsscolumnAlltcpsockets#ss-t-asslistalludpsockets#ss-u-asslistallconnectionsinhttpconnections#ss-ostateestablished'(dport=:httporsport=:http)'上面包含80个外部提供,80个外部访问。使用以上命令可以完美替代netstat获取http并发连接数。在监控中,ss常用来列出本地有哪些进程连接到xserver#ss-xsrc/tmp/.X11-unix/*sslistedinFIN-WAIT-1Statushttp,httpsconnection#ss-ostatefin-wait-1'(sport=:httporsport=:https)'ss常用状态status:establishedsyn-sentsyn-recvfin-wait-1fin-wait-2time-waitclosedclose-waitlast-acklistenclosingall:上述所有状态connected:除了listen和closesynchronized之外的所有状态synchronized:除了syn-sentbucket之外的所有连接状态:显示状态,作为minisockets维护,即time-wait和synig-recv。与bucketstate.ss相反使用IP地址过滤sssrcADDRESS_PATTERNsrc:表示来源ADDRESS_PATTERN:表示地址规则如下:sssrc120.33.31.1#Listconnectionsfrom20.33.31.1#Listconnectionsto120.33.31.1,port80sssrc120.33.31.1:httpsssrc120.33.31.1:8ssuseportfilterssdportOPPORTOP:YesoperatorPORT:表示端口dport:表示过滤目标端口,反之则有sportOP操作符如下:<=或le:小于或等于>=或ge:大于或等于==或eq:等于!=或ne:不等于端口<或lt:小于此端口>或gt:大于端口OP实例sssport=:http也可以是sssport=:80ssdport=:httpssdport>:1024sssport>:1024sssport<:32000sssporteq:22ssdport!=:22ssstateconnectedsport=:httpss(sport=:httporsport=:https)ss-ostatefin-wait-1(sport=:httporsport=:https)dst192.168.1/24为什么ss比netstat快:netstat是为了遍历/proc下面的每个PID目录,ss直接读取/proc/net下的统计信息。所以ss在执行ss命令时比netstat消耗的资源和时间要少得多help#ss-hUsage:ss[OPTIONS]ss[OPTIONS][FILTER]-h,--helpthismessage-V,--version输出版本信息-n,--numeric不解析服务名称-r,--resolve解析主机名-a,--all显示所有套接字-l,--listening显示监听套接字-o,--optionse--延伸显示详细的套接字信息-M,-内存显示套接字存储器用法-p,-过程使用套接字-i,-info显示内部tcp信息-s,--夏季show套接字用法摘要-4,--ipv4仅显示IP版本4套接字-6,--ipv6仅显示IP版本6套接字-0,-包装显示数据包插座-t,-tcp显示仅TCP插座-U,-UDP显示仅UDP套接字-D,-DCCP显示仅DCCP插座-W,-RAW显示仅RAWrawSockets-x,--unix仅显示Unix域套接字-f,--family=FAMILY显示类型为FAMILY-A的套接字,--query=QUERY,--socket=QUERYQUERY:={all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]-D,--diag=FILE将有关TCP套接字的原始信息转储到FILE-F,--filter=FILE从FILE过滤器中读取过滤器信息过滤器:=[状态TCP-状态][表达式]`