當我在網路瀏覽器中訪問 localhost:8080 時到底發生了什麼?(阿帕奇雄貓)
我的職業生涯一直在做所有本地應用程序程式(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 時,到底發生了什麼?
- 您正在使您的網路瀏覽器要求您的作業系統解析主機名
localhost
。作業系統通常會將主機名解析為localhost
您127.0.0.1
的環回介面。- 任何主機名或 IP 地址後跟一個
:
和一個埠號,例如:8080
告訴瀏覽器連接到該 TCP 埠,而不是預設的 Web 伺服器埠 80。就像
http://localhost:80/
,http://localhost/
,http://127.0.0.1/:80
, andhttp://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: localhost
或Host: 127.0.0.1
。正確配置 Web 伺服器後,瀏覽器的 Host 標頭欄位允許單個 Web 伺服器偵聽單個 IP 地址埠,並為解析到相同 IP 地址的許多不同域提供不同的網頁。作業系統通常如何解析像 localhost 這樣的主機名?
- 在 Unix 系統或類似 Unix 的作業系統(如 Linux 或 Freebsd)上,該文件是 /etc/hosts,並且可能包含如下行:
127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback
- 在 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 程序的伺服器。