一、DNS 域名解析 —— 獲取IP地址
- 什么叫DNS域名解析:大白話,就是將URL解析成對(duì)應(yīng)的IP
- 瀏覽器DNS域名解析順序:
本地hosts文件查詢對(duì)應(yīng)IP,如果有有,告訴瀏覽器去訪問(wèn)對(duì)應(yīng)的IP
如果沒(méi)有,去DNS服務(wù)器尋找 - DNS服務(wù)器層次結(jié)構(gòu)
DNS服務(wù)器層次結(jié)構(gòu)
- DNS服務(wù)器遞歸查詢和迭代查詢
DNS服務(wù)器遞歸查詢和迭代查詢
- 客戶端首先,拿著域名去本地hosts遞歸查詢,如果查詢到了www.cnblogs.com對(duì)應(yīng)的IP之后,直接執(zhí)行第8步,后面就不需要去根DNS服務(wù)器查詢IP了
- 如果本地沒(méi)有查詢到IP,就去根DNS服務(wù)器,根DNS服務(wù)器注意到其com后綴,于是向本地DNS服務(wù)器返回comDNS服務(wù)器的IP地址。本地DNS服務(wù)器再次向comDNS服務(wù)器發(fā)送查詢請(qǐng)求,comDNS服務(wù)器注意到其www.cnblogs.com后綴并用負(fù)責(zé)該域名的權(quán)威DNS服務(wù)器的IP地址作為回應(yīng)。最后,本地DNS服務(wù)器將含有www.cnblogs.com的IP地址的響應(yīng)報(bào)文發(fā)送給客戶端。
二、建立TCP鏈接 —— 三次握手結(jié)束,連接成功
找到了IP,我們就開(kāi)始建立TCP連接
-
與服務(wù)器連接(三次握手)
三次握手
客戶端發(fā)送一個(gè)帶有SYN標(biāo)志的數(shù)據(jù)包給服務(wù)端,服務(wù)端收到后,回傳一個(gè)帶有SYN/ACK標(biāo)志的數(shù)據(jù)包以示傳達(dá)確認(rèn)信息,最后客戶端再回傳一個(gè)帶ACK標(biāo)志的數(shù)據(jù)包,代表握手結(jié)束,連接成功。
三、發(fā)送HTTP請(qǐng)求 —— 發(fā)送請(qǐng)求 request
請(qǐng)求包含:行頭體
- 行
POST Http://www.xxx.com HTTP/1.1
- 行
Connection: keep-alive
Content-Length: 612
Accept: application/json, text/plain, */*
Origin: http://192.168.5.104:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Content-Type: application/json;charset=UTF-8
Referer: http://192.168.5.104:8080/businessView
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: OUTFOX_SEARCH_USER_ID_NCOO=1076356267.7392054
- 體
{a:1,b:1}
四、服務(wù)器處理請(qǐng)求 —— 后端獲取HTTP請(qǐng)求,根據(jù)需求處理
這個(gè)太靈活了,自行發(fā)揮想象后端小哥如何處理前端給來(lái)的數(shù)據(jù),大概流程圖

HTTP一條龍流程圖
五、返回響應(yīng)結(jié)構(gòu) —— HTTP響應(yīng)
響應(yīng)和請(qǐng)求差不多,包含行頭體
HTTP/1.1 504 Gateway Timeout
X-Powered-By: Express
Date: Mon, 09 Dec 2019 01:20:50 GMT
Connection: keep-alive
Transfer-Encoding: chunked
六、關(guān)閉TCP連接
為了避免服務(wù)器與客戶端雙方的資源占用和損耗,當(dāng)雙方?jīng)]有請(qǐng)求或響應(yīng)傳遞時(shí),任意一方都可以發(fā)起關(guān)閉請(qǐng)求。與創(chuàng)建TCP連接的3次握手類似,關(guān)閉TCP連接,需要4次握手。

image.png


