close

按此前往linux完整教學目錄

 

 

利用netstat指令,查詢主機目前的連線狀態:

(1) 查詢路由:

netstat -r:與route指令功用相同,會顯示路由表。

netstat -rn:與route -n 指令功用相同,會顯示路由表。而顯示時,只需顯示往段的IP位址,而非顯示網域名稱。這樣節省連線時間。

(2) 查詢主機連線狀態,寫法為:

netstat 選項

其顯示結果分成兩部分,第一部分是以Active Internet connections (w/o servers)為開頭,表示主機對網際網路的連線狀態;第二部分是以Active UNIX domain sockets (w/o servers)開頭,表示主機內部的各個程式的聯絡狀態,與網路連線無關。

在此,僅討論與網路連線有關的第一部分。

第一部分顯示的資訊預設為包含六個項目,各項目的名稱會顯示出來,如:

Proto Recv-Q Send-Q Local Address         Foreign Address       State

各項目名稱之下,每一行代表一個連線。各項目說明如下:

Proto:表示此連線所使用的協定名稱。

Recv-Q:遠端主機連線到本機,並將封包傳送到本機時,封包會被暫存到本機的「接收佇列(receive queue)」中,而本機再從這個接受佇列拿取封包。這個Recv-Q項目,就是指目前接收佇列內的資料容量(單位為byte)。要注意,封包被暫存到本機的接收佇列中、直到封包被本機取走,所花的時間極其短暫(通常是幾個毫秒),因此使用netstat時,Recv-Q的值通常為0。若長時間偵測到Recv-Q值不為0,便有可能是受到「阻斷服務攻擊(denial of service)」。(此敘述宜複審)

Send-Q:本機將封包傳送到遠端主機之時,封包會被同時複製到本機的「發送佇列(send queue)」中,待本機獲得遠端的「確認(acknowledgement) 」,便將發送佇列中的封包清除。這個Send-Q項目,就是指目前發送佇列內的資料容量(單位為byte)。此項目之值時常為0(此敘述宜複審)

Local Address:表示此連線在本機的IP位址和埠口號。以socket(IP位址:埠口號)的方式表示。

Foreign Address:表示此連線在遠端的IP位址和埠口號。以socket(IP位址:埠口號)的方式表示。

State:該連線的連線狀態。常見的值有:

ESTABLISHED:表示該條連線已經建立。

SYN_SEND:表示本機正在發出一個SYN封包,請求對方建立連線。

SYN_RECV:表示遠端正在發出一個SYN封包,請求本機建立連線。

FIN_WAIT1:表示此連線正在結束當中,且socket已經關閉。

FIN_WAIT2:表示此連線已經結束,而socket正在關閉當中。

TIME_WAIT:在四向交握完成之後,會等待一小段時間再關閉連線。TIME_WAIT表示正處於這一小段時間當中。

LISTEN:表示該條連線正在被本機「傾聽」之中。也就是說,該條連線並沒有建立,而是本機在等待著是否有遠端提出建立連線的請求。

(2) netstat 選項 之中,選項有:

-a:顯示所有State的連線(預設並不顯示所有State的連線)

-n:表示顯示時,只需顯示節點的IP位址,而不要顯示網域名稱。

-t:只顯示使用TCP協定之連線的狀態。

-u:只顯示使用UDP協定之連線的狀態。

-l:只顯目前正在被「傾聽」中之連線的狀態。

-p:顯示該連線所提供之服務,在本機上對應到的PID和程序名稱。會在顯示時多出一個項目,名稱為PID/program name

-c N:每隔N秒,再顯示一次netstat指令的查詢結果。

(3) netstat -s:顯示與每個協定有相關之連線、有相關之封包的統計紀錄(包括目前所開啟的連線數、接受到的封包數)

 

 

上一篇:linux traceroute

下一篇:linux 查詢節點

arrow
arrow
    文章標籤
    linux 教學 netstat 網管
    全站熱搜
    創作者介紹
    創作者 埃伯 的頭像
    埃伯

    程式語言教學

    埃伯 發表在 痞客邦 留言(0) 人氣()