- 為什麼電腦有 65,535 個 TCP 連接埠?
- 這個數字從哪裡來?
- 它代表什麼?
答案1
- 」為什麼電腦有 65535 個 TCP 連接埠?」
計算機做不是有端口。您所指的「連接埠」的概念與傳輸控制協定和UDP協定的協議TCP/IP 網路堆疊。從嚴格的技術角度來看,TCP 和 UDP 的結構都攜帶多種資訊(來源連接埠、目標連接埠、序號、資料等)。由於「來源連接埠」和「目標連接埠」都是由 16 位元「欄位」構成(在 TCP 和 UDP 封包內),因此存在以下限制:來源連接埠和目標連接埠可以採用可用 16 位元表示的所有值位(又稱:從0 到65535);
- 」這個數字從哪裡來?」
請參閱上文:來源連接埠和目標連接埠可以採用 0 到 65535 範圍內的值,因為它們都在各自的資料包內以 16 位元值表示
- 」它實際上代表什麼?」
簡而言之,「來源連接埠」和「目標連接埠」都扮演著非常重要的角色,因為它們讓單一「主機」(單一「客戶端」或單一「伺服器」)「提供」不同的服務。服務儘管只有一個 IP 位址,但仍面向網路用戶端。換句話說,如果沒有“連接埠”,那麼擁有一個提供Web 伺服器(在TCP 連接埠80 上用於純HTTP;在TCP 連接埠443 上用於HTTPS)、郵件伺服器(在TCP 連接埠上)的單一“伺服器”將會困難得多25 用於入站 SMTP;在 TCP 連接埠 110 上用於 POP3 存取;在 TCP 連接埠 143 上用於 IMAP 存取)、資料庫伺服器(在 TCP/連接埠 3306 上用於 MySQL))等。
「純粹主義者」讀者可能不同意我對上述過度簡化的看法,並且......他們會正確的:實際上,IP 位址和連接埠起著非常重要的作用,為了充分理解,需要正確理解“封裝「概念(當然,這是這個答案中提出的最重要的概念)。不幸的是,這通常需要地段需要正確「掌握」的時間......這就是為什麼,我上面的過度簡化:-)
答案2
TCP、UDP 和可能的其他 IP 服務使用連接埠在使用 IP 網路的主機之間的用戶端和伺服器進程之間進行謹慎的通訊。
更詳細的資訊可以找到在這篇維基文章中。
從自上而下的角度來看,連接埠代表兩個主機之間的不同對話。例如,主機同時向其指定伺服器發出多個 DNS 請求,每個請求使用不同的來源連接埠到目標連接埠 53。不同進程接收。
從自下而上的角度來看,連接埠是主機作業系統保留單獨進程的 IP 通訊線路的一種方式。雖然可能有多個進程向遠端主機的相同連接埠發出請求,但每個進程將為其請求使用不同的來源連接埠。這確保了適當的流程將收到答案。
對於移植協議,封包頭中保留了 32 位元:16 位元用於來源端口,16 位元用於目標端口。對於 TCP 和 UDP,這些是緊跟在 IP 標頭之後的前 32 位元;它們從第 192 位開始。 16 位數字的值介於 0 到 65535 之間。
答案3
65,536 是計算中非常常見的數字,因為它是 2 的 16 次方 (2^16)。 2^8 是 256,65,536 是 256 的平方。
換句話說,一個16位元二進位數可以表示65,536個不同的整數。所以這可能是您的 65,535 範圍的來源。
但等等,你想,我肯定少了一位數,因為 65,535 是 65,536 減 1!好吧,如果你從零開始計數就不會了!例如,8 位元影像編碼 256 個值,但通常這些值從 0 開始一直到 255。
我猜測 TCP 連接埠最初儲存為 16 位數字,因此有其上限。我不確定情況是否仍然如此。我希望這有幫助!