Networking
了解埠:多個瀏覽器選項卡如何同時通信?
我今天意識到我根本不了解埠通信是如何工作的。
如果我啟動一個監聽埠 80 的網路伺服器實例,它可以響應來自許多不同瀏覽器選項卡的許多請求,所有請求都通過埠 80 進行通信。
但是,我無法啟動伺服器的兩個實例,它們都偵聽埠 80,因為這會導致埠衝突。
我一直認為這是給定的,(在任何給定時間只有一個程序可以綁定到特定埠)而沒有真正考慮過——不是有多個程序在埠 80 上通信嗎?(即,瀏覽器中執行的每個選項卡?)
基本上,一次只能在一個埠上監聽一個程序(從技術上講,一個套接字專用於監聽)。但是,一個埠可以處理多個套接字傳輸數據,一個套接字是本地 IP/埠和遠端 IP 地址/遠端埠的組合。這樣,一旦伺服器在 LISTENing 時接受傳入的連接,它就會打開一個專用於該對話的新套接字並將處理交給其他東西,然後返回 LISTENing。
瀏覽器從您電腦上的一個隨機高(即 > 1024)埠連接到遠端伺服器的 80 埠。因此,您的電腦上沒有埠衝突。
如果您使用許多選項卡連接到同一個遠端伺服器(或有許多使用者連接到伺服器),它們都將轉到同一個埠並由同一個程序(即站點的 Web 伺服器)提供服務。