我們都知道,任何時候多個程序可能同時使用TCP,UDP,SCTP這3種傳輸層協定中的任何一種,這3種協定都使用16位整數的端口号來區分這些程序。
當一個客戶想要跟一個伺服器聯系時,它必須辨別想要與之通信的這個伺服器。TCP.UDP,SCTP定義了一組衆所周知的端口号用于辨別衆所周知的服務。客戶通常使用短期存活的臨時端口,這些端口号通常由傳輸層協定自動賦予客戶我們通常不關心其臨時端口的具體值,而隻需确信該端口号在所在主機中是唯一的就行。
任何TCP/IP實作所提供的服務都是1-1023之間的端口号,這些端口号由IANA配置設定管理,其中低于255的端口号保留用于公共應用;255-1023之間的端口号配置設定給各個公司,用于特殊應用。
常用的保留TCP端口号有:
HTTP 80, FTP 20/21,Telnet 23,SMTP 25,DNS 53等。
常用的保留UDP端口号有:
DNS 53,TFTP 69,SNMP 161等。
每個TCP報頭都包含源端口号和目的端口号,用于辨別和區分源端裝置和目的端裝置的應用程序。
端口号可分為3大類:
1.衆所周知端口号為0~1023.這些端口号由IANA配置設定和控制,他們綁定于一些服務,可能的話,相同端口号就配置設定給TCP,UDP和SCTP的同一給定服務,例如,不論TCP還是UDP端口号80都被賦予Web伺服器。
2.已登記的端口号為1024~49151。這些端口号不受IANA控制,不過由IANA登記并提供他們的使用情況清單,以友善整個群體。可能的話,相同端口号也配置設定給TCP和UDP的同一給定服務。49151這個上限的引入是為了給臨時端口留出範圍。
3.動态端口或私有端口号49152~65535.IANA不管這些端口,他們就是我們所稱為的臨時端口号。