參數
-a (all) 顯示所有選項,默認不顯示LISTEN相關。
-t (tcp) 僅顯示tcp相關選項。
-u (udp) 僅顯示udp相關選項。
-n 拒絕顯示別名,能顯示數字的全部轉化成數字。
-l 僅列出有在 Listen (監聽) 的服務狀態。
-p 顯示建立相關鏈接的程序名
-r 顯示路由信息,路由表
-e 顯示擴展信息,例如uid等
-s 按各個協議進行統計
-c 每隔一個固定時間,執行該netstat命令。
LISTEN和LISTENING的狀態只有用-a或者-l才能看到。
常用命令
netstat -an -n 拒絕顯示別名,能顯示數字的全部轉化成數字。
netstat輸出內容詳解
1 列出所有tcp和udp端口
netstat -tulnp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1904/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1750/cupsd
tcp 0 0 0.0.0.0:44567 0.0.0.0:* LISTEN 1713/rpc.statd
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 1965/zabbix_agentd
tcp 0 0 172.172.230.211:3306 0.0.0.0:* LISTEN 31849/mysqld
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1576/rpcbind
tcp 0 0 172.172.230.211:46327 172.172.100.3:80 TIME_WAIT -
tcp 0 0 172.172.230.211:46329 172.172.100.3:80 TIME_WAIT -
tcp 0 52 172.172.230.211:22 172.172.173.222:50043 ESTABLISHED 6095/sshd
tcp 0 0 172.172.230.211:46326 172.172.100.3:80 TIME_WAIT -
tcp 0 0 172.172.230.211:5401 172.172.100.3:443 TIME_WAIT -
tcp 0 0 :::22 :::* LISTEN 1904/sshd
tcp 0 0 ::1:631 :::* LISTEN 1750/cupsd
tcp 0 0 :::11776 :::* LISTEN 1713/rpc.statd
tcp 0 0 :::10050 :::* LISTEN 1965/zabbix_agentd
tcp 0 0 :::111 :::* LISTEN 1576/rpcbind
2.命令輸出結果詳解
2.1Proto:協議名(tcp協議還是udp協議)
2.2recv-Q:網絡接收隊列,send-Q:網路發送隊列
2.2.1recv-Q:網絡接收隊列
表示收到的數據已經在本地接收緩沖,但是還有多少沒有被進程取走,recv()如果接收隊列Recv-Q一直處於阻塞狀態,可能是遭受了拒絕服務 denial-of-service 攻擊。
2.2.2send-Q:網路發送隊列
對方沒有收到的數據或者說沒有Ack的,還是本地緩沖區.如果發送隊列Send-Q不能很快的清零,可能是有應用向外發送數據包過快,或者是對方接收數據包不夠快。
2.2.3recv-Q和send-Q分析
這兩個值通常應該為0,如果不為0可能是有問題的。packets在兩個隊列里都不應該有堆積狀態。可接受短暫的非0情況
2.3Local Addres解釋
2.3.1 Local Address 部分的0.0.0.0:3306 表示監聽服務器上所有ip地址的3306端口。
2.3.2 :::80 這個也表示監聽本地所有ip的80端口,跟上面的區別是這里表示的是IPv6地址,上面的0.0.0.0表示的是本地所有IPv4地址。
注:“:::” 這三個: 的前兩個"::",是"0:0:0:0:0:0:0:0"的縮寫,相當於IPv6的"0.0.0.0",就是本機的所有IPv6地址,第三個:是IP和端口的分隔符
2.3.3 127.0.0.1:631 這個表示監聽本機的loopback地址的631端口(如果某個服務只監聽了回環地址,那么只能在本機進行訪問,無法通過tcp/ip 協議進行遠程訪問)
2.4 Foreign Address
與本機端口通信的外部socket。顯示規則與Local Address相同
2.5 State
state列共有12中可能的狀態,前面11種是按照TCP連接建立的三次握手和TCP連接斷開的四次揮手過程來描述的。
狀態 | 描述 |
---|---|
LISTEN | 首先服務端需要打開一個socket進行監聽,狀態為LISTEN./* The socket is listening for incoming connections. 偵聽來自遠方TCP端口的連接請求 */ |
SYN_SENT | 客戶端通過應用程序調用connect進行active open.於是客戶端tcp發送一個SYN以請求建立一個連接.之后狀態置為SYN_SENT./*The socket is actively attempting to establish a connection. 在發送連接請求后等待匹配的連接請求 */ |
SYN_RECV | 服務端應發出ACK確認客戶端的 SYN,同時自己向客戶端發送一個SYN. 之后狀態置為SYN_RECV/* A connection request has been received from the network. 在收到和發送一個連接請求后等待對連接請求的確認 */ |
ESTABLISHED | 代表一個打開的連接,雙方可以進行或已經在數據交互了。/* The socket has an established connection. 代表一個打開的連接,數據可以傳送給用戶 */ |
FIN_WAIT1 | 主動關閉(active close)端應用程序調用close,於是其TCP發出FIN請求主動關閉連接,之后進入FIN_WAIT1狀態./* The socket is closed, and the connection is shutting down. 等待遠程TCP的連接中斷請求,或先前的連接中斷請求的確認 */ |
CLOSE_WAIT | 被動關閉(passive close)端TCP接到FIN后,就發出ACK以回應FIN請求(它的接收也作為文件結束符傳遞給上層應用程序),並進入CLOSE_WAIT./* The remote end has shut down, waiting for the socket to close. 等待從本地用戶發來的連接中斷請求 */ |
FIN_WAIT2 | 主動關閉端接到ACK后,就進入了 FIN-WAIT-2 ./* Connection is closed, and the socket is waiting for a shutdown from the remote end. 從遠程TCP等待連接中斷請求 */ |
LAST_ACK | 被動關閉端一段時間后,接收到文件結束符的應用程 序將調用CLOSE關閉連接。這導致它的TCP也發送一個 FIN,等待對方的ACK.就進入了LAST-ACK ./* The remote end has shut down, and the socket is closed. Waiting for acknowledgement. 等待原來發向遠程TCP的連接中斷請求的確認 */ |
TIME_WAIT | 在主動關閉端接收到FIN后,TCP 就發送ACK包,並進入TIME-WAIT狀態。/* The socket is waiting after close to handle packets still in the network.等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認 */ |
CLOSING | 比較少見./* Both sockets are shut down but we still don’t have all our data sent. 等待遠程TCP對連接中斷的確認 */ |
CLOSED | 被動關閉端在接受到ACK包后,就進入了closed的狀態。連接結束./* The socket is not being used. 沒有任何連接狀態 */ |
UNKNOWN | 未知的Socket狀態。/* The state of the socket is unknown. */ |
備注
SYN: (同步序列編號,Synchronize Sequence Numbers)該標志僅在三次握手建立TCP連接時有效。表示一個新的TCP連接請求。
ACK: (確認編號,Acknowledgement Number)是對TCP請求的確認標志,同時提示對端系統已經成功接收所有數據。
FIN: (結束標志,FINish)用來結束一個TCP回話.但對應端口仍處於開放狀態,准備接收后續數據。
2.6 PID/Program name
PID即進程id,Program即使用該socket的應用程序
舉例
協議 本地地址 外部地址 狀態
TCP 10.2.6.170:49535 123.125.45.82:5222 ESTABLISHED
協議(Proto):TCP,指是傳輸層通訊協議
本地機器名(LocalAddress)
遠程機器名(ForeignAddress)123.125.45.82
遠程端口:5222
狀態:ESTABLISHED
狀態列表
LISTEN :在監聽狀態中。
ESTABLISHED:已建立聯機的聯機情況。
TIME_WAIT:該聯機在目前已經是等待的狀態。
netstat-na
/ -n 打印實際地址,而不是對地址的解釋或者顯示主機,網絡名之類的符號,就是以數字方式來顯示。
/ -a 顯示所有套接字的狀態。
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
LISTENING 表示主機對外開放了445端口,並且允許任意的外部地址來進行連接
Listening 表示端口處於偵聽狀態,就是說端口是開放的,等待連接
但還沒有被連接。
10.2.6.170:49939 112.90.142.20:80 TIME_WAIT
TIME_WAIT的意思是結束了這次連接。
UDP 0.0.0.0:123 表示本機可以和互聯網上的任何一台主機建立連接