Windows Server入门系列之十六 端口、连接与端口扫描
端口與連接是網(wǎng)絡(luò)中兩個非常基礎(chǔ)的概念,本篇博文將介紹相關(guān)的一些基礎(chǔ)知識。
1.端口
我們在學(xué)習網(wǎng)絡(luò)技術(shù)時經(jīng)常會提到80端口、21端口等,這些端口到底指的是什么呢?要注意,它們可不是像路由器或交換機上的那些物理接口,而是一些純粹的邏輯接口,也就是說,它們都是操作系統(tǒng)里面的概念。
端口其實就是應(yīng)用層的程序與傳輸層的TCP或UDP協(xié)議之間聯(lián)系的通道。
根據(jù)TCP/IP模型,所有的應(yīng)用層程序所產(chǎn)生的數(shù)據(jù),都要向下交給傳輸層去繼續(xù)處理。傳輸層的協(xié)議只有兩個:可靠的TCP和不可靠的UDP。而應(yīng)用層的協(xié)議可是多種多樣,如負責網(wǎng)頁瀏覽的http、負責文件傳輸?shù)膄tp、負責郵件發(fā)送和接收的smtp、pop3等。
我們的操作系統(tǒng)又允許同時運行多個程序,這就產(chǎn)生了一個問題:傳輸層的協(xié)議如何來區(qū)分它所接收到的數(shù)據(jù)到底是由應(yīng)用層的哪個協(xié)議產(chǎn)生的呢?所以就必須得提供一種機制以使傳輸層協(xié)議能夠區(qū)分開不同的應(yīng)用層程序。這個機制就是端口。
每個端口都對應(yīng)著一個應(yīng)用層的程序,當一個應(yīng)用程序要與遠程主機上的應(yīng)用程序通信時,傳輸層協(xié)議就為該應(yīng)用程序分配一個端口,不同的應(yīng)用程序有著不同的端口,以使來往的數(shù)據(jù)互不干擾。
每個端口都有一個唯一的編號,在TCP/IP協(xié)議中是用一個16位的二進制數(shù)來為端口編號,所以端口號的取值范圍為0~65535。這其中0端口未用,為了合理地分配使用端口,對它們進行了以下分類:
-
1~1023之間的端口固定地分配給一些常用的應(yīng)用程序,稱為固定端口。如http采用80端口,FTP采用21端口,Telnet采用23端口等。
-
1024~65535之間的端口隨機的分配給那些發(fā)出網(wǎng)絡(luò)連接請求的應(yīng)用程序,稱為隨機端口,比如1024端口就是分配給第一個向系統(tǒng)發(fā)出申請訪問網(wǎng)絡(luò)的程序,程序關(guān)閉之后就會釋放所占用的端口,然后可以再分配給其它程序使用。
另外根據(jù)所使用的傳輸層協(xié)議不同,端口又可以分為TCP端口和UDP端口兩種類型。所以對端口的準確描述應(yīng)該是:傳輸層協(xié)議+端口號。如HTTP默認使用TCP的80端口,FTP默認使用TCP的21端口,SMTP默認使用TCP的25端口,POP3默認使用TCP的110端口,HTTPS默認使用TCP的443端口,DNS使用UDP的53端口,遠程桌面協(xié)議(RDP)默認使用TCP的3389端口,telnet使用TCP的23端口,Windows訪問共享資源使用TCP的445端口等。對于這些常見的固定端口我們應(yīng)該熟記。
2.連接
當我們在電腦上打開瀏覽器訪問一個網(wǎng)站(比如百度)時,這就要用到http協(xié)議,剛才提到http使用的是tcp的80端口,那么是否就是要在我們的電腦(客戶端)和百度服務(wù)器(服務(wù)器端)都開放TCP80端口,然后通過它來傳送數(shù)據(jù)呢?
其實不然,所謂的固定端口,主要是在服務(wù)器端使用,即百度服務(wù)器使用的是TCP80端口,而我們客戶端使用的則是隨機端口。原因很簡單,我們打開瀏覽器后,很可能要訪問很多個不同的網(wǎng)站,如果客戶端只使用一個TCP80端口,那么如何來區(qū)分這些不同的網(wǎng)站呢?
所以實際情況是:所有的網(wǎng)站服務(wù)器端都開放TCP80端口,而我們客戶端每訪問一個網(wǎng)站,就會開放一個隨機端口去與它們的TCP80端口進行連接。這樣在客戶端就通過不同的端口號將這些網(wǎng)站區(qū)分開了。
客戶端和服務(wù)器端之間的通信,數(shù)據(jù)必須要通過各自的端口發(fā)送和接收。因此就可以把它們之間的通信看做在兩個端口之間建立起來的邏輯通道上進行數(shù)據(jù)交換,這個邏輯通道就稱做“連接”。
比如上圖中的ClientA就通過TCP1234端口與Server的TCP80端口之間建立了一個連接;ClientB通過TCP1234端口與Server的TCP21端口之間建立了一個連接。
對于服務(wù)器來說,只要是發(fā)往自己TCP80端口的數(shù)據(jù),就交給Web服務(wù)去處理;只要是發(fā)往自己TCP21端口的數(shù)據(jù),就交給FTP服務(wù)去處理。
連接的建立有兩種模式:主動連接和被動連接。主動連接是指當端口開啟之后,進程通過該端口主動發(fā)出連接請求,進而建立的連接;被動連接則是當端口開啟之后,進程在該端口等待別的計算機發(fā)來的連接請求,最終所建立的連接。
在客戶端/服務(wù)器模式的網(wǎng)絡(luò)架構(gòu)下,連接的建立一般都是由客戶端申請一個動態(tài)端口發(fā)起主動連接,而服務(wù)器端則要一直開放相應(yīng)的固定端口,然后等待與客戶端建立被動連接。
3.查看端口與連接
如何查看電腦中開放的端口或已經(jīng)建立好的連接呢?最簡單易行的方法是利用系統(tǒng)中自帶的netstat命令。netstat命令的用法比較多,這里主要用到兩個參數(shù):-a和-n,而且這兩個參數(shù)通常都是結(jié)合在一起使用的:“netstat–an”。
-a參數(shù)的作用是顯示所有活動的TCP連接以及計算機偵聽的TCP和UDP端口,-n參數(shù)的作用是以數(shù)字的形式顯示地址和端口(也就是顯示IP地址,否則是顯示計算機的名字)。
比如,我們先在瀏覽器中打開百度的網(wǎng)頁,然后執(zhí)行“pingwww.baidu.com”命令解析出百度的IP地址61.135.169.105,接下來執(zhí)行“netstat-an”命令,從中找到我們與百度之間所建立的連接。
上圖中標記出來的部分,10.12.13.160是我本機的IP,它后面的端口號50977就是我這臺客戶端開放的隨機端口;61.135.169.105:80,代表百度服務(wù)器及它的TCP80端口,最后面的ESTABLISHED表示這是一個已經(jīng)建立好的連接。
通過“netstat-an”命令,不僅可以查看連接,而且還可以查看我們的電腦開放了哪些端口
上圖中最后的狀態(tài)為“LISTENING"(監(jiān)聽)的記錄中所包含的端口號,就是我們目前所開放的端口。
這些端口隨時在等待別的計算機與它建立連接,也就是說它們在隨時等待為其它計算機提供服務(wù),比如其中的TCP445端口就是用來提供文件共享服務(wù)的。
在”netstat-an“命令的執(zhí)行結(jié)果中,”本地地址“部分可能會有三種不同的表現(xiàn)形式:本機IP、0.0.0.0和127.0.0.1。
-
本機IP后面的端口一般都是由用戶所運行的應(yīng)用程序打開的,比如打開了瀏覽器,就會打開了一個1024之后的隨機端口。
-
0.0.0.0表示的是本機默認所開放的端口,這些端口一般都是由一些系統(tǒng)服務(wù)默認開啟的,不過也可以關(guān)閉,比如135端口就是由WMI(“MicrosoftWindows管理規(guī)范”)服務(wù)開啟的,可以方便用戶對計算機進行遠程管理。這些默認開放的端口它們所對應(yīng)的外部地址一般也都是0.0.0.0,即表示它們對所有的外部機器開放,它們的狀態(tài)一般為Listening,處于監(jiān)聽狀態(tài)。
-
127.0.0.1后面的端口通常都是由一些需要調(diào)用本地服務(wù)的程序開啟的,后面的外部地址一般也都為127.0.0.1。
“狀態(tài)”部分,最常見的兩種狀態(tài)為:”Listening“(監(jiān)聽)、”Established“(已建立)。除此之外,還有很多其它不同的狀態(tài),這些狀態(tài)通常都與建立TCP連接的三次握手過程密切相關(guān)。
4.端口掃描
在網(wǎng)絡(luò)入侵或網(wǎng)絡(luò)安全檢測的過程中,端口掃描都是比較重要的一個步驟。通過端口掃描,一方面可以了解目標計算機開放了哪些端口,每個端口都對應(yīng)了一種服務(wù),因而可以根據(jù)相應(yīng)的服務(wù)有針對性的展開入侵;另一方面,通過查看自身計算機開放了哪些端口,也可以發(fā)現(xiàn)安全隱患。
端口掃描類的工具特別多,一些工具比較簡單,如L-ScanPort,設(shè)置好要掃描的IP地址范圍以及端口列表,就可以對指定網(wǎng)段內(nèi)的計算機進行掃描。
還有一類掃描軟件的功能比較強大,除了能夠掃描開放端口之外,一般還兼具弱口令猜解的功能,如X-Scan。
在X-Scan的掃描參數(shù)中可以設(shè)置掃描的IP地址范圍以及掃描模塊。
如果目標計算機存在漏洞,則會直接得到掃描結(jié)果。
本文轉(zhuǎn)自 yttitan 51CTO博客,原文鏈接:http://blog.51cto.com/yttitan/1301143
總結(jié)
以上是生活随笔為你收集整理的Windows Server入门系列之十六 端口、连接与端口扫描的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ThoughtWorks代码挑战——Fi
- 下一篇: LeakCanary: 让内存泄露无所遁