在做了一些搜索之后,我知道了幾點
- 我們不能為 TCP 多路復用埠。
- 如果兩個連接使用相同的協議并具有相同的目標埠,則它們必須具有相同的連接。
- 我很困惑一些網站如何說 TCP 一次只能讓一個應用程式監聽同一個埠,而另一些網站說多個監聽 TCP 套接字,都系結到同一個埠,可以共存,只要它們都系結到不同的本地IP地址。
閱讀上述內容讓我比以往任何時候都更加困惑。一個目標埠可以與多個 TCP 連接相關聯嗎?
uj5u.com熱心網友回復:
我們不能為 TCP 多路復用埠。
這是錯誤的。您可以在同一個埠上運行多個 TCP 連接,只要它們是唯一的連接。撰寫在同一行程內的多個 TCP 套接字上多路復用 I/O 的代碼也不是很困難。
如果兩個連接使用相同的協議并具有相同的目標埠,則它們必須具有相同的連接。
這是錯誤的。TCP連接由協議 本地IP/埠 和遠程IP/埠的組合唯一標識。
如果使用不同的源 IP/埠進行連接,則使用相同協議和相同目標 IP/埠的兩個連接仍然是唯一的。例如,在同一臺機器上運行的多個客戶端如果使用不同的本地埠進行連接,則可以連接到同一臺服務器。這通常是這種情況,因為大多數客戶端使用作業系統選擇的隨機可用本地埠進行出站連接。
同樣,如果兩個使用相同協議和相同源 IP/埠的連接連接到不同的目標 IP/埠,它們仍然是唯一的。例如,在同一臺機器上運行的多個客戶端如果連接到不同的服務器,則可以使用相同的本地 IP/埠進行連接。
一些網站說 TCP 一次只能讓一個應用程式監聽同一個埠
這是正確的,但前提是所有偵聽器都嘗試同時使用相同的本地 IP/埠。僅允許 1 個偵聽器。
其他人說多個監聽 TCP 套接字,都系結到同一個埠,可以共存,只要它們都系結到不同的本地 IP 地址。
這是對的。
一個目標埠可以與多個 TCP 連接相關聯嗎?
是的。即使該埠上只有 1 個偵聽器,它接受的每個連接都將使用服務器端的相同本地埠,但來自客戶端的源 IP/埠不同。這允許來自不同遠程機器的多個客戶端同時連接到同一個服務器。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/476511.html
