Windows

當我在網路瀏覽器中訪問 localhost:8080 時到底發生了什麼?(阿帕奇雄貓)

  • February 18, 2019

我的職業生涯一直在做所有本地應用程序程式(C++ 應用程序等等)。不過,我現在正試圖涉足網路世界。我正在使用 Eclipse (Mars) 和 Apache Tomcat 8.0.23 來嘗試建立一個環境,​​我可以在其中試驗和學習伺服器端程式(JSP、PHP 等)。我已經設置好了,所以當我輸入

localhost:8080

在我的瀏覽器中,它指向正確的 tomcat 頁面。我知道這可能很簡單,但這讓我大吃一驚。

當我輸入 localhost 時到底發生了什麼?

如果不是網際網路,tomcat 頁面來自哪裡?我很確定數據來自伺服器,多虧了 Tomcat,它在我的 PC 上,但是我的瀏覽器怎麼知道從 localhost:8080 到哪裡可以找到資訊?

我假設 8080 是一個埠或其他東西,但我也不確定,如果它是一個埠,我不確定這意味著什麼。

基本上我所知道的(我認為……)關於伺服器端 Web 開發的是,在純 html/css Web 開發中,所有工作都在下載完所有內容後在本地完成,但是對於伺服器,一些工作(在一些定界符內)會進行伺服器並以不同的形式返回到 html 中(很像將數據發送到 C++ 中的函式並返回不同的數據),然後再次在本地繪製到頁面。

當我將 Web 瀏覽器定向到 localhost:8080 時,到底發生了什麼?

  1. 您正在使您的網路瀏覽器要求您的作業系統解析主機名localhost。作業系統通常會將主機名解析為localhost127.0.0.1的環回介面。
  2. 任何主機名或 IP 地址後跟一個:和一個埠號,例如:8080告訴瀏覽器連接到該 TCP 埠,而不是預設的 Web 伺服器埠 80。

就像http://localhost:80/, http://localhost/, http://127.0.0.1/:80, and http://127.0.0.1/each 連接到相同的伺服器和埠一樣http://localhost:8080/http://127.0.0.1:8080/也連接到相同的 IP 地址,但在 TCP 埠 8080 上

**附加說明:**在 HTTP/1.1 中,即使 Web 瀏覽器連接到相同的 IP 地址和埠,對於許多 Web 伺服器,localhost 和 127.0.0.1 之間也存在細微差別。根據地址欄中的內容,您的瀏覽器將發送一個請求標頭欄位,其中包含Host: localhostHost: 127.0.0.1。正確配置 Web 伺服器後,瀏覽器的 Host 標頭欄位允許單個 Web 伺服器偵聽單個 IP 地址埠,並為解析到相同 IP 地址的許多不同域提供不同的網頁。

作業系統通常如何解析像 localhost 這樣的主機名?

  1. 在 Unix 系統或類似 Unix 的作業系統(如 Linux 或 Freebsd)上,該文件是 /etc/hosts,並且可能包含如下行:
127.0.0.1   localhost
::1     localhost ip6-localhost ip6-loopback
  1. 在 Windows 上,該文件是c:\windows\system32\drivers\etc\hosts並且通常會有類似的行:
127.0.0.1   localhost

**附加說明:**如果您願意,可以在主機文件中添加行,例如:

127.0.0.1     localhost
127.0.0.1     developer.yourdomain.com
# Deny Browser Request For These Sites
127.0.0.2     www.spam.advertisements.com
127.0.0.2     super.ads.com
# Block These Sites
127.0.0.3     www.dont.go.here.com
127.0.0.3     nsfw.stuff.com 
  • http://developer.yourdomain.com:8080/瀏覽器地址欄中的統一資源定位器 (URL) 指示 Web 瀏覽器與本地環回地址 127.0.0.1 的埠 8080 建立 TCP 連接。
  • 此外,根據rfc1700 第 4 頁,127.0.0.0/8 範圍內的任何地址也是環回地址。因此,在您的電腦上執行的正確配置的網路伺服器可能會拒絕埠 127.0.0.2 上的所有請求,同時針對 127.0.0.3 上的連接發出一般的“您不應該去這裡。該站點被阻止”消息。

Tomcat頁面來自哪裡?

Apache Tomcat 是一個偵聽埠並執行生成內容以發送到瀏覽器的 java 程序的伺服器。

引用自:https://serverfault.com/questions/702725