發布時間: 2022-02-21 10:46:44
應用層協議很多,但傳輸層就兩個協議,如何使用傳輸層的兩個協議標識應用層協議呢?
通常使用傳輸層協議加一個端口號來標識一個應用層協議,如圖1所示,展示了傳輸層協議和應用層協議之間的關系。

圖1 傳輸層協議和應用層協議之間的關系
下面列出了一些常見的應用層協議和傳輸層協議,以及它們之間的關系。
(1)HTTP默認使用TCP的80端口。
(2)FTP默認使用TCP的21端口。
(3)SMTP默認使用TCP的25端口。
(4)POP3默認使用TCP的110端口。
(5)HTTPS默認使用TCP的443端口。
(6)DNS默認使用UDP的53端口。
(7)遠程桌面協議(RDP)默認使用TCP的3389端口。
(8)Telnet默認使用TCP的23端口。
(9)Windows訪問共享資源默認使用TCP的445端口。
(10)微軟SQL數據庫默認使用TCP的1433端口。
(11)MySQL數據庫默認使用TCP的3306端口。
以上列出的都是默認端口,當然可以更改應用層協議使用的端口。如果不使用默認端口,客戶端需要指明所使用的端口。
圖2所示的服務器運行了Web服務、SMTP服務和POP3服務。這3個服務分別使用HTTP、SMTP和POP3與客戶端通信?,F在網絡中的A計算機、B計算機和C計算機分別打算訪問服務器的Web服務、SMTP服務和POP3服務。發送了3個數據包①②③,這3個數據包的目標端口分別是80、25和110,服務器收到這3個數據包,就根據目標端口將數據包提交給不同的服務。

圖2 端口和服務的關系
現在大家明白,數據包的目標IP地址是用來在網絡中定位某一個服務器的,目標端口是用來定位服務器上的某個服務的。
圖2展示了A、B、C計算機訪問服務器的數據包,有目標端口和源端口,源端口是計算機臨時為客戶端程序分配的,服務器向A、B、C計算機發送響應數據包,源端口就變成了目標端口。
A計算機打開谷歌瀏覽器,一個頁面訪問網址百度,另一個頁面訪問網址51CTO,這就需要建立兩個TCP連接,如圖3所示。A計算機會給每個頁面臨時分配一個客戶端端口(要求本地唯一),從51CTO學院返回的數據包的目標端口是13456,從百度網站返回的數據包的目標端口是12928,這樣A計算機就知道這些數據包是來自哪個網站的,應提交給哪一個頁面。

圖3 客戶端端口的作用
在傳輸層使用16位二進制標識一個端口,端口號的取值范圍是0~65535。端口號分為以下兩大類。
1.服務器使用的端口號
服務器端使用的端口號又分為兩類,最重要的一類叫作“熟知端口號”(well-known port number)或“系統端口號”,數值為0~1023。這些數值可在網址IANA官網查到?;ヂ摼W數字分配機構(IANA)把這些端口號指派給了TCP/IP最重要的一些應用程序,讓所有的用戶都知道。圖4給出了一些常用的熟知端口號。

圖4 熟知端口號
另一類叫作“登記端口號”,數值為1024~49151。這類端口號是供沒有熟知端口號的應用程序使用的。使用這類端口號必須在IANA按照規定的手續登記,以防止重復。例如,微軟的RDP使用TCP的3389端口,就屬于登記端口號的范圍。
2.客戶端使用的端口號
當打開瀏覽器訪問網站或登錄QQ等客戶端軟件和服務器建立連接時,計算機會為客戶端軟件分配一個臨時端口,這就是客戶端端口,取值范圍為49152~65535。由于這類端口號僅在客戶進程運行時才動態選擇,因此又叫作“臨時(短暫)端口號”。這類端口號是留給客戶進程暫時使用的。
當服務器進程收到客戶進程的報文時,就知道了客戶進程所使用的端口號,因而可以把數據發送給客戶進程。通信結束后,剛才已使用過的客戶端口號就不復存在,這個端口號就可以供其他客戶進程以后使用。
上一篇: DHCP的工作機制
下一篇: tcp和udp的區別和使用場景