http知识填坑
當(dāng)我們輸入網(wǎng)址回車或者刷新頁面時(shí),瀏覽器和計(jì)算機(jī)做了什么事呢?
首先就是域名解析,1.瀏覽器先搜索自身的DNS緩存
2.若瀏覽器沒有找到緩存或者緩存已經(jīng)失效,那么計(jì)算機(jī)搜索自身的DNS緩存
3.讀取本地的HOST文件
4.瀏覽器發(fā)起一個(gè)DNS的一個(gè)系統(tǒng)調(diào)用
寬帶運(yùn)營商服務(wù)器查看本身緩存
運(yùn)營商服務(wù)器發(fā)起一個(gè)迭代DNS解析的請求
運(yùn)營商服務(wù)器把結(jié)果返回操作系統(tǒng)內(nèi)核同時(shí)緩存起來
操作系統(tǒng)內(nèi)核把結(jié)果返回瀏覽器
瀏覽器就拿到了www.xxxxxx.com的ip地址了?
5.瀏覽器獲得域名對應(yīng)的ip地址后,發(fā)起HTTP經(jīng)典的“三次握手”
6.TCP/IP鏈接建立起來后,瀏覽器就可以向服務(wù)器發(fā)生HTTP請求了
7.服務(wù)器端接受到了這個(gè)請求,根據(jù)路徑參數(shù),經(jīng)過后端的一些處理之后,把處理后的結(jié)果數(shù)據(jù)返回給瀏覽器,比如頁面完整的html代碼返回給瀏覽器
8.瀏覽器拿到了完整的html代碼后,在解析和渲染這個(gè)頁面時(shí),里面js,css,圖片靜態(tài)資源,他們同樣也是一個(gè)個(gè)http請求,都要經(jīng)過上面七個(gè)步驟
9.瀏覽器根據(jù)拿到的資源對頁面進(jìn)行渲染,最終把一個(gè)完整的頁面呈現(xiàn)給用戶
?
而對于三次握手的解釋是這樣的:
?
TCP是主機(jī)對主機(jī)層的傳輸控制協(xié)議,提供可靠的連接服務(wù),采用三次握手確認(rèn)建立一個(gè)連接:
位碼即tcp標(biāo)志位,有6種標(biāo)示:
SYN(synchronous建立聯(lián)機(jī))
ACK(acknowledgement 確認(rèn))
PSH(push傳送)
FIN(finish結(jié)束)
RST(reset重置)
URG(urgent緊急)
Sequence number(順序號碼)
Acknowledge number(確認(rèn)號碼)
客戶端TCP狀態(tài)遷移:
CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED
服務(wù)器TCP狀態(tài)遷移:
CLOSED->LISTEN->SYN收到->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED
?
各個(gè)狀態(tài)的意義如下:?
LISTEN - 偵聽來自遠(yuǎn)方TCP端口的連接請求;?
SYN-SENT -在發(fā)送連接請求后等待匹配的連接請求;?
SYN-RECEIVED - 在收到和發(fā)送一個(gè)連接請求后等待對連接請求的確認(rèn);?
ESTABLISHED- 代表一個(gè)打開的連接,數(shù)據(jù)可以傳送給用戶;?
FIN-WAIT-1 - 等待遠(yuǎn)程TCP的連接中斷請求,或先前的連接中斷請求的確認(rèn);
FIN-WAIT-2 - 從遠(yuǎn)程TCP等待連接中斷請求;?
CLOSE-WAIT - 等待從本地用戶發(fā)來的連接中斷請求;?
CLOSING -等待遠(yuǎn)程TCP對連接中斷的確認(rèn);?
LAST-ACK - 等待原來發(fā)向遠(yuǎn)程TCP的連接中斷請求的確認(rèn);?
TIME-WAIT -等待足夠的時(shí)間以確保遠(yuǎn)程TCP接收到連接中斷請求的確認(rèn);?
CLOSED - 沒有任何連接狀態(tài);
?
TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務(wù),采用三次握手建立一個(gè)連接,
(1)第一次握手:建立連接時(shí),客戶端A發(fā)送SYN包(SYN=j)到服務(wù)器B,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器B確認(rèn)。
(2)第二次握手:服務(wù)器B收到SYN包,必須確認(rèn)客戶A的SYN(ACK=j+1),同時(shí)自己也發(fā)送一個(gè)SYN包(SYN=k),即SYN+ACK包,此時(shí)服務(wù)器B進(jìn)入SYN_RECV狀態(tài)。
(3)第三次握手:客戶端A收到服務(wù)器B的SYN+ACK包,向服務(wù)器B發(fā)送確認(rèn)包ACK(ACK=k+1),此包發(fā)送完畢,客戶端A和服務(wù)器B進(jìn)入ESTABLISHED狀態(tài),完成三次握手。
完成三次握手,客戶端與服務(wù)器開始傳送數(shù)據(jù)。
?
http協(xié)議可以粗暴的分為請求和響應(yīng),請求和響應(yīng)都會發(fā)送http頭和正文信息。http頭發(fā)送的是一些附加的信息:內(nèi)容類型,服務(wù)器發(fā)送響應(yīng)的日期,http狀態(tài)碼。正文的話就是表單的數(shù)據(jù)和返回的數(shù)據(jù)
轉(zhuǎn)載于:https://www.cnblogs.com/cjxblogs/p/6714427.html
總結(jié)
- 上一篇: 构建之法阅读心得(二)
- 下一篇: [bzoj4236]JOIOJI