国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

Linux中ss命令

2023-05-30 15:13:35 880

ss 是 Socket Statistics 的縮寫。ss 命令可以用來獲取 socket 統(tǒng)計(jì)信息,它顯示的內(nèi)容和 netstat 類似。但 ss 的優(yōu)勢在于它能夠顯示更多更詳細(xì)的有關(guān) TCP 和連接狀態(tài)的信息,而且比 netstat 更快。當(dāng)服務(wù)器的 socket 連接數(shù)量變得非常大時(shí),無論是使用 netstat 命令還是直接 cat /proc/net/tcp,執(zhí)行速度都會(huì)很慢。ss 命令利用到了 TCP 協(xié)議棧中 tcp_diag。tcp_diag 是一個(gè)用于分析統(tǒng)計(jì)的模塊,可以獲得 Linux 內(nèi)核中第一手的信息,因此 ss 命令的性能會(huì)好很多。

常用選項(xiàng)

-h, --help 幫助
-V, --version  顯示版本號
-t, --tcp 顯示 TCP 協(xié)議的 sockets
-u, --udp 顯示 UDP 協(xié)議的 sockets
-x, --unix 顯示 unix domain sockets,與 -f 選項(xiàng)相同
-n, --numeric 不解析服務(wù)的名稱,如 "22" 端口不會(huì)顯示成 "ssh"
-l, --listening 只顯示處于監(jiān)聽狀態(tài)的端口
-p, --processes 顯示監(jiān)聽端口的進(jìn)程(Ubuntu 上需要 sudo)
-a, --all 對 TCP 協(xié)議來說,既包含監(jiān)聽的端口,也包含建立的連接
-r, --resolve 把 IP 解釋為域名,把端口號解釋為協(xié)議名稱

常見用例

如果不添加選項(xiàng) ss 命令默認(rèn)輸出所有建立的連接(不包含監(jiān)聽的端口),包括 tcp, udp, and unix socket 三種類型的連接:

[root@XR ~]# ss |head -n 5

image.png


Netid

網(wǎng)絡(luò)標(biāo)識符

State

每個(gè)服務(wù)的連接狀態(tài)

Recv-Q

接收socket(套接字)隊(duì)列中的數(shù)據(jù)量,以字節(jié)為單位

Send-Q

發(fā)送socket(套接字)隊(duì)列中的數(shù)據(jù)量,以字節(jié)為單位

Local Address

運(yùn)行本地的計(jì)算機(jī)地址

Port

服務(wù)端口

Peer Address

對等端口

查看主機(jī)監(jiān)聽的端口

[root@XR ~]# ss -tnl

image.png


通過 -r 選項(xiàng)解析 IP 和端口號

[root@XR ~]# ss -tlr

image.png


使用 -p 選項(xiàng)查看監(jiān)聽端口的程序名稱

[root@XR ~]# ss -tlp

image.png


最后一列就是運(yùn)行的程序名稱。還可以通過 grep 繼續(xù)過濾:

[root@XR ~]# ss -tlp | grep ssh

image.png


查看建立的 TCP 連接

-a --all 對 TCP 協(xié)議來說,既包含監(jiān)聽的端口,也包含建立的連接

[root@XR ~]#  ss -tna

image.png

顯示更多的信息

-o, --options 顯示時(shí)間信息
-m, --memory 顯示 socket 使用的內(nèi)存
-i, --info 顯示更多 TCP 內(nèi)部的信息

[root@XR ~]# ss -imo

image.png

由于信息較多,這里只顯示內(nèi)存部分,括號內(nèi)從左到右分別代表:

接收報(bào)文分配的內(nèi)存

接收報(bào)文可分配的內(nèi)存

發(fā)送報(bào)文分配的內(nèi)存

發(fā)送報(bào)文可分配的內(nèi)存

socket使用的緩存

為將要發(fā)送的報(bào)文分配的內(nèi)存

保存socket選項(xiàng)使用的內(nèi)存

連接隊(duì)列使用的內(nèi)存


顯示概要信息

ss -s 是一個(gè)非常有用的命令。它可以按網(wǎng)絡(luò)傳輸類型顯示總體統(tǒng)計(jì)信息,我們不妨來測試一下:

[root@XR ~]# ss -s

image.png

RAW Socket 原始套接字。允許直接發(fā)送和接收 IP 數(shù)據(jù)包,無需滿足特定的傳輸協(xié)議,用于 namp 等安全應(yīng)用。

TCP 傳輸控制協(xié)議。是我們網(wǎng)絡(luò)連接當(dāng)中的主要連接協(xié)議。

UDP 用戶數(shù)據(jù)報(bào)協(xié)議。類似于 TCP 但沒有錯(cuò)誤檢查。

INET 包含上述項(xiàng)。( INET4 和 INET6 可以通過一些 ss 命令單獨(dú)查看)。

FRAG 可以理解為碎片的意思。


dst/src dport/sport 語法

可以通過 dst/src/dport/sprot 語法來過濾連接的來源和目標(biāo),來源端口和目標(biāo)端口。

匹配遠(yuǎn)程地址和端口號

 ss dst 192.168.1.5

 ss dst 192.168.119.113:http

 ss dst 192.168.119.113:443

匹配本地地址和端口號

 ss src 192.168.119.103

 ss src 192.168.119.103:http

 ss src 192.168.119.103:80

將本地或者遠(yuǎn)程端口和一個(gè)數(shù)比較

可以使用下面的語法做端口號的過濾:

 ss dport OP PORT

 ss sport OP PORT

OP 可以代表以下任意一個(gè):

<=

le

小于或等于某個(gè)端口號

>=

ge

大于或等于某個(gè)端口號

==

eq

等于某個(gè)端口號

!=

ne

不等于某個(gè)端口號

>

gt

大于某個(gè)端口號

<

lt

小于某個(gè)端口號

下面是一個(gè)簡單的 demo(注意,需要對尖括號使用轉(zhuǎn)義符):

 ss -tunl sport lt 50

 ss -tunl sport \\< 50

image.png


通過 TCP 的狀態(tài)進(jìn)行過濾

ss 命令還可以通過 TCP 連接的狀態(tài)進(jìn)程過濾,支持的 TCP 協(xié)議中的狀態(tài)有:
established
syn-sent
syn-recv
fin-wait-1
fin-wait-2
time-wait
closed
close-wait
last-ack
listening
closing
除了上面的 TCP 狀態(tài),還可以使用下面這些狀態(tài):

all

列出所有的 TCP 狀態(tài)。

connected

列出除了 listening 和 closing 之外的所有 TCP 狀態(tài)。

synchronized

列出除了 syn-sent 之外的所有 TCP 狀態(tài)。

bucket

列出 maintained 的狀態(tài),如:time-wait 和 syn-recv。

big

列出和 bucket 相反的狀態(tài)。

使用 ipv4 時(shí)的過濾語法如下:

ss -4 state filter

使用 ipv6 時(shí)的過濾語法如下:

ss -6 state filter

下面是一個(gè)簡單的例子:

[root@XR ~]# ss -4 state listening

image.png


同時(shí)過濾 TCP 的狀態(tài)和端口號

(注意下面命令中的轉(zhuǎn)義符和空格,都是必須的。如果不用轉(zhuǎn)義符,可以使用單引號)
下面的命令顯示所有狀態(tài)為 established 的 ssh 連接:

[root@XR ~]# ss -4n state listening

下面的兩種寫法是等價(jià)的,要有使用 \\ 轉(zhuǎn)義小括號,要么使用單引號括起來:

 ss -4n  state listening \\( dport = :ssh  \\)

 ss -4n  state listening '( dport = :ssh  )' 

image.png


只是最后的結(jié)果稍微讓人有些意外,不僅顯示了監(jiān)聽的端口,也顯示了通過 22 端口建立的連接。

下面我們顯示所有狀態(tài)為 Established 的 HTTP 連接:

[root@XR ~]# ss state established '( sport = :http or dport = :http )'

image.png


總結(jié)

由于性能出色且功能豐富,ss 命令可以用來替代 netsate 命令成為我們?nèi)粘2榭?socket 相關(guān)信息的利器。其實(shí)拋棄 netstate 命令已經(jīng)是大勢所趨,有的 Linux 版本默認(rèn)已經(jīng)不再內(nèi)置 netstate 而是內(nèi)置了 ss 命令。



提交成功!非常感謝您的反饋,我們會(huì)繼續(xù)努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問題: