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