TCP、UDP綁定同一連接埠通訊的解釋

來源:互聯網
上載者:User

      網路中可以被命名和定址的通訊連接埠,是作業系統可分配的一種資源。 

      按照OSI七層協議的描述,傳輸層與網路層在功能上的最大區別是傳輸層提供進程通訊能力。從這個意義上講,網路通訊的最終地址就不僅僅是主機地址了,還包括可以描述進程的某種標識符。為此,TCP/IP協議提出了協議連接埠(protocol   port,簡稱連接埠)的概念,用於標識通訊的進程。 

      連接埠是一種抽象的軟體結構(包括一些資料結構和I/O緩衝區)。應用程式(即進程)通過系統調用與某連接埠建立串連(binding)後,傳輸層傳給該連接埠的資料都被相應進程所接收,相應進程發給傳輸層的資料都通過該連接埠輸出。在TCP/IP協議的實現中,連接埠操作類似於一般的I/O操作,進程擷取一個連接埠,相當於擷取本地唯一的I/O檔案,可以用一般的讀寫原語訪問之。 

      類似於檔案描述符,每個連接埠都擁有一個叫連接埠號碼(port   number)的整數型標識符,用於區別不同連接埠。由於TCP/IP傳輸層的兩個協議TCP和UDP是完全獨立的兩個軟體模組,因此各自的連接埠號碼也相互獨立,如TCP有一個255號連接埠,UDP也可以有一個255號連接埠,二者並不衝突。 

      連接埠號碼的分配是一個重要問題。有兩種基本分配方式:第一種叫全域分配,這是一種集中控制方式,由一個公認的中央機構根據使用者需要進行統一分配,並將結果公佈於眾。第二種是本地分配,又稱動態串連,即進程需要訪問傳輸層服務時,向本地作業系統提出申請,作業系統返回一個本地唯一的連接埠號碼,進程再通過合適的系統調用將自己與該連接埠號碼聯絡起來(綁紮)。TCP/IP連接埠號碼的分配中綜合了上述兩種方式。TCP/IP將連接埠號碼分為兩部分,少量的作為保留連接埠,以全域方式分配給服務進程。因此,每一個標準伺服器都擁有一個全域公認的連接埠(即周知口,well-known
  port),即使在不同機器上,其連接埠號碼也相同。剩餘的為自由連接埠,以本地方式進行分配。TCP和UDP均規定,小於256的連接埠號碼才能作保留連接埠。

 

 

· 再討論一下,一個伺服器監控一個連接埠,比如80連接埠,它為什麼可以建立上成千上萬的串連?

 

   首先, 一個TCP串連需要由四元組來形成,即(src_ip,src_port,dst_ip,dst_port)。當一個串連請求過來的時候,服務端調用accept函數,新產生一個socket,這個socket所佔用的本地連接埠依然是80連接埠。由四元組就很容易分析到了,同一個(src_ip,src_port),它所對應的(dst_ip,dst_port)可以無窮變化,這樣就可以建立很多個用戶端的請求了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.