任何時候,多個進程可能同時使用TCP、UDP和SCTP這3種傳輸層協議中的任何一種。這3種協議都使用16位整數的端口號來區分這些進程。
當一個客戶想要跟一個服務器聯系時,它必須標識想要與之通信的這個服務器。TCP、UDP和SCTP定義了一組眾所周知的端口號,用於標識眾所周知的服務。
另一方面,客戶通常使用短期存活的臨時端口。這些端口號通常由傳輸層協議自動賦予客戶,客戶通常不關心其臨時端口的具體值,而只需確信該端口在所在主機中是唯一的就行。傳輸協議的代碼確保這種唯一性。
端口被划分為以下3段。
1)眾所周知的端口為0~1023.這些端口由IANA分配和控制。可能的話,相同端口號就分配給TCP、UDP和SCTP的同一給定服務。例如,不論TCP還是UDP端口號80都被賦予Web服務器,盡管它目前的所有實現都單純使用TCP。
2)已登記的端口為1024~49151.這些端口不受IANA控制,不過由IANA登記並提供它們的使用情況清單,以方便整個群眾。可能的話,相同端口號也分配給TCP和UDP的同一給定服務。
3)49152~65535是動態的或私用的端口。IANA不管這些端口。它們就是我們所稱的臨時端口。
套接字對
一個TCP連接的套接字對是一個定義該連接的兩個端點的四元組:本地IP地址、本地TCP端口號、外地IP地址、外地TCP端口號。套接字對唯一標識一個網絡上的每個TCP連接。就SCTP而言,一個關聯由一組本地IP地址、一個本地端口、一組外地IP地址、一個外地端口標識。在兩個端點均非多宿這一最簡單的情形下,SCTP與TCP所用的四元組套接字對一致。然而在某個關聯的任何一個端點為多宿的情形下,同一關聯可能需要多個