端口號檢視原始碼討論檢視歷史
所謂的端口,就好像是門牌號一樣,客戶端可以通過ip地址找到對應的服務器端,但是服務器端是有很多端口的,每個應用程序對應一個端口號,通過類似門牌號的端口號,客戶端才能真正的訪問到該服務器。為了對端口進行區分,將每個端口進行了編號,這就是端口號 [1] 。
簡介
在網絡技術中,端口包括邏輯端口和物理端口兩種類型。物理端口是用於連接物理設備之間的接口,如ADSL Modem、集線器、交換機、路由器上用於連接其他網絡設備的接口,如RJ-45端口、SC端口等等 [2] 。邏輯端口是指邏輯意義上用於區分服務的端口,比如用於瀏覽網頁服務的80端口,用於FTP服務的21端口等。如TCP/IP協議中的服務端口,通過不同的邏輯端口來區分不同的服務。一個IP地址的端口通過16bit進行編號,最多可以有65536個端口 [3] 。端口是通過端口號來標記的,端口號只有整數,範圍是從0到65535 [4] 。
作用
端口號的主要作用是表示一台計算機中的特定進程所提供的服務。網絡中的計算機是通過IP地址來代表其身份的,它只能表示某台特定的計算機,但是一台計算機上可以同時提供很多個服務,如數據庫服務、FTP服務、Web服務等,我們就通過端口號來區別相同計算機所提供的這些不同的服務,如常見的端口號21表示的是FTP服務,端口號23表示的是Telnet服務端口號25指的是SMTP服務等。端口號一般習慣為4位整數,在同一台計算機上端口號不能重複,否則,就會產生端口號衝突這樣的例外 [5] 。
使用規則
TCP與UDP段結構中端口地址都是16比特,可以有在0---65535範圍內的端口號。對於這65536個端口號有以下的使用規定 :
(1)端口號小於256的定義為常用端口,服務器一般都是通過常用端口號來識別的。任何TCP/IP實現所提供的服務都用1---1023之間的端口號,是由ICANN來管理的;端口號從1024---49151是被註冊的端口,也成為「用戶端口」,被IANA指定為特殊服務使用;
(2)客戶端只需保證該端口號在本機上是唯一的就可以了。客戶端端口號因存在時間很短暫又稱臨時端口號 ;
(3)大多數TCP/IP實現給臨時端口號分配1024---5000之間的端口號。大於5000的端口號是為其他服務器預留的 [6] 。
UNIX常用端口號
UNIX操作系統因具有運行穩定、系統要求低、安全性高,而得到廣泛應用。其伯克利套接字,發展較早,具有鮮明特點,例如:UNIX系統有保留端口號的概念。只有具有超級用戶特權的進程才允許給它自己分配一個保留端口號,這些端口號介於1~1023之間,一些應用程序將它作為客戶與服務器之間身份認證的一部分。大多數TCP/IP實現給臨時端口分配1024~5000之間的端口號。大於5000的端口與是為其他服務器預留的(Internet上並不常用的服務) [7] 。
查看端口號
當一台服務器有大量的端口在使用,有兩種方式來查看端口: 一種是利用系統內置的命令,一種是利用第三方端口掃描軟件。
1.用「netstat 」查看端口狀態
在Windows中,可以在命令提示符下使用「netstat 」查 看系統端口狀態,可以列出系統正在開放的端口號及其狀態。
2.用第三方端口掃描軟件
第三方端口掃描軟件有許多,界面雖然千差萬別,但是功能卻是類似的。這裡以「Fport」 (可到?type_t=7或下載)為例講解。「Fport」在命令提示符下使用,運行結果 與「netstat -an」相似,但是它不僅能夠列出正在使用的端口號及類型,還可 以列出端口被哪個應用程序使用。
3.用「netstat -n」命令,以數字格式顯示地址和端口信息。
如果仔細檢查這些標準的簡單服務以及其他標準的TCP/IP服務(如Telnet、FTP、 SMTP等)的端口號時,我們發現它們都是奇數。這是有歷史原因的,因為這些端口號都是從NCP端口號派生出來的(NCP,即網絡控制協議,是ARPANET的運輸層協議,是TCP的前身)。NCP是半雙工的,不是全雙工的,因此每個應用程序需要兩個連接,需預留一對奇數和偶數端口號。當TCP和UDP成為標準的運輸層協議時,每個應用程序只需要一個端口號,因此就使用了NCP中的奇數 [8] 。
基於端口號的實時數據流分類
基於端口號的分類方法只適用於使用知名端口號的應用,而對於使用動態端口,或不固定搭載知名端口傳輸的協議則不適用 [9] 。
基於知名端口號的數據流分類算法是最早期用於數據流分類的傳統方法。它的分類原理是使用TCP或UDP的服務器端口號來識別底層應用,使用者只需識別出在源端口和目的端口中,哪一個是服務器端口,哪一個是客戶端端口,將其與IANA(Internet Assigned Numbers Authority)頒布的知名端口號列表相比對,即可獲知相應的應用。例如PoP2服務使用TCP/UDP109號端口,PoP3服務使用TCP/UDP110號端口,NNTP服務使用TCP/UDP119號端口等。由於具有時間複雜度低、算法簡單等特點,基於端口號匹配的數據流分類算法曾經一度作為數據流分類的主要算法。
然而,隨着互聯網應用的快速發展,端口識別的流分類方法越來越多的受到限制:
1.一部分應用協議為躲避防火牆的攔截而使用未定義端口號;
2.在一些情況下,服務器端口被動態分配,如FTP在數據文件的過程中使用動態協議端口。
3.一些註冊的端口號被多個應用協議所使用,如:scp(securecode)與ssh(secureshell)同時使用TCP端口22 。
4.一些應用搭載其它應用使用知名端口號,如:P2P搭載HTTP使用80端口進行文件傳輸。
5.一些應用使用常用端口以外的端口,以繞過訪問限制:如在非80端口上運行WWW服務器。
6.一些情況下,服務器的端口是動態分配的。
7.木馬等網絡攻擊行為並不專屬於某一單一端口號。
8.一些新的協議不再使用IANA中的註冊端口,如BitTorrent等P2P協議 。
視頻
怎麼查看自己電腦的端口號
參考文獻
- ↑ 陶艷芳.淺談以java為基礎的Socket通信簡介及實現(J).青春歲月,2017,(7):259. DOI:10.3969/j.issn.1007-5070.2017.07.221.
- ↑ 陳文明主編;鄒志龍,高燕,張占義等副主編,計算機網絡實用技術,北京交通大學出版社,2011.06,第227頁
- ↑ 郭奕,趙瑜,何建編著,C#程序設計與實例分析,西安電子科技大學出版社,2016.05,第225頁
- ↑ 九天科技編著,黑客攻防入門到精通:實戰秘笈版,中國鐵道出版社,2017.09,第13頁
- ↑ 曾波,周雪玉,孟偉編著,電子商務應用系統開發實驗教程,重慶大學出版社,2009.06,第4頁
- ↑ ,引用日期2019-08-14
- ↑ ,引用日期2019-06-17
- ↑ 秦攀科主編,Linux C程序設計基礎,北京交通大學出版社,2011.06,第353頁
- ↑ 王慧謙.基於端口號、統計特徵和協議特徵字的實時數據流分類(D).山東:山東大學,2011. DOI:10.7666/d.y1938284.