netstat命令輸出詳解

1.說明

命令netstat用於查看Linux服務器上當前機器監聽的端口信息,
對應的查詢結果可以爲我們提供很多有用的信息,
如下是執行命令後的查詢結果:

netstat -nltp

2.Proto,Recv-Q,Send-Q等列

Proto:協議名

recv-Q:網絡接收隊列

表示收到的數據已在本地接收緩衝,但是還有多少沒有被進程取走,recv()。如果接收隊列Recv-Q一直處於阻塞狀態,可能是遭受了拒絕服務 denial-of-service 攻擊。

send-Q:網路發送隊列

對方沒有收到的數據或者說沒有Ack的,還是本地緩衝區.
如果發送隊列Send-Q不能很快的清零,可能是有應用向外發送數據包過快,或者是對方接收數據包不夠快。

recv-Q、send-Q這兩個值通常應該爲0,如果不爲0可能是有問題的。packets在兩個隊列裏都不應該有堆積狀態。可接受短暫的非0情況。

3.Local Address本地地址

  1. 127.0.0.1:port 表示只能本機訪問的端口,外網無法訪問,如127.0.0.1:8080:表示監聽本機IPv4的loopback地址的8080端口。如果某個服務只監聽了迴環地址,那麼只能在本機進行訪問,無法通過tcp/ip 協議進行遠程訪問 。
  2. 類似的::1:port對應IPv6,如::1:9000:表示監聽IPv6的迴環地址的9000端口,::1這個表示IPv6的loopback地址。
  3. 0.0.0.0:port 表示對外開放的IPv4端口,外網可訪問。
  4. :::port 表示對外開放的IPv6端口,外網可訪問,::: 這三個冒號:中,前兩個"::"是"0:0:0:0:0:0:0:0"的縮寫,表示IPv6的"0.0.0.0",第三個冒號:是IP和端口的分隔符

4.Foreign Address外部地址

與本機端口通信的外部socket,
顯示規則與 Local Address 相同,
一般都是0.0.0.0:*(IPv4)和:::*(IPv6)。

5. State 狀態

鏈路狀態,共有11種。state列共有12中可能的狀態,前面11種是按照TCP連接建立的三次握手和TCP連接斷開的四次揮手過程來描述的。

狀態參數主要有:

1) LISTEN:首先服務端需要打開一個socket進行監聽,狀態爲LISTEN。來自遠方TCP端口的連接請求
2) SYN_SENT:客戶端通過應用程序調用connect進行active open。於是客戶端tcp發送一個SYN以請求建立一個連接,狀態置爲SYN_SENT。在發送連接請求後等待匹配的連接請求
3) SYN_RECV:服務端應發出ACK確認客戶端的 SYN,同時自己向客戶端發送一個SYN,狀態置爲SYN_RECV。在收到和發送一個連接請求後等待對連接請求的確認
4) ESTABLISHED:代表一個打開的連接,雙方可以進行或已經在數據交互了。代表一個打開的連接,數據可以傳送給用戶
5) FIN-WAIT-1:主動關閉(active close)端應用程序調用close,於是其TCP發出FIN請求主動關閉連接,之後進入FIN_WAIT1狀態。等待遠程TCP連接中斷請求,或先前的連接中斷請求的確認
6) CLOSE-WAIT:被動關閉(passive close)端TCP接到FIN後,就發出ACK以迴應FIN請求(它的接收也作爲文件結束符傳遞給上層應用程序),並進入CLOSE_WAIT。等待從本地用戶發來的連接中斷請求
7) FIN-WAIT-2:主動關閉端接到ACK後,就進入了 FIN-WAIT-2。從遠程TCP等待連接中斷請求
8) LAST-ACK:被動關閉端一段時間後,接收到文件結束符的應用程序將調用CLOSE關閉連接。這導致它的TCP也發送一個 FIN,等待對方的ACK,這就進入了LAST-ACK。等待原來發向遠程TCP的連接中斷請求的確認
9) TIME-WAIT:在主動關閉端接收到FIN後,TCP 就發送ACK包,並進入TIME-WAIT狀態。等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認
10) CLOSING:比較少見。等待遠程TCP對連接中斷的確認
11) CLOSED:被動關閉端在接受到ACK包後,就進入了closed的狀態。鏈接結束,沒有任何連接狀態
12) UNKNOWN:未知的Socket狀態

狀態參數補充:

SYN:同步序列編號(Synchronize Sequence Numbers),該標誌只在三次握手建立TCP連接時有效,表示一個新的TCP連接請求
ACK:確認編號(Acknowledgement Number),是對TCP請求的確認標誌,同時提示對端系統已成功接收所有數據
FIN:結束標誌(Finish),用來結束一個TCP對話,但對應端口仍處於開放狀態,等待接收後續數據

6. PID/Program

PID即進程id,Program即使用該socket的應用程序

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章