Linux netstat命令為您提供了有關網路連線、正在使用的埠以及使用它們的程序的資訊寶庫。學習如何使用它。
可以連線網路套接字,也可以等待連線。連線使用網路協議,如傳輸控制協議(TCP)或使用者資料報協議UDP。他們使用網際網路協議地址和網路埠建立連線。
sockets一詞可能會讓人聯想到導線或電纜的物理連線點,但在本文中,socket是一種用於處理網路資料連線一端的軟體結構。
套接字有兩種主要狀態:它們要麼已連線並促進正在進行的網路通訊,要麼正在等待傳入連線連線到它們。還有其他一些狀態,例如套接字在遠端裝置上建立連線的過程中處於中間狀態,但拋開瞬時狀態不談,可以將套接字視為正在連線或正在等待(通常稱為偵聽)。
偵聽套接字稱為伺服器,請求與偵聽套接字連線的套接字稱為客戶機。這些名稱與硬體或計算機角色無關。它們只是在連線的每一端定義每個套接字的角色。
netstat命令允許您發現哪些套接字已連線,哪些套接字正在偵聽。也就是說,它告訴您哪些埠正在使用,哪些程序正在使用它們。它可以顯示路由表和有關網路介面和多播連線的統計資訊。
netstat的功能隨著時間的推移在不同的Linux實用程式中得到了複製,比如ip和ss。這仍然是值得了解的所有網路分析命令,因為它是所有Linux和Unix作業系統,甚至在Windows和Mac。
下面是如何使用它,並附有示例命令。
-a(all)選項使netstat顯示所有連線的和等待的套接字。這個命令可能會產生一個很長的列表,所以我們將它匯入較少的列表中。
netstat -a | less清單包括TCP(IP)、TCP6(IPv6)和UDP套接字。
終端視窗中的環繞使得看到正在發生的事情有點困難。下面是該列表中的幾個部分:
Active Internet connecti*** (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost:domain 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN tcp 0 0 localhost:ipp 0.0.0.0:* LISTEN tcp 0 0 localhost:**tp 0.0.0.0:* LISTEN tcp6 0 0 [::]:ssh [::]:* LISTEN tcp6 0 0 ip6-localhost:ipp [::]:* LISTEN . . . Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node Path unix 24 [ ] DGRAM 12831 /run/systemd/journal/dev-log unix 2 [ ACC ] STREAM LISTENING 24747 @/tmp/dbus-zH6clYmvw8 unix 2 [ ] DGRAM 26372 /run/user/1000/systemd/notify unix 2 [ ] DGRAM 23382 /run/user/121/systemd/notify unix 2 [ ACC ] SEQPACKET LISTENING 12839 /run/udev/control“Active Internet”部分列出了連線的外部連線和偵聽遠端連線請求的本地套接字。也就是說,它列出了已經(或將要)建立到外部裝置的網路連線。
“UNIX域”部分列出了已連線和正在偵聽的內部連線。換句話說,它列出了計算機中不同應用程式、程序和作業系統元素之間建立的連線。
“活動Internet”列包括:
對於TCP連線,狀態值可以是以下值之一:
“Unix域”列包括:
Unix域套接字型別可以是以下型別之一:
Unix域套接字狀態可以是以下狀態之一:
哇,這是很多資訊!許多netstat選項以某種或那樣的方式最佳化結果,但它們不會太多地更改內容。我們來看看。
netstat-a命令可以提供比您需要看到的更多的資訊。如果您只想或需要檢視TCP套接字,可以使用-t(TCP)選項將顯示限制為僅顯示TCP套接字。
netstat -at | less顯示量大大減少。列出的幾個套接字都是TCP套接字。
-u(UDP)和-x(UNIX)選項的行為方式類似,將結果限制為命令列上指定的套接字型別。下面是正在使用的-u(UDP)選項:
netstat -au | less僅列出UDP套接字。
要檢視處於偵聽或等待狀態的套接字,請使用-l(偵聽)選項。
netstat -l | less列出的套接字是處於偵聽狀態的套接字。
這可以與-t(TCP,-u(UDP)和-x(UNIX)選項相結合,以進一步在感興趣的套接字上使用。讓我們來查詢偵聽TCP套接字:
netstat -lt | less現在,我們只看到TCP偵聽套接字。
要檢視協議的統計資訊,請使用-s(statistics)選項並傳入-t(TCP)、-u(UDP)或-x(UNIX)選項。如果您只是單獨使用-s(statistics)選項,您將看到所有協議的統計資訊。讓我們檢查一下TCP協議的統計資訊。
netstat -st | lessTCP連線的統計資訊集合以較少的格式顯示。
使用套接字檢視程序的程序ID(PID)以及該程序的名稱非常有用。p(程式)選項就是這樣做的。讓我們看看對於使用處於偵聽狀態的TCP套接字的程序,PIDs和程序名是什麼。我們使用sudo來確保接收所有可用的資訊,包括通常需要root許可權的任何資訊。
sudo netstat -p -at以下是格式化表中的輸出:
Active Internet connecti*** (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 localhost:domain 0.0.0.0:* LISTEN 6927/systemd-resolv tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN 751/sshd tcp 0 0 localhost:ipp 0.0.0.0:* LISTEN 7687/cupsd tcp 0 0 localhost:**tp 0.0.0.0:* LISTEN 1176/master tcp6 0 0 [::]:ssh [::]:* LISTEN 751/sshd tcp6 0 0 ip6-localhost:ipp [::]:* LISTEN 7687/cupsd tcp6 0 0 ip6-localhost:**tp [::]:* LISTEN 1176/master我們有一個額外的列叫做“PID/program name”,這個列列出了使用每個套接字的程序的PID和名稱。
我們可以採取的另一個消除歧義的步驟是將本地和遠端地址顯示為IP地址,而不是它們的解析域名和主機名。如果使用-n(數字)選項,IPv4地址將以點十進位制格式顯示:
sudo netstat -an | lessIP地址顯示為數字值。還顯示了埠號,用冒號“:”與IP地址隔開。
IP地址127.0.0.1表示套接字繫結到本地計算機的環回地址。您可以將IP地址0.0.0.0視為本地地址的“預設路由”,外部地址的“任意IP地址”。顯示為“:”的IPv6地址也都是零地址。
可以很容易地檢查列出的埠,以瞭解其通常用途:
相關:127.0.0.1和0.0.0.0之間有什麼區別?
r(route)選項顯示核心路由表。
sudo netstat -r下面是整潔表格中的輸出:
Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface default Vigor.router 0.0.0.0 UG 0 0 0 enp0s3 link-local 0.0.0.0 255.255.0.0 U 0 0 0 enp0s3 192.168.4.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s3下面是這些列的含義:
標誌值可以是以下值之一:
如果我們透過grep管道傳輸netstat的輸出,我們就可以按名稱搜尋程序,並標識它正在使用的埠。我們使用前面使用的-a(all)、-n(numeric)和-p(program)選項,並搜尋“sshd”
sudo netstat -anp | grep "sshd"grep找到了目標字串,我們看到sshd守護程序正在使用埠22。
當然,我們也可以反過來做。如果我們搜尋“:22”,我們可以找出哪個程序正在使用該埠(如果有的話)。
sudo netstat -anp | grep ":22"這次grep找到“:22”目標字串,我們看到使用這個埠的程序是sshd守護程序,程序ID 751。
i(interfaces)選項將顯示netstat可以發現的網路介面表。
sudo netstat -i以下是更清晰的輸出:
Kernel Interface table Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg enp0s3 1500 4520671 0 0 0 4779773 0 0 0 BMRU lo 65536 30175 0 0 0 30175 0 0 0 LRU這就是這些列的含義:
這些標誌表示以下內容:
簡單地說,多播傳輸使資料包只發送一次,而不管接收者的數量如何。例如,對於像影片流這樣的服務,從傳送者的角度來看,這將極大地提高效率。
g(groups)選項使netstat列出每個介面上套接字的多播組成員身份。
sudo netstat -g這些列非常簡單:
route、ip、ifconfig和ss命令可以提供netstat能夠向您展示的許多內容。它們都是很棒的命令,值得一看。
我們將重點放在netstat上,因為它是普遍可用的,無論您使用的是哪種類似Unix的作業系統,甚至是不太熟悉的作業系統。
...殭屍的殭屍客戶端。 使用包嗅探器(例如netstat)來檢測指向同一個未識別地址的傳出流量。 ...
... 在本文中,我將向您展示如何在Linux上安裝、執行和使用PowerShell! ...
...也是免費的。不僅如此,你還可以自由地看看這些程式是如何**的。如果您有專業知識,您可以使用此程式碼建立自己的軟體。 ...
想在Linux系統上新增使用者但不知道如何新增?在Linux上使用命令列介面管理使用者無疑是一項複雜的工作。而對於初學者來說,即使新增新使用者也是一場噩夢。 ...
...引導到Linux並安裝它之前,您可能需要先備份檔案。無論如何,備份關鍵檔案總是個好主意。 相關:初學者的最佳Linux發行版 啟動媒體並在安裝前試用 建立介質後,您現在可以重新啟動Windows 7 PC,選擇建立的介質作為啟動裝置...
...些指南匯總到一個大列表中。 windows上linux入門 相關:如何在windows10上安裝和使用Linux Bash Shell 您可以在任何版本的windows10(包括windows10home)上安裝Linux環境和bashshell。但是,它確實需要64位版本的Windows10。您只需啟用Windows Subs...
...令列應用程式都能正常工作,因為這個特性並不完美。 如何在windows10上安**ash 相關:如何知道我執行的是32位還是64位Windows? 此功能在32位版本的Windows 10上不起作用,因此請確保您使用的是64位版本的Windows。無論如何,如果你...