當我嘗試從程序中將端口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. 端口80上的Mac偵聽器
- 2. 如何運行兩個在kubernetes上同一端口上偵聽的容器?
- 3. TCP程序不能偵聽端口80
- 4. cap_net_bind_service腳本無法偵聽端口80
- 5. 碼頭不希望偵聽端口80
- 6. 如何通過Android瀏覽器上的端口80訪問URL
- 7. 偵聽兩個不同端口的TCP服務器
- 8. 將IIS 7設置爲偵聽不同於80的端口
- 9. Socket.io在多個端口上偵聽?
- 10. 實現一個80端口監聽器
- 11. NIO。多個客戶端通道在同一端口上偵聽
- 12. 錯誤:偵聽EACCES 0.0.0.0:444 node.js同時偵聽端口444/443
- 13. 如何更改websphere偵聽器端口
- 14. 如何確定在端口80上監聽什麼服務器
- 15. 允許容器偵聽端口80的副作用
- 16. 騾子CE運行時不偵聽端口80
- 17. c上的網絡端口偵聽器#
- 18. C /如何偵聽多個UDP端口
- 19. 偵聽多個TCP端口
- 20. 服務器偵聽多個端口[Java]
- 21. 服務器偵聽多個端口c
- 22. 如何在AIX上查找MQ偵聽器端口?
- 23. netcat在端口上偵聽時如何打印文本?
- 24. 如何配置Symfony項目來偵聽Web服務器的80端口
- 25. 如何在Java中偵聽UDP端口?
- 26. 在瀏覽器中偵聽事件在JavaScript中查找窗口
- 27. 在同一端口上偵聽多個進程?
- 28. 使用node.js在2個不同的端口上偵聽
- 29. 瀏覽器中的Chrome.socket偵聽器
- 30. 瀏覽器和viewer.container事件偵聽器
服務器偵聽,瀏覽器連接... – miku 2009-12-21 11:58:13
當連接到端口80時,兩個程序中的哪一個應該回答? – 2009-12-21 12:06:43
@Alvaro這不是套接字的工作方式。 – 2009-12-21 12:14:07