一、輸入網(wǎng)址,再按回車后面發(fā)生了什么
輸入網(wǎng)址,再按回車后面會(huì)發(fā)生:a.域名解析;b.發(fā)起TCP的3次握手;c.建立TCP連接后發(fā)起http請求;d.服務(wù)器端響應(yīng)http請求,瀏覽器得到html代碼;e.瀏覽器解析html代碼,并請求html代碼中的資源;f.瀏覽器對頁面渲染呈現(xiàn)給用戶。
總體的訪問過程
首先會(huì)進(jìn)行DNS解析,然后解析得到地址之后客戶端和web服務(wù)器會(huì)建立一條TCP連接,其中有一個(gè)TCP三次握手過程,當(dāng)完成握手之后客戶端就會(huì)向?yàn)g覽器發(fā)送一條請求報(bào)文,服務(wù)器然后進(jìn)行響應(yīng),接著當(dāng)數(shù)據(jù)傳輸完之后,服務(wù)器和客戶端有一個(gè)TCP四次揮手過程,來結(jié)束連接。
dns解析流程
在瀏覽器中輸入網(wǎng)址回車后,首先系統(tǒng)會(huì)去找這個(gè)域名對應(yīng)的ip,然后再根據(jù)這個(gè)ip地址查找web服務(wù)器,
這里面有個(gè)DNS解析流程
??? 1、系統(tǒng)首先查找本地的DNS緩存和hosts文件信息,確認(rèn)是否有www.baidu.com對應(yīng)的ip地址,如果有就直接訪問這個(gè)ip地址對應(yīng)的www.baidu.com web服務(wù)器
??? 2、如果沒有,那么系統(tǒng)會(huì)將解析請求發(fā)送給本機(jī)網(wǎng)卡指定的DNS服務(wù)器,稱為LDNS(本地dns),如果本地DNS服務(wù)器中有域名www.baidu.com所對應(yīng)的的ip地址,就會(huì)去訪問這個(gè)IP對應(yīng)的web服務(wù)器,如果沒有就去請求其他DNS服務(wù)器
??? 3、LDNS服務(wù)器會(huì)從根域名服務(wù)器開始對于域名www.baidu.com的解析,全球有13臺(tái)根服務(wù)器,根域名服務(wù)器沒有www.baidu.com的解析記錄,有.com拔尖域的解析記錄,然后把.com所對應(yīng)的DNS服務(wù)器地址返回給LDNS服務(wù)器
??? 4、LDNS獲取到.com的DNS服務(wù)器地址之后,就去.com服務(wù)器請求www.baidu.com域名的解析,.com里面也沒有www.baidu.com域名對應(yīng)的地址,但是有baidu.com域名的解析記錄,然后.com服務(wù)器將baidu.com對應(yīng)的DNS服務(wù)器地址返回給LDNS,
??? 5、同理LDNS去找baidu.com的DNS服務(wù)器請求www.baidu.com的域名解析,然后baidu.com域名DNS服務(wù)器將www.baidu.com地址對應(yīng)的IP解析記錄發(fā)送回給LDNS
??? 6、LDNS把解析出的結(jié)果www.baidu.com對應(yīng)的ip地址發(fā)送給客戶端的瀏覽器,然后也記錄到緩存中
延伸閱讀:
二、請求報(bào)文有什么
請求報(bào)文包括:請求行,請求頭部,空白行,請求報(bào)文主體
請求行:
用來說明客戶端想要做什么,內(nèi)容包括方法字段(請求方法包括:GET:請求指定資源,HEAD,請求響應(yīng)報(bào)文的首部,
POST:提交數(shù)據(jù)到服務(wù)器,PUT:傳送的數(shù)據(jù)取代指定的文檔內(nèi)容,DELETE:刪除Request-URI所標(biāo)識的資源,MOVE:移動(dòng))、URL字段以及HTTP協(xié)議版本(最開始的0.9版本,后來又有了1.0,1.1,2.0,其中1.1是主流)
請求頭:
通過客戶端把請求的相關(guān)信息發(fā)給服務(wù)器,內(nèi)容包括媒體類型,語言類型,主機(jī)名等信息
空行:
告訴服務(wù)器空行以下內(nèi)容不屬于請求頭部信息
請求報(bào)文主體:
用來說明客戶端具體想要做的事情