瀏覽器和服務(wù)器是怎么勾搭上的

Web服務(wù)器收到請求的消息后秽晚,會對其中的內(nèi)容進行解析罢杉,通過URI和方法判斷“對什么”“進行什么樣的操作”馆衔,然后將結(jié)果存放在響應(yīng)消息中井誉,在響應(yīng)消息的開頭有一個狀態(tài)碼蕉扮,用來表示操作的執(zhí)行結(jié)果成功還是出現(xiàn)了錯誤,狀態(tài)碼后面是頭字段和網(wǎng)頁數(shù)據(jù)颗圣。響應(yīng)消息發(fā)送給客戶端喳钟,客戶端收到后從響應(yīng)消息中讀取數(shù)據(jù)并顯示。HTTP的整個工作完成在岂。

在HTTP方法中奔则,最常用的一個方法是 GET 方法。一般訪問Web服務(wù)器獲取網(wǎng)頁數(shù)據(jù)時蔽午,使用的就是GET方法易茬。

在請求消息中寫上GET方法,然后在URI中寫上存放網(wǎng)頁數(shù)據(jù)的文件名“/dir/file.html”,表示我們需要獲取“/dir/file.html”文件中的數(shù)據(jù)抽莱,當Web服務(wù)器拿到請求消息后范抓,會打開“/dir/file.html”文件并讀取里面的數(shù)據(jù),然后將讀取到數(shù)據(jù)存入響應(yīng)消息中食铐,返回給客戶端匕垫。

在上面的表格中還有一個常用的方法:POST,在表單中填寫數(shù)據(jù)時將其發(fā)送給Web服務(wù)器時會使用這個方法虐呻。使用POST方法時象泵,URI會指定Web服務(wù)器中的一個運行程序的文件名,然后在請求消息中除了方法和URI外斟叼,再加上傳遞給應(yīng)用程序和腳本的數(shù)據(jù)當服務(wù)器收到消息后单芜,Web服務(wù)器會將請求消息中的數(shù)據(jù)發(fā)送給URI指定的應(yīng)用程序,Web服務(wù)器從應(yīng)用程序接收輸出結(jié)果犁柜,會將結(jié)果存入響應(yīng)消息中并返回給客戶端

————————————————

版權(quán)聲明:本文為CSDN博主「白日夢小說家」的原創(chuàng)文章洲鸠,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明馋缅。

原文鏈接:https://blog.csdn.net/qq_41343202/article/details/107126390


生成HTTP請求消息在對URL進行解析后扒腕,瀏覽器確定了Web服務(wù)器和文件名,

接下來就是根據(jù)這些信息生成HTTP請求消息萤悴。 下面說一說HTTP請求消息的格式瘾腰。



瀏覽器和服務(wù)器建立一次鏈接流程

良言SE

于 2020-04-29 07:40:36 發(fā)布

260

收藏

版權(quán)

http 協(xié)議

協(xié)議頭? 域名 --->ip

ip:網(wǎng)絡(luò)電腦的id

dns服務(wù)器: 一臺遠程電腦,用于保存域名和ip的map

dns的ip

hosts 文件保存路徑: 本地dns,優(yōu)先查找本地hosts文件

localhost

127.0.0.1

管理員權(quán)限(防止釣魚網(wǎng)站)

ping? ip

端口號: 默認隱藏,指定軟件

http? 80

https? 443

瀏覽器訪問服務(wù)器

http url

域名---dns--ip:port

靜態(tài)文件

動態(tài)文件-->編譯解析-->靜態(tài)文件

http請求報文

長連接

3次握手4次揮手(無狀態(tài)連接狀態(tài))

tcp/ip 鏈接

發(fā)送http請求

服務(wù)器響應(yīng)

瀏覽器響應(yīng)

斷開連接

客戶端渲染解析

觀察http請求工具

http 請求報文

請求行 請求頭 空行表示請求頭協(xié)議結(jié)束 請求正文

{

? ? user-agent:'',// 客戶端信息, 做瀏覽器兼容

? ? accept:'',// 告知客戶端可解析信息

? ? accept-language:'',// 告知服務(wù)器/ 中文/繁體中文/英文

? ? referer:'',// 表示來自哪個連接點擊進來,用于返回,重定向,競價排名

? ? method:'',//get/post

? ? path:url,

? ? type:'application/json',

? ? data:data,// 請求參數(shù)

}

http 響應(yīng)報文

{

? ? status:'200',// 200 ok? 3xx 重定向? 4xx 客戶端錯誤 5xx 服務(wù)端錯誤

? ? content-length:'',// 描述下載進度

? ? content-type:'',//告知客戶端解析格式

}

————————————————

版權(quán)聲明:本文為CSDN博主「良言SE」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議覆履,轉(zhuǎn)載請附上原文出處鏈接及本聲明蹋盆。

原文鏈接:https://blog.csdn.net/qq_32265719/article/details/105830917

一次完整的HTTP請求過程是怎么樣的呢?【圖文詳解】

Youan

29 人贊同了該文章

前言

概述

過程詳解

一硝全、DNS解析

二栖雾、TCP三次握手

三、 發(fā)起HTTP請求

四伟众、服務(wù)器響應(yīng)HTTP請求

五析藕、瀏覽器解析

六、瀏覽器進行頁面渲染

七凳厢、服務(wù)器關(guān)閉TCP連接



1瀏覽器進行DNS域名解析账胧,得到對應(yīng)的IP地址

2根據(jù)這個IP,找到對應(yīng)的服務(wù)器建立連接(三次握手)

3建立TCP連接后發(fā)起HTTP請求(一個完整的http請求報文)

4服務(wù)器響應(yīng)HTTP請求先紫,瀏覽器得到html代碼(服務(wù)器如何響應(yīng))

5瀏覽器解析html代碼治泥,并請求html代碼中的資源(如js、css遮精、圖片等)

6瀏覽器對頁面進行渲染呈現(xiàn)給用戶

7服務(wù)器關(guān)閉TCP連接(四次揮手)

1 當用戶在瀏覽器中輸入域名后居夹,瀏覽器會向 DNS 服務(wù)器發(fā)送 DNS 請求,獲取指定域名的 IP 地址。DNS 服務(wù)器收到請求包后吮播,會發(fā)送響應(yīng)包,返回對應(yīng)的 IP 地址眼俊。瀏覽器根據(jù)響應(yīng)包中的 IP 地址意狠,訪問對應(yīng)的網(wǎng)站域名解析就是將域名轉(zhuǎn)化為對應(yīng)的 IP 地址,該工作由 DNS 服務(wù)器完成疮胖。本節(jié)將講解域名解析的整個环戈。


1) 客戶端通過瀏覽器訪問域名為 www.baidu.com (http://www.baidu.com) 的網(wǎng)站,發(fā)起查詢該域名的 IP 地址的 DNS 請求澎灸。該請求發(fā)送到了本地 DNS 服務(wù)器上院塞。本地 DNS 服務(wù)器會首先查詢它的緩存記錄,如果緩存中有此條記錄性昭,就可以直接返回結(jié)果拦止。如果沒有,本地 DNS 服務(wù)器還要向 DNS 根服務(wù)器進行查詢糜颠。2) 本地 DNS 服務(wù)器向根服務(wù)器發(fā)送 DNS 請求汹族,請求域名為 www.baidu.com (http://www.baidu.com) 的 IP 地址。3) 根服務(wù)器經(jīng)過查詢其兴,沒有記錄該域名及 IP 地址的對應(yīng)關(guān)系顶瞒。但是會告訴本地 DNS 服務(wù)器,可以到域名服務(wù)器上繼續(xù)查詢元旬,并給出域名服務(wù)器的地址(.com 服務(wù)器)榴徐。4) 本地 DNS 服務(wù)器向 .com 服務(wù)器發(fā)送 DNS 請求,請求域名 www.baidu.com (http://www.baidu.com) 的 IP 地址匀归。5)?.com 服務(wù)器收到請求后坑资,不會直接返回域名和 IP 地址的對應(yīng)關(guān)系,而是告訴本地 DNS 服務(wù)器穆端,該域名可以在 baidu.com 域名服務(wù)器上進行解析獲取 IP 地址盐茎,并告訴 baidu.com 域名服務(wù)器的地址。6) 本地 DNS 服務(wù)器向 baidu.com 域名服務(wù)器發(fā)送 DNS 請求徙赢,請求域名 www.baidu.com (http://www.baidu.com) 的 IP 地址字柠。7) baidu.com 服務(wù)器收到請求后,在自己的緩存表中發(fā)現(xiàn)了該域名和 IP 地址的對應(yīng)關(guān)系狡赐,并將IP地址返回給本地 DNS 服務(wù)器窑业。8) 本地 DNS 服務(wù)器將獲取到與域名對應(yīng)的 IP 地址返回給客戶端,并且將域名和 IP 地址的對應(yīng)關(guān)系保存在緩存中枕屉,以備下次別的用戶查詢時使用常柄。


2【TCP/IP】三次握手過程及原因


三次握手 建立起 TCP連接 的 reliable,分配初始序列號和資源,在相互確認之后開始數(shù)據(jù)的傳輸西潘。有 主動打開(一般是client) 和 被動打開(一般是server)卷玉。TCP使用3次握手建立一條連接,該握手初始化了傳輸可靠性以及數(shù)據(jù)順序性必要的信息喷市,這些信息包括兩個方向的初始序列號相种,確認號由初始序列號生成,使用3次握手是因為3次握手已經(jīng)準備好了傳輸可靠性以及數(shù)據(jù)順序性所必要的信息品姓,該握手的第3次實際上并不是需要單獨傳輸?shù)那薏ⅲ耆梢院蛿?shù)據(jù)一起傳輸。詳細過程如下所示:第一步腹备,Client會進入SYN_SENT狀態(tài)衬潦,并發(fā)送Syn 消息給Server端,SYN標志位在此場景下被設(shè)置為1植酥,同時會帶上Client這端分配好的Seq號镀岛,這個序列號是一個U32的整型數(shù),該數(shù)值的分配是根據(jù)時間產(chǎn)生的一個隨機值友驮,通常情況下每間隔4ms會加1哎媚。除此之外還會帶一個MSS,也就是最大報文段長度喊儡,表示Tcp傳往另一端的最大數(shù)據(jù)塊的長度拨与。第二步,Server端在收到艾猜,Syn消息之后买喧,會進入SYN_RCVD狀態(tài),同時返回Ack消息給Client匆赃,用來通知Client淤毛,Server端已經(jīng)收到SYN消息并通過了確認。這一步Server端包含兩部分內(nèi)容算柳,一部分是回復(fù)Client的Syn消息低淡,其中ACK=1,Seq號設(shè)置為Client的Syn消息的Seq數(shù)值+1瞬项;另一部分是主動發(fā)送Sever端的Syn消息給Client蔗蹋,Seq號碼是Server端上面對應(yīng)的序列號,當然Syn標志位也會設(shè)置成1囱淋,MSS表示的是Server這一端的最大數(shù)據(jù)塊長度猪杭。第三步,Client在收到第二步消息之后妥衣,首先會將Client端的狀態(tài)從SYN_SENT變換成ESTABLISHED,此時Client發(fā)消息給Server端皂吮,這個方向的通道已經(jīng)建立成功戒傻,Client可以發(fā)送消息給Server端了,Server端也可以成功收到這些消息蜂筹。其次需纳,Client端需要回復(fù)ACK消息給Server端,消息包含ACK狀態(tài)被設(shè)置為1艺挪,Seq號碼被設(shè)置成Server端的序列號+1不翩。(備注:這一步往往會與Client主動發(fā)起的數(shù)據(jù)消息,合并到一起發(fā)送給Server端闺属。)第四步,Server端在收到這個Ack消息之后周霉,會進入ESTABLISHED狀態(tài)掂器,到此時刻Server發(fā)向Client的通道連接建立成功,Server可以發(fā)送數(shù)據(jù)給Client俱箱,TCP的全雙工連接建立完成国瓮。作者:灰常出色鏈接:http://www.reibang.com/p/cd379b79b9be來源:簡書著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)狞谱,非商業(yè)轉(zhuǎn)載請注明出處乃摹。

三次握手的狀態(tài)轉(zhuǎn)換?TCP的狀態(tài)變化圖如下所示跟衅,Client和Server的初始狀態(tài)都是CLOSED狀態(tài)孵睬,其

Client:CLOSED-----發(fā)送Syn 消息--->SYN_SENT-----收到Server端發(fā)回的SYN+ACK--->ESTABLISHED---發(fā)送和接收數(shù)據(jù)-->......Server:CLOSED----收到Client端發(fā)送過來的SYN消息-->SYN_RCVD-----發(fā)送SYN+ACK消息--->SYN_RCVD----收到Client發(fā)回來的ACK消息--->ESTABLISHED-----發(fā)送和接收數(shù)據(jù)-->......作者:灰常出色鏈接:http://www.reibang.com/p/cd379b79b9be來源:簡書著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)伶跷,非商業(yè)轉(zhuǎn)載請注明出處掰读。



:connect時,觸發(fā)了連接請求叭莫,向服務(wù)器發(fā)送了SYN J包蹈集,這時connect進入阻塞狀態(tài);服務(wù)器監(jiān)聽到連接請求雇初,即收到SYN J包拢肆,調(diào)用accept函數(shù)接收請求向客戶端發(fā)送SYN K ,ACK J+1靖诗,這時accept進入阻塞狀態(tài)郭怪;客戶端收到服務(wù)器的SYN K ,ACK J+1之后刊橘,這時connect返回移盆,并對SYN K進行確認;服務(wù)器收到ACK K+1時伤为,accept返回咒循,至此三次握手完畢据途,連接建立作者:灰常出色鏈接:http://www.reibang.com/p/cd379b79b9be來源:簡書著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)叙甸,非商業(yè)轉(zhuǎn)載請注明出處颖医。

爬蟲基礎(chǔ)—HTTP基本原理_W_chuanqi的博客-CSDN博客這個

5 html頁面主要由dom、css裆蒸、javascript等部分構(gòu)成熔萧,其中css和javascript既能內(nèi)聯(lián)也能以腳本的形式引入,當然html中還可能引入img僚祷、iframe等其他資源佛致。其實所有的這些資源也是以dom標簽的形式嵌入在html頁面中的,因此本篇總結(jié)說的html解析過程就是dom的解析過程辙谜。 1 dom解析過程 整個dom的解析過程是順序俺榆,并且漸進式的。 順序指的是從第一行開始装哆,一行一行依次解析罐脊;漸進式則指得是瀏覽器會迫不及待的將解析完成的部分顯示出來,如果我們做下面這個實驗會發(fā)現(xiàn)蜕琴,在斷點處第一個div已經(jīng)在瀏覽器渲染出來了:作者:iamswf鏈接:https://juejin.cn/post/6844903745730396174來源:稀土掘金著作權(quán)歸作者所有萍桌。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處凌简。

既然dom是從第一行按順序解析上炎,那么我們怎么判斷dom何時解析完成呢?這個問題應(yīng)該經(jīng)常會在面試中問到雏搂,比如一般會問:window.onload和DOMContentLoaded有什么區(qū)別反症?

其實就是想看看是不是明白dom樹何時構(gòu)建完成,這個問題確實很重要畔派,尤其是對于幾年前的jquery技術(shù)棧來說铅碍,因為我們使用javascript操作dom或者給dom綁定事件有個前提條件就是需要dom樹已經(jīng)創(chuàng)建完成。整個html頁面的dom解析完成時线椰,dom樹也就構(gòu)建完成了胞谈。dom樹構(gòu)建完成后document對象會派發(fā)事件DOMContentLoaded來通知dom樹已構(gòu)建完成。作者:iamswf鏈接:https://juejin.cn/post/6844903745730396174來源:稀土掘金著作權(quán)歸作者所有憨愉。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)烦绳,非商業(yè)轉(zhuǎn)載請注明出處。


六 瀏覽器如何渲染網(wǎng)頁 要了解瀏覽器渲染頁面的過程配紫,首先得知道一個名詞——關(guān)鍵渲染路徑径密。關(guān)鍵渲染路徑是指瀏覽器從最初接收請求來的HTML、CSS躺孝、javascript等資源享扔,然后解析底桂、構(gòu)建樹、渲染布局惧眠、繪制籽懦,最后呈現(xiàn)給用戶能看到的界面這整個過程。 用戶看到頁面實際上可以分為兩個階段:頁面內(nèi)容加載完成和頁面資源加載完成氛魁,分別對應(yīng)于DOMContentLoaded和Load暮顺。 DOMContentLoaded事件觸發(fā)時嘹锁,僅當DOM加載完成恨课,不包括樣式表,圖片等 load事件觸發(fā)時豁鲤,頁面上所有的DOM或链,樣式表惫恼,腳本,圖片都已加載完成 瀏覽器渲染的過程主要包括以下五步:作者:oWSQo鏈接:http://www.reibang.com/p/e6252dc9be32來源:簡書著作權(quán)歸作者所有株扛。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)尤筐,非商業(yè)轉(zhuǎn)載請注明出處汇荐。

瀏覽器將獲取的HTML文檔解析成DOM樹洞就。 處理CSS標記,構(gòu)成層疊樣式表模型CSSOM(CSS Object Model)掀淘。 將DOM和CSSOM合并為渲染樹(rendering tree)旬蟋,代表一系列將被渲染的對象。 渲染樹的每個元素包含的內(nèi)容都是計算過的革娄,它被稱之為布局layout倾贰。瀏覽器使用一種流式處理的方法,只需要一次繪制操作就可以布局所有的元素拦惋。 將渲染樹的各個節(jié)點繪制到屏幕上匆浙,這一步被稱為繪制painting。 需要注意的是厕妖,以上五個步驟并不一定一次性順序完成首尼,比如DOM或CSSOM被修改時,亦或是哪個過程會重復(fù)執(zhí)行言秸,這樣才能計算出哪些像素需要在屏幕上進行重新渲染软能。而在實際情況中,JavaScript和CSS的某些操作往往會多次修改DOM或者CSSOM举畸。作者:oWSQo鏈接:http://www.reibang.com/p/e6252dc9be32來源:簡書著作權(quán)歸作者所有查排。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處抄沮。


好了跋核,今天就到這里了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末岖瑰,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子了罪,更是在濱河造成了極大的恐慌锭环,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泊藕,死亡現(xiàn)場離奇詭異辅辩,居然都是意外死亡,警方通過查閱死者的電腦和手機娃圆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門玫锋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人讼呢,你說我怎么就攤上這事撩鹿。” “怎么了悦屏?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵节沦,是天一觀的道長。 經(jīng)常有香客問我础爬,道長甫贯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任看蚜,我火速辦了婚禮叫搁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘供炎。我一直安慰自己渴逻,他們只是感情好,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布音诫。 她就那樣靜靜地躺著惨奕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪竭钝。 梳的紋絲不亂的頭發(fā)上梨撞,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天,我揣著相機與錄音蜓氨,去河邊找鬼聋袋。 笑死,一個胖子當著我的面吹牛穴吹,可吹牛的內(nèi)容都是我干的幽勒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼港令,長吁一口氣:“原來是場噩夢啊……” “哼啥容!你這毒婦竟也來了锈颗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤咪惠,失蹤者是張志新(化名)和其女友劉穎击吱,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體遥昧,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡覆醇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了炭臭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片永脓。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鞋仍,靈堂內(nèi)的尸體忽然破棺而出常摧,到底是詐尸還是另有隱情,我是刑警寧澤威创,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布落午,位于F島的核電站,受9級特大地震影響肚豺,放射性物質(zhì)發(fā)生泄漏溃斋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一详炬、第九天 我趴在偏房一處隱蔽的房頂上張望盐类。 院中可真熱鬧寞奸,春花似錦呛谜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瓷翻,卻和暖如春聚凹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背齐帚。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工妒牙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人对妄。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓湘今,卻偏偏與公主長得像,于是被迫代替她去往敵國和親剪菱。 傳聞我的和親對象是個殘疾皇子摩瞎,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容