测试开发面试准备之HTTP协议-一次完整的Http请求过程
1.域名解析 --> 發(fā)起TCP的3次握手 --> 建立TCP連接后發(fā)起http請求 --> 服務(wù)器響應(yīng)http請求,瀏覽器得到html代碼 --> 瀏覽器解析html代碼,并請求html代碼中的資源(如js、css、圖片等) --> 瀏覽器對頁面進(jìn)行渲染呈現(xiàn)給用戶
第一步,解析域名,找到主機(jī)IP
?
(1)瀏覽器會(huì)緩存DNS一段時(shí)間,一般2-30分鐘不等。如果有緩存,直接返回IP,否則下一步。
?
(2)緩存中無法找到IP,瀏覽器會(huì)進(jìn)行一個(gè)系統(tǒng)調(diào)用,查詢hosts文件。如果找到,直接返回IP,否則下一步。(在計(jì)算機(jī)本地目錄etc下有一個(gè)hosts文件,hosts文件中保存有域名與IP的對應(yīng)解析,通常也可以修改hosts。)
?
(3)進(jìn)行了(1)(2)本地查詢無果,只能借助于網(wǎng)絡(luò)。路由器一般都會(huì)有自己的DNS緩存,ISP服務(wù)商DNS緩存,這時(shí)一般都能夠得到相應(yīng)的IP。如果還是無果,只能借助于DNS遞歸解析了。
?
(4)這時(shí),ISP的DNS服務(wù)器就會(huì)開始從根域名服務(wù)器開始遞歸搜索,從.com頂級域名服務(wù)器,到baidu的域名服務(wù)器。
第二部,瀏覽器與網(wǎng)站建立TCP連接
第三部分,瀏覽器發(fā)起GET請求
?
瀏覽器向主機(jī)發(fā)起一個(gè)HTTP-GET方法報(bào)文請求。請求中包含訪問的URL,也就是http://www.baidu.com/ ,還有User-Agent用戶瀏覽器操作系統(tǒng)信息,編碼等。值得一提的是Accep-Encoding和Cookies項(xiàng)。Accept-Encoding一般采用gzip,壓縮之后傳輸html文件。Cookies如果是首次訪問,會(huì)提示服務(wù)器建立用戶緩存信息,如果不是,可以利用Cookies對應(yīng)鍵值,找到相應(yīng)緩存,緩存里面存放著用戶名,密碼和一些用戶設(shè)置項(xiàng)。
?
第四部分,顯示頁面或返回其他
返回狀態(tài)碼200 OK,表示服務(wù)器可以相應(yīng)請求,返回報(bào)文,由于在報(bào)頭中Content-type為“text/html”,瀏覽器以HTML形式呈現(xiàn),而不是下載文件。
?
轉(zhuǎn)載于:https://www.cnblogs.com/william126/p/10886118.html
總結(jié)
以上是生活随笔為你收集整理的测试开发面试准备之HTTP协议-一次完整的Http请求过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 官网,一套代码如何运行多端?
- 下一篇: Flutter 填坑之 表单数据哪里去了