- 黑客攻防從入門到精通(實戰秘笈版)
- 九天科技
- 1367字
- 2019-10-14 11:49:30
1.3.2 使用命令查看系統的開放端口

通過了解系統開放端口的狀態變化,可以幫助我們更好地保護系統,防范黑客入侵,保證電腦安全??梢允褂胣etstat命令查看自己系統端口的狀態,了解系統當前開放了哪些端口。
使用netstat命令查看系統端口的具體操作方法如下:
01 選擇“運行”命令 右擊“開始”按鈕,選擇“運行”命令,如下圖所示。

02 執行cmd命令 彈出“運行”對話框,輸入cmd命令,單擊“確定”按鈕,如下圖所示。

03 輸入netstat命令 打開命令提示符窗口,輸入netstat -a -n命令,并按【Enter】鍵確認,如下圖所示。

04 查看結果 此時即可顯示本地及遠程的IP地址和相應的端口號,以及TCP協議連接狀態,如下圖所示。

TCP協議規定,對于已經建立的連接,網絡雙方要進行四次握手才能成功斷開連接,如果缺少了其中某個步驟,將會使連接處于假死狀態,連接本身占用的資源不會被釋放。網絡服務器程序要同時管理大量連接,所以很有必要保證無用連接完全斷開,否則大量僵死的連接會浪費許多服務器資源。了解TCP協議端口的連接狀態,對排除和定位網絡或系統故障會有很大幫助,下面對TCP端口的連接狀態進行簡單介紹。
1.LISTENING
提供某種服務,首先處于偵聽(LISTENING)狀態。當提供的服務沒有被連接時,處于LISTENING狀態,端口是開放的,等待被連接。
2.SYN_SENT(客戶端狀態)
SYN_SENT狀態表示請求連接,當要訪問其他電腦的服務時首先要發個同步信號給該端口,此時狀態為SYN_SENT,如果連接成功了就變為ESTABLISHED,此時SYN_SENT狀態非常短暫。但如果發現SYN_SENT非常多且在向不同的機器發出,那電腦可能中了沖擊波或震蕩波之類的病毒了。這類病毒為了感染其他電腦,會掃描其他電腦,在掃描的過程中會對每個要掃描的電腦發出同步請求,這也是出現許多SYN_SENT的原因。
3.SYN_RCVD(服務器端狀態)
在收到和發送一個連接請求后,等待服務器端對連接請求的確認,當服務器收到客戶端發送的同步信號時,將標志位ACK和SYN置1發送給客戶端,此時服務器端處于SYN_RCVD狀態,如果連接成功了就變為ESTABLISHED,正常情況下SYN_RCVD狀態非常短暫。
4.ESTABLISHED
ESTABLISHED狀態是表示兩臺電腦正在傳輸數據。
5.FIN-WAIT-1
等待遠程TCP連接中斷請求,或先前的連接中斷請求的確認,客戶端應用程序調用close,TCP發出FIN請求主動關閉連接,之后進入FIN_WAIT1狀態。
6.FIN-WAIT-2
從遠程TCP等待連接中斷請求,客戶端接到ACK后,進入了FIN-WAIT-2。這時在關閉連接時,客戶端和服務器兩次握手之后的狀態,就是半關閉的狀態了。在這個狀態下,應用程序可以接收數據,但無法發送數據。
7.CLOSE-WAIT
服務器端主動關閉連接或者網絡異常導致連接中斷,這時客戶端狀態會變成CLOSE_WAIT,此時客戶端調用close()函數,使連接正確關閉。
8.CLOSING
等待遠程TCP對連接中斷的確認,此狀態較少見。
9.LAST-ACK
等待原來發向遠程TCP的連接中斷請求的確認,被動關閉一段時間后,接收到文件結束符的應用程序將調用CLOSE關閉連接,TCP也發送一個FIN,等待對方的ACK,進入LAST-ACK。
10.TIME-WAIT

客戶端調用close()函數,給服務器端發送FIN,請求關閉連接;服務器端收到FIN后給Client返回確認ACK,同時關閉讀通道,此時不能再從這個連接上讀取數據,read返回0。服務器端的TCP狀態轉化為CLOSE_WAIT狀態。TCP協議規定TIME_WAIT狀態會一直持續2MSL(即兩倍的分段最大生存期,默認為4分鐘),以此來確保舊的連接狀態不會對新連接產生影響。處于TIME_WAIT狀態的連接占用的資源不會被內核釋放,所以作為服務器,在可能的情況下盡量不要主動斷開連接,以減少TIME_WAIT狀態造成的資源浪費。
11.CLOSED
服務器端接收到Client對自己的FIN的確ACK,關閉寫通道,TCP連接轉化為CLOSED,也就是關閉連接。如右圖所示為TCP在正常情況下建立與終止連接所對應的狀態。