一次完整的http請(qǐng)求過程分析

瀏覽器輸入一個(gè)URL回車后,會(huì)發(fā)生什么呢?
一、http請(qǐng)求的完整過程簡述
1、域名解析:使用DNS協(xié)議進(jìn)行域名解析
2、建立連接:發(fā)起TCP三次握手
3、發(fā)起http請(qǐng)求:建立TCP連接成功后,瀏覽器發(fā)起http請(qǐng)求
4、響應(yīng)http請(qǐng)求:服務(wù)端響應(yīng)http請(qǐng)求,瀏覽器得到返回response
5、解析response:瀏覽器解析response,并請(qǐng)求其它的資源(如js、css等)
6、瀏覽器渲染展示頁面:瀏覽器根據(jù)內(nèi)核對(duì)頁面進(jìn)行渲染展示
7、斷開連接:TCP四次揮手
二、http請(qǐng)求過程舉例詳述
比如訪問:www.dbjr.com.cn,具體流程:
1、通過DNS域名解析到IP
解析順序:
1.1 瀏覽器搜索自己的DNS緩存
1.2 如果瀏覽器自身緩存里找不到,就會(huì)去搜索操作系統(tǒng)自身的DNS緩存
1.3 以上兩個(gè)都無,則嘗試從操作系統(tǒng)的hosts文件里面找位置一般在C:\Windows\System32\drivers\etc\hosts)
1.4 上面三個(gè)過程都沒有獲取到的話,就遞歸的去域名服務(wù)器去查找
2、通過IP使用ARP地址解析協(xié)議,找到對(duì)應(yīng)的服務(wù)器
3、找到服務(wù)器后,發(fā)起TCP三次握手建立連接
在 HTTP 工作開始之前,瀏覽器 首先要通過網(wǎng)絡(luò)與 服務(wù)器建立連接,該連接是通過TCP來完成的,該協(xié)議與 IP 協(xié)議共同構(gòu)建 Internet,即著名的 TCP/IP 協(xié)議,因此 Internet 又被稱作是TCP/IP網(wǎng)絡(luò)。HTTP 是比 TCP 更高層次的應(yīng)用層協(xié)議,根據(jù)規(guī)則,只有低層協(xié)議建立之后才能進(jìn)行更高層協(xié)議的連接,因此,首先要建立 TCP 連接,一般TCP連接的端口號(hào)是80。建立TCP連接需要找到連接主機(jī),所以需要先解析域名得到 IP 再找到主機(jī)進(jìn)行3 次握手建立TCP連接(兩臺(tái)電腦之間建立一個(gè)通信橋梁)
4、建立TCP請(qǐng)求后,發(fā)起HTTP請(qǐng)求
一旦建立了 TCP 連接, 瀏覽器就會(huì)向 服務(wù)器發(fā)送請(qǐng)求命令
5、服務(wù)器響應(yīng)HTTP請(qǐng)求,返回RESPONSE
瀏覽器向服務(wù)器發(fā)出請(qǐng)求后,服務(wù)器會(huì)對(duì)其進(jìn)行應(yīng)答,應(yīng)答內(nèi)容包括:協(xié)議的版本號(hào)和應(yīng)答狀態(tài)碼 :HTTP/1.1 200 OK,響應(yīng)頭信息來記錄服務(wù)器自己的數(shù)據(jù),被請(qǐng)求的文檔內(nèi)容。最后發(fā)送一個(gè)空白行來表示頭信息的發(fā)送到此為結(jié)束,接著以Content-Type響應(yīng)頭信息所描述的格式發(fā)送用戶所請(qǐng)求的實(shí)際數(shù)據(jù)
6、瀏覽器解析response,并請(qǐng)求其它的資源文件(js、css等)
瀏覽器接收服務(wù)器應(yīng)答回來的 html 代碼和css,和js代碼再進(jìn)行頁面的渲染或者接收到應(yīng)答的文件進(jìn)行保存等操作
7、瀏覽器進(jìn)行渲染界面
根據(jù)解析內(nèi)容渲染呈現(xiàn)給用戶
8、四次揮手,斷開tcp連接
斷開不一定是在最后一步,根據(jù)是否是長連接,來決定什么時(shí)候斷開
一般情況下,服務(wù)器向?yàn)g覽器發(fā)送了響應(yīng)數(shù)據(jù),就可關(guān)閉 TCP 連接,但如果瀏覽器或者服務(wù)器在其頭信息加入了這行代碼:Connection:keep-alive,即代表長連接,可以先不斷開連接。
TCP連接在發(fā)送后將仍然保持打開狀態(tài),瀏覽器可以繼續(xù)通過相同的連接發(fā)送請(qǐng)求。保持連接節(jié)省了為每個(gè)請(qǐng)求建立新連接所需的時(shí)間,還節(jié)約了網(wǎng)絡(luò)帶寬
三、總結(jié)&擴(kuò)展
完整的http請(qǐng)求包含:
瀏覽器發(fā)起請(qǐng)求-> 解析域名得到ip進(jìn)行TCP連接 ->瀏覽器發(fā)送HTTP請(qǐng)求和頭信息發(fā)送->服務(wù)器對(duì)瀏覽器進(jìn)行應(yīng)答,響應(yīng)頭信息和瀏覽器所需的內(nèi)容-> 關(guān)閉TCP連接或保持-> 瀏覽器得到數(shù)據(jù)數(shù)據(jù)進(jìn)行渲染
到此這篇關(guān)于一次完整的http請(qǐng)求過程分析的文章就介紹到這了,更多相關(guān)http請(qǐng)求過程內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!
相關(guān)文章
三大網(wǎng)絡(luò)管理協(xié)議:SNMP、NETCONF、RESTCONF介紹
本文將詳細(xì)介紹三種主要的協(xié)議:SNMP(Simple Network Management Protocol)、NETCONF(Network Configuration Protocol)和RESTCONF,需要的朋友可以參考下2024-02-13- 常見的網(wǎng)絡(luò)協(xié)議有:TCP/IP協(xié)議、UDP協(xié)議、HTTP協(xié)議、FTP協(xié)議等,本文就詳細(xì)的介紹一下常見的網(wǎng)絡(luò)協(xié)議,通過這些具體的協(xié)議更深刻的認(rèn)識(shí)整體網(wǎng)絡(luò)的傳輸流程及相關(guān)網(wǎng)絡(luò)原理,2023-05-30
- 本文主要介紹了L2TP和PPTP的區(qū)別,主要的前區(qū)別在于用途不同、使用要求不同,下面就來介紹一下L2TP和PPTP的聯(lián)系與區(qū)別,感興趣的可以了解一下2023-05-30
自組織網(wǎng)絡(luò)Ad Hoc之OLSR 協(xié)議詳解
這篇文章主要介紹了自組織網(wǎng)絡(luò)Ad Hoc之OLSR 協(xié)議詳解,需要的朋友可以參考下2023-05-08自組織網(wǎng)絡(luò)Ad Hoc之AODV協(xié)議詳解
這篇文章主要介紹了自組織網(wǎng)絡(luò)Ad Hoc之AODV協(xié)議詳解,需要的朋友可以參考下2023-05-08自組織網(wǎng)絡(luò)Ad Hoc 網(wǎng)絡(luò)基礎(chǔ)知識(shí)
自組織網(wǎng)絡(luò)(Ad Hoc)是一種移動(dòng)通信和計(jì)算機(jī)網(wǎng)絡(luò)相結(jié)合的網(wǎng)絡(luò),是移動(dòng)計(jì)算機(jī)網(wǎng)絡(luò)的一種,用戶終端可以在網(wǎng)絡(luò)內(nèi)隨意移動(dòng)而保持通信2023-05-08- 瀏覽器輸入一個(gè)URL回車后,會(huì)發(fā)生什么呢?這里就為大家分享一下,需要的朋友可以參考下2022-10-19
- 本篇主要是對(duì)網(wǎng)絡(luò)協(xié)議進(jìn)行一個(gè)歸納總結(jié),方便后續(xù)查閱及復(fù)習(xí),當(dāng)然如有新的認(rèn)知或新的理解,也會(huì)持續(xù)更新2022-10-19
- 今日回顧網(wǎng)絡(luò)知識(shí)時(shí),發(fā)現(xiàn)自己專門整理過一篇關(guān)于日常生活中常見的網(wǎng)絡(luò)協(xié)議知識(shí)以及作用的梳理,特發(fā)此一貼,也當(dāng)給自己鞏固網(wǎng)絡(luò)知識(shí)了,如有錯(cuò)誤,望各大佬指正2022-10-19
HTTP協(xié)議的8種請(qǐng)求方式及常用請(qǐng)求方式的解析
HTTP即超文本傳輸協(xié)議,是一種實(shí)現(xiàn)客戶端和服務(wù)器之間通信的響應(yīng)協(xié)議,它是用作客戶端和服務(wù)器之間的請(qǐng)求,需要的朋友可以參考下2022-10-19