標籤:style blog http color io 使用 ar strong 檔案
前言:今天瞭解一下tcp和udp報文的連接埠。發現一直以來都只是知道連接埠用於區分同一IP的伺服器的不同服務,已經連接埠的大小。在尋找traceroute的資料的時候,才瞭解到一些之前沒注意到的東西。
(一) 準備知識:連接埠的介紹
這一部分本該是介紹連接埠的作用等知識。但是網上上太多博文了。所以權且借用一篇博文供大家參考——《理解IP和連接埠》
(二) 連接埠的範圍
在 TCP 和 UDP(如) 的報文結構中都用源連接埠和目標連接埠號碼。
如,其長度都是16個bit,所以連接埠號碼範圍是0到(2^16-1),即 0到 65535。其中0到1023是IANA規定的系統連接埠,即系統保留視窗。
More Advanced,
根據RFC 6335的文檔。連接埠號碼事實上分為三個範圍:
o 系統連接埠,即公認的連接埠,從 0 到 1023 。
o 使用者連接埠,又稱為註冊連接埠,從 1024 到 49151 。
o 臨時連接埠,又稱動態連接埠(Ephemeral Port),從 49152 到 65535。
(三)各連接埠範圍用途
① 系統連接埠,為系統預設保留連接埠,用於提供已存在的服務。例如HTTP為80連接埠,DNS服務為53連接埠。
② 使用者連接埠,即為使用者程式自行綁定的連接埠。一般開發人員開發新服務時,都會綁定此區間內的連接埠。
附註:上述連接埠綁定的服務,在wikipedia上有相應的詞條:List of TCP and UDP port numbers
③ 臨時連接埠,此類連接埠,一般沒有被公認綁定到那些服務上,可以用於提供任何用途。
(四)下面說一下臨時連接埠
在一般情況下,當用戶端和服務端建立聯絡時,一般都通過一個四元組(server IP, server port, client IP, client port)來區分服務。除client Port外,其他三個基本都是確定的。對於client Port,除非用戶端程式顯示指定一個連接埠號碼,否則,IP 棧預設從臨時連接埠號碼中選取一個用於綁定綁定本地連接埠,進而進行服務的區分。
當串連斷開後,該連接埠允許被重用。注意,大部分IP棧不會再該連接埠釋放後,就馬上重用它,而是等到臨時連接埠都被使用過了,才會重新使用該連接埠。這也就解釋了為什麼每一次運行用戶端程式獲得的都不是同一個連接埠。
另外,不同的作業系統對臨時連接埠的範圍規定不一樣。由於串連都是由四元組區分,所以臨時連接埠號碼的數量限制了同一時間內串連同一主機的獨立串連的數量。特別地,當使用FTP時,假如同一時間內需要有大量檔案同時傳輸,很容易就出現臨時連接埠號碼不足,進而IP棧會拋出“地址已經被使用”的錯誤。
附:在NCFTP的官網上提供了一份詳細介紹臨時連接埠的文檔——《The Ephemeral Port Range》,其中就有提到具體的作業系統的臨時連接埠數量。有興趣可以看一下。
電腦網路 之 TCP和UDP的連接埠號碼解析