利用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:顯示與每個協定有相關之連線、有相關之封包的統計紀錄(包括目前所開啟的連線數、接受到的封包數…等)。
留言列表