首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 網絡編程面試題:同一服務器相同/不同 Server 是否可共用端口

     編輯:程式設計疑難解答

問題

  1. 同一服務器,相同 Server(如同一個 Tomcat 實例)是否可共用一個端口?
  2. 同一服務器,不同 Server(如多個 Tomcat 實例)是否可共用一個端口?

答案

  • 相同 Server:一個 Tomcat 進程可部署多個 Web 應用,它們共用同一個連接器端口(默認 8080),通過 Context Path(如 /app1, /app2)區分。可共用。
  • 不同 Server:兩個獨立 Tomcat 進程(或 Tomcat + Nginx 等)不能 監聽同一 IP:PORT 組合,會報 Address already in use。需配置不同端口(如 8080、8081)。

底層原理

TCP/IP 協議規定:同一傳輸層協議(TCP/UDP)下,IP:PORT 四元組唯一標識一個連接端點。一個進程成功 bind() 後,其他進程無法再次綁定相同 IP:PORT(除非設置 SO_REUSEPORT 且內核支持,但常規 Java Server 不用此特性)。

面試加分點

  • 提及 SO_REUSEADDR 用於解決 TIME_WAIT 狀態下快速重啟綁定。
  • 說明 Nginx 反向代理可將多個後端服務映射到同一對外端口(80/443)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved