問(wèn)題1:當(dāng)我們?cè)跒g覽器中輸入網(wǎng)址犁柜,按下回車堂淡,具體發(fā)生了什么?
對(duì)網(wǎng)址進(jìn)行DNS解析绢淀,得到對(duì)應(yīng)的IP地址。
根據(jù)這個(gè)IP地址覆履,找到對(duì)應(yīng)的服務(wù)器硝全,并發(fā)起TCP的三次握手。
建立TCP連接后會(huì)發(fā)起HTTP請(qǐng)求伟众。
服務(wù)器響應(yīng)HTTP請(qǐng)求召廷。
瀏覽器解析得到html代碼。
請(qǐng)求html代碼中的資源(如js先紫、css筹煮、圖片等)。
瀏覽器對(duì)頁(yè)面進(jìn)行渲染呈現(xiàn)給用戶本冲。
服務(wù)器關(guān)閉關(guān)閉TCP連接变屁。
問(wèn)題2:DNS是什么?
DNS一般指域名系統(tǒng)疮胖。域名系統(tǒng)(英文:Domain Name System澎灸,縮寫:DNS)是互聯(lián)網(wǎng)的一項(xiàng)服務(wù)。
問(wèn)題3:DNS是如何找到域名的性昭?
瀏覽器會(huì)檢查自身的DNS緩存中有沒(méi)有對(duì)應(yīng)的ip地址(緩存時(shí)間比較短县遣,大概只有1分鐘汹族,且只能容納1000條緩存)
如果還沒(méi)有找到顶瞒,則去 hosts文件里面去找
如果host文件沒(méi)有配置元旬,那么就會(huì)去本地區(qū)DNS域名服務(wù)器進(jìn)行查找。比如:小區(qū)的網(wǎng)絡(luò)提供商匀归。
本地區(qū)DNS域名服務(wù)器也不能解析,會(huì)去根域名服務(wù)器請(qǐng)求解析(.com.cn.org等根域名服務(wù)器)袱贮。
根域名服務(wù)器查詢并返回域名對(duì)應(yīng)的服務(wù)器的地址字柠。根域名服務(wù)器通常是你注冊(cè)的域名服務(wù)器。
Name Server域名服務(wù)器會(huì)查詢存儲(chǔ)的域名和ip的映射關(guān)系表窑业。
把解析的結(jié)果緩存在本地系統(tǒng)緩存中枕屉,域名解析過(guò)程結(jié)束。
問(wèn)題4:為什么HTTP協(xié)議要基于TCP來(lái)實(shí)現(xiàn)搀擂?
TCP(傳輸層)是一個(gè)端到端的可靠的面相連接的協(xié)議,HTTP基于傳輸層TCP協(xié)議不用擔(dān)心數(shù)據(jù)傳輸?shù)母鞣N問(wèn)題(當(dāng)發(fā)生錯(cuò)誤時(shí)喷市,會(huì)重傳)
問(wèn)題5:說(shuō)一下三次握手品姓?
拿到域名對(duì)應(yīng)的IP地址后腹备,瀏覽器會(huì)根據(jù)IP找到服務(wù)器斤蔓,根據(jù)端口號(hào)找到所在服務(wù)中的web服務(wù),發(fā)送一個(gè)TCP報(bào)文漂羊。(我準(zhǔn)備好了喊儡,你準(zhǔn)備好了嗎)
這個(gè)請(qǐng)求到達(dá)服務(wù)端后,服務(wù)端會(huì)給予前端確認(rèn)收到的響應(yīng)信息(報(bào)文)。(我也準(zhǔn)備好了匆赃,你確認(rèn)下)
瀏覽器接收到來(lái)自服務(wù)器確認(rèn)收到報(bào)文后今缚,明確了從客戶端到服務(wù)器的數(shù)據(jù)傳輸是正常的,并返回一段TCP報(bào)文瞬项。(確認(rèn)成功)
問(wèn)題6:聊一聊四次揮手何荚?
(斷開請(qǐng)求鏈接 2 次, 斷開響應(yīng)鏈接 2 次)
客戶端告訴服務(wù)端:請(qǐng)求數(shù)據(jù)發(fā)送完畢餐塘,可以斷開
服務(wù)端告訴客戶端:請(qǐng)求數(shù)據(jù)接受完畢,可以斷開
服務(wù)端告訴客戶端:響應(yīng)數(shù)據(jù)發(fā)送完畢戒傻,可以斷開
客戶端告訴服務(wù)端:響應(yīng)數(shù)據(jù)接受完畢税手,可以斷開