簡單的說就是我們輸入URL(Uniform Resource Locator)後,委由瀏覽器發出http請求,透過網路傳送到Web Server,由Server 解析請求並傳送回應資訊的過程。
首先我們仔細瞧瞧我們輸入的URL,URL就是我們對遠端主機資源請求的路徑,所以你需要的是主機IP跟放置資源的位置,由於人的記憶有限並無法記憶每台訪問主機的IP,對於有意義的文字才會記得,而Fully Qualified Domain Name最終會被DNS主機映射IP讓後續的網路層可以運作
在URL最前頭有個Schema Http/Https(Hyper Text transfer protocol),它代表通訊協定,也就是跟電腦約定好電腦間溝通的方式,它有以下幾個特點
報文的組成包含
start line
在requests中又叫做request line會有這次請求的方式GET/POST/PUT/DELETE等等,responses中又稱status line會回傳Server針對你請求所做回應的狀態碼200/403/404等。
status code | description |
---|---|
200 | 請求成功 |
302 | 重導向,表示Server要求browser重新發一個請求,Server會發送一個Location在header指定請求新的URL位置 |
304 | 使用本地cache |
400 | Bad Request客戶端請求有誤Server無法解析 |
401 | Unauthorized未授權的請求 |
400 | Bad Request客戶端請求有誤Server無法解析 |
404 | 找不到資源 |
405 | 請求的方式不允許 |
500 | Server出現內部錯誤 |
Http Header
這個部份是要給web server或瀏覽器的額外資訊
empty line
CR LF空行
body
body就是夾帶我們請求內容資訊或是Server回應我們的資訊內容
最早之前為產生動態頁面,Server端處理請求會透過CGI(Common Gateway Interface)去調用程式,處理完成後交給Web Server返回Response,那個時期每一個請求都會起一個Process來處理請求。而Java的Web Server會起一個thread去找對應的Servlet處理請求並回應。
以下是Wassim Chegham這位老兄對瀏覽器輸入網址後發生的事所畫的圖,從中更能幫助我們日後學習
Reference:https://x.com/manekinekko/status/1281704000572858375
Servlet & JSP 技術手冊 - 林信良
What Happens when you type in a url in an address bar in a browser - Wassim Chegham