在使用PostMan以前,本身測試Rest接口都是直接在瀏覽器地址欄輸入URL來測試的,可是這種方法發出的請求都是Get,若是要發送POST請求只能用ajax等編程方式。有了PostMan就方便多了。某一天在輸URL的時候,忽然想看看瀏覽器到底作了什麼,因而就有了下面這些內容。css
如下講述的是一個請求靜態網頁文件的例子,該例子有如下幾個過程:ajax
1.在瀏覽器地址欄輸入一個URL,並回車編程
2.瀏覽器利用DNS,找到域名對應的IP地址瀏覽器
3.瀏覽器與服務端創建socket鏈接,若是已有則無需創建tomcat
4.瀏覽器利用socket鏈接發送請求數據報服務器
5.服務端返回響應數據報網絡
6.瀏覽器渲染HTMLsocket
7.若是HTML中含有其餘文件的引用,如css,js文件,那麼它還會重複步驟3~6測試
要與服務端創建socket鏈接,瀏覽器要知道哪些信息呢?網站
IP地址怎麼獲取?
首先你輸入要訪問一個網站必然有域名,有了域名必然就能找到IP地址。域名與IP地址是多對一的關係。值得一提的是,域名到IP地址的映射不必定要用到DNS,若是本地hosts文件中有相關的映射,那就沒必要遠程查詢了。
地址欄就不能直接輸IP地址嗎?
只要你記得住,固然能夠輸,還省去了解析域名的麻煩。域名的出現就是爲了避免用去記IP地址。例如,baidu.com 總比 xxx.xxx.xxx.xxx好記吧。
那端口呢?
端口在URL中是直接跟在IP地址/域名後面,通常是這樣:
IP地址/域名:端口
好比tomcat項目就是,localost:8080/xxx
那爲何不少網站訪問的時候不須要輸端口?
由於默認不輸入的話,會補上80端口。因此端口仍是有的。
請求數據報包含哪些內容?
那就要說到數據報的結構了,HTTP請求報文分三部分,請求行(request line)、請求頭(request headers)、請求實體(request body)。大概就是下面這樣:
Method Uri Protocol/version CRLF
Header1:Value1 CRLF
Header2:Value2 CRLF
....
CRLF
Body
這三大塊用CRLF分隔(CLRF就是回車+換行,即"\r\n")。
200、500等這些響應結果是怎麼回事?
你能收到這些響應結果,至少網絡是通的。須要明確一點的是,這些狀態碼是服務端寫好,而後發給你的。請求正常就是200,請求參數致使服務程序出現異常就是500等等。這些狀態碼不少,有興趣的能夠去看Http協議說明。
網頁數據在哪裏?
網頁文件的內容都放在響應報文的body中,瀏覽器會把網頁內容渲染到頁面上。
提示下載文件是怎麼回事?
這其實說的是響應報文對於body內容的處理方式,默認狀況下是直接在網頁上展現的。這主要由響應頭中的Content-Disposition值決定,默認是inline,也就是直接在網頁上展現。若是是須要下載的話,那就是attachement;filename=xxx.若是瀏覽器接收到這樣的響應報文,會彈出下載提示框,讓用戶選擇保存位置。
何時斷開鏈接?
實際上,Http協議到了1.1以後,默認維持的是長鏈接,也就是不會關閉。由於若是每一個請求都創建新的鏈接的話,握手的開銷不可小覷。如今基本上使用的都是1.1版本。
怎麼斷開鏈接?
socket鏈接只要雙方任何一方關閉便可斷開鏈接,因此能夠是瀏覽器或服務端任意一方關閉鏈接。
瀏覽器 => 關閉瀏覽器應用 Or 提示服務端,讓服務端關閉,具體方式爲添加請求頭Connect:close
服務端 => 編程調用close方法