防黑必備技能之端口篇

如何查看端口占用情況

我們分windows和linux兩種不同的平臺分別介紹。

一、windows平臺

在windows平臺下,查看端口占用情況,最常見的DOS命令就是NETSTAT命令。

打開運行-->輸入“CMD”回車。(如何打開運行,就不用我多說了吧,在開始菜單點右鍵,選擇菜單中的“運行”)

防黑必備技能之端口篇

我們可以先查看一下netstat命令的用法:

在提示符下輸入 :netstat /?

防黑必備技能之端口篇

上面顯示的各個參數的含義和用法,查看端口情況,最常用的參數是-a,-n和-o。如果不使用任何參數,則只顯示當前活動的連接(TCP連接)

我們先以-a為例來看一下執行後的效果(截圖為部分內容),-a表示顯示所有連接和偵聽端口(包括TCP和UDP):

防黑必備技能之端口篇

防黑必備技能之端口篇

防黑必備技能之端口篇

下面我們簡單介紹一下這個命令的輸出結果:

輸入netstat -a的命令後,輸出結果為四列,顯示的當前所有連接和偵聽的端口信息。

第一列為協議,主要是TCP的端口占用情況和UDP的端口占用情況。

第二列為本地地址和端口。

第三列為外部地址和端口。

然後解釋幾個大家可能看不明白的地方。

首先大家可能好奇activate和0.0.0.0是什麼鬼?

這裡解釋一下:

1、0.0.0.0代表本機上可用的任意地址。 比如0.0.0.0:135 表示本機上所有地址的135端口,這樣多ip計算機就不用重複顯示了。

2、TCP 0.0.0.0:80表示在所有的可用接口上監聽TCP80端口

3、0.0.0.0為默認路由,即要到達不再路由表裡面的網段的包都走0.0.0.0這條規則

在本地地址顯示為0.0.0.0,如果使用-a參數,外部地址顯示為activate,如果使用-an參數,則外部地址也顯示為0.0.0.0

然後127.0.0.1就是表示你本機ip地址的意思了。

可能有同學會問,activate是什麼意思?其實activate和0.0.0.0是一樣的,就像127.0.0.1,外部地址顯示為guyanbing(我的機器名),http,就表示80端口,https:就表示443端口。如果加上-n參數,則會顯示為127.0.0.1,80和443。因為-n參數的意思就是以數字的形式顯示IP和端口號。這也是-a和-an兩個參數的區別。

-an參數 -a參數

0.0.0.0 activate

127.0.0.1 guyanbing(機器名)

443 https

80 http

防黑必備技能之端口篇

這裡的命令為什麼要用-an,而不是-n呢?因為如果不加-a這個參數,那麼只會顯示當前已經建立連接的端口情況,而不會顯示所有的端口情況,處於監聽狀態(LISTENING) 的端口是顯示不出來的。

防黑必備技能之端口篇

192.168.0.101就是表示當前網卡上的IP地址,這個大家都明白。

然後[::]、[::1]和[fe80::7c54:4a4c:9eb1:40e8%20]又是什麼鬼呢?

其實這個是指本機的IPV6址。你可以使用ipconfig /all命令查看本機的IPV6地址信息,如下圖:

防黑必備技能之端口篇

以筆者本機為例,對應關係如下:

IPV4 IPV6

0.0.0.0 [::]

127.0.0.1 [::1]

192.168.0.101 [fe80::7c54:4a4c:9eb1:40e8%20]

在HOSTS文件(位於C:\\Windows\\System32\\drivers\\etc目錄下)中可以查看。

防黑必備技能之端口篇

可能有同學問了,*:* 是什麼意思?為什麼所有UDP協議的外部連接都是*:*呢?

大家都知道,在計算機中,*是一個通配符,可以表示任意字符,所以這裡的*:*就表示任意地址和任意端口。

那為啥只有UDP協議中是*:*呢?

這是因為TCP協議和UDP協議是不一樣的,TCP協議是一個握手協議,必須要跟遠端的一個地址和端口建立建立連接,所以一定是一個確定的地址和端口。就像打電話,必須要有確定的遠端的電話號碼才可以通話。

而UDP是一個廣播協議,不需要跟遠端建立連接,所以並沒有確定的地址和端口。

關於TCP和UDP的區別,我會在之後的文章可詳細介紹,不是本文和重點。

第四列是狀態,顯示當前端口處於什麼狀態

大家可以看到,這裡的狀態只是指的TCP連接的狀態,因為對於UDP協議而言,是不需要狀態的。在狀態部分有不同的單詞,分別表示什麼意思呢?我們分別介紹一下:

LISTENING:(Listening for a connection.)偵聽來自遠方的TCP端口的連接請求

SYN-SENT:(Active; sent SYN. Waiting for a matching connection request after having sent a connection request.)再發送連接請求後等待匹配的連接請求

SYN-RECEIVED:(Sent and received SYN. Waiting for a confirming connection request acknowledgment after having both received and sent connection requests.)再收到和發送一個連接請求後等待對方對連接請求的確認

ESTABLISHED:(Connection established.)代表一個打開的連接

FIN-WAIT-1:(Closed; sent FIN.)等待遠程TCP連接中斷請求,或先前的連接中斷請求的確認

FIN-WAIT-2:(Closed; FIN is acknowledged; awaiting FIN.)從遠程TCP等待連接中斷請求

CLOSE-WAIT:(Received FIN; waiting to receive CLOSE.)等待從本地用戶發來的連接中斷請求

CLOSING:(Closed; exchanged FIN; waiting for FIN.)等待遠程TCP對連接中斷的確認

LAST-ACK:(Received FIN and CLOSE; waiting for FIN ACK.)等待原來的發向遠程TCP的連接中斷請求的確認

TIME-WAIT:(In 2 MSL (twice the maximum segment length) quiet wait after close. )等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認

CLOSED:(Connection is closed.)沒有任何連接狀態

關於netstat命令的具體使用,我們在之後發佈的《防黑必備技能之端口篇(3)》中會有更詳細的介紹,敬請關注。

另外這些狀態跟TCP/IP協議密切相關,大家如果想要了解這些狀態的具體含義,最好還是先了解一下TCP/IP協議,這不是本節的重點,所以不做具體介紹,之後應該會有相關的文章專門去講這方面的知識。

二、LINUX平臺

在LINUX平臺下,我們有三種方式確定某一端口的佔用情況:

1、使用LSOF命令。

注意,為了顯示更多內容,最好使用ROOT帳號登錄。比如要查看80端口的使用情況,應在命令行窗口輸入lsof -i:80,如果沒有顯示內容,則表示該端口未開放,如果開放,則會顯示相應信息,如下圖:

防黑必備技能之端口篇

2、使用netstat命令

netstat命令各個參數說明如下:

-t : 指明顯示TCP端口

-u : 指明顯示UDP端口

-l : 僅顯示監聽套接字(所謂套接字就是使應用程序能夠讀寫與收發通訊協議(protocol)與資料的程序)

-p : 顯示進程標識符和程序名稱,每一個套接字/端口都屬於一個程序。

-n : 不進行DNS輪詢,顯示IP(可以加速操作) 即可顯示當前服務器上所有端口及進程服務,於grep結合可查看某個具體端口及服務情況

netstat -ntlp //查看當前所有tcp端口·

netstat -ntulp |grep 80 //查看所有80端口使用情況·

netstat -an | grep 3306 //查看所有3306端口使用情況·

如圖:查看所有端口的連接情況:netstat -aptn

防黑必備技能之端口篇

查看所有的UDP連接:netstat -nupl

防黑必備技能之端口篇

查看所有的TCP連接:netstat -ntpl

防黑必備技能之端口篇

注:LINUX平臺內容和圖片來自互聯網,如有侵權請私信告之。

除了上面講到的在WINDOWS和linux平臺下查看端口占用情況的方法之外,還有一個命令也可以查看端口打開情況,那就是TELNET命令。

這個命令主要是測試遠程電腦指定的端口是否打開,使用格式如下:

telnet ip 端口 (如果不寫端口,默認連接23號端口)

例:

測試本機23端口:telnet 127.0.0.1 23 或者telnet 127.0.0.1

測試指定電腦的80端口:telnet 10.0.0.27 80

不過這個命令並不是windows的內部命令,需要安裝該服務才可以使用該命令,TELNET服務端和客戶端,在WIN7\\WIN8\\win10中都默認沒有安裝該客戶端功能。所以如果在命令行下直接執行該命令,會提示不是內部或外部命令。這是你需要安裝該服務才可以。

防黑必備技能之端口篇

防黑必備技能之端口篇

防黑必備技能之端口篇

而服務器端也需要安裝telnet服務才可以訪問,絕大多數的服務器都關閉了TELNET服務和23端口,所以這個在實際應用中用的並不是太多。大家瞭解一下就好了。


分享到:


相關文章: