HTTP協(xié)議即為HTTP/IP協(xié)議,其中HTTP為網(wǎng)絡(luò)七層中的應(yīng)用層,IP為網(wǎng)絡(luò)層。
組成
無(wú)論請(qǐng)求還是響應(yīng),都會(huì)有首行、HTTP頭和正文信息,而HTTP頭發(fā)送的就是內(nèi)容類(lèi)型、日期、HTTP狀態(tài)碼等。正文就是表單數(shù)據(jù)。
請(qǐng)求首行基本格式為方法 路徑 版本,舉例:GET /simple.html HTTP/1.1。
響應(yīng)首行基本格式為版本號(hào) 狀態(tài)碼 狀態(tài)文本,舉例:HTTP/1.1 200 OK。
一個(gè)HTTP請(qǐng)求體應(yīng)該包括:
1、請(qǐng)求方式:(POST/GET);
2、path(請(qǐng)求的路徑);
3、search(請(qǐng)求的參數(shù),?后面的內(nèi)容 );
4、Host(主機(jī)名+端口);
5、protocol(請(qǐng)求協(xié)議,一般為HTTP/1.1);
【(僅POST才有的部分)
6、Content-Type(請(qǐng)求內(nèi)容加密方式):application/x-www-form-urlencoded;
7、Content-Length(請(qǐng)求內(nèi)容長(zhǎng)度):如id=2的長(zhǎng)度為4】
在一個(gè)請(qǐng)求中,可以既包括請(qǐng)求參數(shù),也包括請(qǐng)求內(nèi)容,如:
POST/index.jsp?id=3 HTTP/1.1 Host:taobao.com Content-Type:application/x-www-form-urlenconded Content-Length:9
name=bear
特點(diǎn)
- 無(wú)狀態(tài):對(duì)傳輸?shù)臄?shù)據(jù)不具備任何記憶存儲(chǔ)功能;
- 傳輸完畢,即斷開(kāi)連接。http 1.1及以后都保持連接。
HTTPS=HTTP+SSL信任證書(shū)。
問(wèn)答部分
-
提問(wèn):一用戶(hù)訪(fǎng)問(wèn)www.baidu.com,會(huì)經(jīng)過(guò)哪些流程?
答:1、會(huì)先去瀏覽器中搜尋自身DNS緩存,找到后看是否過(guò)時(shí)效。未過(guò)時(shí)效就用;
過(guò)了時(shí)效或未找到就重新繼續(xù)下面的請(qǐng)求。查看chrome的DNS緩存:chrome://net-internals#DNS
2、瀏覽器搜尋操作系統(tǒng)的緩存,同1;
3、讀取本地host文件;
4、瀏覽器發(fā)起一個(gè)DNS的一個(gè)系統(tǒng)調(diào)用;
向本地主控域名服務(wù)器(寬帶運(yùn)營(yíng)商提供)發(fā)起一個(gè)域名解析請(qǐng)求:
? 寬帶運(yùn)營(yíng)商服務(wù)器查看本身緩存;
? 運(yùn)營(yíng)商發(fā)起一個(gè)迭代DNS解析的請(qǐng)求;
5、瀏覽器獲得域名對(duì)應(yīng)的IP后,發(fā)起HTTP“三次握手”,TCP/IP連接請(qǐng)求,經(jīng)過(guò)TCP/IP協(xié)議站,防火墻等;
6、TCP/IP連接建立后,瀏覽器開(kāi)始向服務(wù)器發(fā)送HTTP請(qǐng)求;
7、服務(wù)器接收請(qǐng)求,根據(jù)路徑參數(shù)等,經(jīng)過(guò)后臺(tái)處理,返回處理結(jié)果(如HTML代碼);
8、瀏覽器拿到頁(yè)面代碼后,其中的靜態(tài)資源(如:css,js,圖片等)會(huì)經(jīng)歷上7步;
9、瀏覽器渲染結(jié)果。
運(yùn)營(yíng)商迭代DNS解析的請(qǐng)求:
1)向頂級(jí)服務(wù)器發(fā)起一個(gè)請(qǐng)求,然后頂級(jí)服務(wù)器發(fā)現(xiàn)這是一個(gè)com域的服務(wù)器請(qǐng)求,向其返回com域的頂級(jí)域的IP地址;
2)向com域的IP地址發(fā)起請(qǐng)求,然后返回baidu.com域的IP地址;
3)向baidu.com域的IP地址(如萬(wàn)網(wǎng)、新網(wǎng)等)發(fā)起請(qǐng)求,拿到baidu.com的IP地址。
4)運(yùn)營(yíng)商服務(wù)器把結(jié)果(IP地址)返回給內(nèi)核并緩存起來(lái)(有一定時(shí)效)。
5)操作系統(tǒng)內(nèi)核把結(jié)果返回給瀏覽器。
參考:https://www.imooc.com/article/1851。
XXX(imooc某一前端課程,后期補(bǔ)充)。