當我嘗試從程序中將端口80綁定到套接字時,出現錯誤,但兩臺瀏覽器如何同時聽到同一端口80?兩個瀏覽器如何同時在端口80上偵聽?
回答
瀏覽器不偵聽端口80
,HTTP服務器做(雖然這只是慣例,你可以使用端口80
輕鬆擁有一個FTP和Telnet服務器)。
在TCP/IP中,「會話」必須是唯一的,會話定義爲5元組(protocol, sourceIP, sourcePort, destinationIP, destinationPort)
。這允許數據包在互聯網上正確路由。
典型地,當客戶端試圖聯繫服務器,它指定0
作爲其源端口這意味着該操作系統分配給它的未使用的一個。這意味着客戶端實際上將在上監聽端口而不是端口80
。
因此,當您的瀏覽器訪問微軟的網頁時,您可能會收到與屬性(TCP, mybox.com, 1101, www.microsoft.com, 80)
的會話。
如果您發現無法將服務器綁定到端口80
,很可能是因爲您已經有一臺服務器在該端口上運行,或者您的程序沒有綁定到該端口所需的特權(端口小於1024
通常被認爲是特權端口)。
運行netstat -a
(在Linux上或 Windows)會告訴你服務器是否綁定到端口80
。尋找端口80
監聽器(或http
如果它解決端口服務名稱),是這樣的:
tcp 0 0 localhost:http *:* LISTEN
您將會話列爲具有五元組('protocol,sourceIP,destinationIP,sourcePort,destinationPort)',但是您舉例說明'(TCP,mybox.com,1101,www.microsoft.com,80)'。它應該不是'(TCP,mybox.com,www.microsoft.com,1101,80)'? – 2018-02-03 17:57:43
@Jon,謝謝你。這個元組不是我自己想要以任何方式訂購的,它只是確定會話所需的信息。我會修正它的一致性,因爲你絕對正確,可能會導致混淆。 – paxdiablo 2018-02-04 02:23:30
他們不聽他們與80端口對話的端口80,或443如果您使用SSL(或在任何其他端口,如果管理員打破常規,您可能已經看到類似http://www.site.com:8080的網址已在8080端口上設置)。
瀏覽器將從隨機編號較高的端口發出請求,以便瀏覽器可以同時處於活動狀態。
由於paxdiablo說,你可以用netstat查看哪些程序偵聽連接(使用「netstat的 - -b」將顯示哪些可執行文件綁定到哪個端口)
的瀏覽器實際上不是綁定到80端口。您可能會發現,您也正在運行IIS或其他網絡服務器,是綁定,這是您的問題的原因
瀏覽器實際上不聽在端口80.網絡服務器做到這一點,瀏覽器(動態端口)與49152和65535之間的端口打開連接。
在網絡連接中,有一個對等體(通常稱爲客戶機)連接到另一個(通常稱爲服務器)。據說服務器正在偵聽某個端口,而客戶端據說正在連接到該端口。
在這種情況下,Web服務器在所有客戶端(瀏覽器)連接到端口80時監聽端口80。
當瀏覽器與服務器建立連接時,它綁定到本地非特權端口,但連接到Web服務器的端口80.當服務器發回響應時,它會轉到非特權端口瀏覽器的電腦。如果同一臺計算機上有兩個瀏覽器,則它們綁定到不同的端口。
如果你的意思是「怎麼兩個服務器偵聽端口80」,可以考慮使用HTTP服務器API。 這兩個服務器都可以註冊一個回調函數和一個URL。客戶端然後可以根據URL f.e來決定調用哪個服務器。
http://localhost/Service1將轉到指定「http://localhost/Service1」作爲其URL的服務。
- 1. 如何運行兩個在kubernetes上同一端口上偵聽的容器?
- 2. TCP程序不能偵聽端口80
- 3. Socket.io在多個端口上偵聽?
- 4. 如何確定在端口80上監聽什麼服務器
- 5. 允許容器偵聽端口80的副作用
- 6. c上的網絡端口偵聽器#
- 7. 偵聽多個TCP端口
- 8. 服務器偵聽多個端口[Java]
- 9. 服務器偵聽多個端口c
- 10. netcat在端口上偵聽時如何打印文本?
- 11. 如何配置Symfony項目來偵聽Web服務器的80端口
- 12. 在瀏覽器中偵聽事件在JavaScript中查找窗口
- 13. 使用node.js在2個不同的端口上偵聽
- 14. 瀏覽器和viewer.container事件偵聽器
- 15. 無狀態的WCF服務偵聽器在同一個端口
- 16. 配置爲偵聽端口80上的Tomcat連接器未能啓動
- 17. Nginx:無法偵聽端口80 ...只有端口8080工作在OSX 10.11
- 18. 如何組合兩個需要偵聽端口的Express模塊?
- 19. 最後窗口關閉事件偵聽器的Chrome瀏覽器
- 20. 使用Http處理程序來偵聽端口80
- 21. 如果我使用一個偵聽套接字在兩個端口上偵聽,那麼我如何知道哪個端口接收到數據包?
- 22. Perl - 創建偵聽不同端口的多個HTTP服務器
- 23. 如何在窗口上暫時阻止鼠標偵聽器?
- 24. 如何更改Postgres偵聽端口?
- 25. 如何獲取EJB偵聽端口?
- 26. snmpd未在Ubuntu服務器上的端口161上偵聽
- 27. 兩個Oracle TNS偵聽器
- 28. .NET VB如何讓服務器偵聽多個端口?
- 29. 如何編寫python HTTP服務器以偵聽多個端口?
- 30. 兩個偵聽
服務器偵聽,瀏覽器連接... – miku 2009-12-21 11:58:13
當連接到端口80時,兩個程序中的哪一個應該回答? – 2009-12-21 12:06:43
@Alvaro這不是套接字的工作方式。 – 2009-12-21 12:14:07