浏覽器中(zhōng)輸入URL後發生(shēng)了什麽?

時間:2021-08-10 作者:管理員(yuán) 點擊:416

DNS域名解析

使用IP協議、ARP協議、OSPF等協議将消息上傳到服務器上

客戶端和服務端建立連接

客戶端發送HTTP請求

服務端響應HTPP請求

浏覽器解析html代碼,并請求HTML代碼中(zhōng)的資(zī)源

斷開(kāi)TCP連接

浏覽器對頁面進行渲染呈現給用戶

在浏覽器中(zhōng)輸入URL後,執行的全部過程、也就是一(yī)次http請求的過程

DNS域名解析

1.DNS域名解析協議

DNS協議的産生(shēng)主要是IP地址不便記憶,在TCP/IP協議中(zhōng)、起初有一(yī)個叫做主機識别碼的機制,這種的識别的方式指的是爲每一(yī)台計算機都賦予唯一(yī)的主機名,再進行網絡通信的時候可以直接使用主機名來代替IP地址,主機往往維護一(yī)個叫做hosts的數據庫文件,這個數據庫文件存放(fàng)的就是主機名和IP地址的映射,也就是說,如果IP地址增加或者更新的話(huà),中(zhōng)心的hosts數據庫文件就得更新,也就是其它的計算機都要定期的更新這個hosts數據庫文件、才能正确的使用網絡.網絡規模的擴大(dà)使這種方式的可行性降低.

所以就有了DNS系統、可以有效地管理主機名和IP之間的對應的關系,

因特網的域名系統被設計成一(yī)個聯機分(fēn)布式的數據庫系統,并采用客戶/服務器模式。域名到IP地址的解析是在域名服務器上進行的,一(yī)個服務器所負責(或者說是有權限的)的管轄範圍稱爲區(不是以“域”爲單位),各單位根據具體(tǐ)情況來劃分(fēn)自己管轄範圍的區,但在一(yī)個區中(zhōng)的所有節點必須是能夠連通的,每一(yī)個區設置相應的權限域名服務器,用來保護該區中(zhōng)的所有主機的域名IP地址的映射。每一(yī)個域名服務器不但能夠進行一(yī)些域名到IP地址的解析,而且還必須具有連向其他域名服務器的信息,當自己不能進行域名到IP地址的轉換時,能夠知(zhī)道什麽地方去(qù)找别的域名服務器。

1、浏覽器搜索自己的DNS緩存(維護一(yī)張域名與IP地址的對應表);

2、若沒有,則搜索操作系統中(zhōng)的DNS緩存(維護一(yī)張域名與IP地址的對應表);

3、若沒有,則搜索操作系統的hosts文件(Windows環境下(xià),維護一(yī)張域名與IP地址的對應表);

4、若沒有,則操作系統将域名發送至本地域名服務器—(遞歸查詢方式),本地域名服務器查詢自己的DNS緩存,查找成功則返回結果,否則,(以下(xià)是叠代查詢方式)

4.1.本地域名服務器向根域名服務器(其雖然沒有每個域名的具體(tǐ)信息,但存儲了負責每個域,如com、net、org等解析的頂級域名服務器的地址)發起請求,此處,根域名服務器返回com域的頂級域名服務器的地址;

4.2.本地域名服務器向com域的頂級域名服務器發起請求,返回baidu.com權限域名服務器(權限域名服務器,用來保存該區中(zhōng)的所有主機域名到IP地址的映射)地址;

4.3.本地域名服務器向baidu.com權限域名服務器發起請求,得到www.baidu.com的IP地址;

5、本地域名服務器将得到的IP地址返回給操作系統,同時自己也将IP地址緩存起來;

6、操作系統将IP地址返回給浏覽器,同時自己也将IP地址緩存起來;

7、至此,浏覽器已經得到了域名對應的IP地址;

使用IP協議、ARP協議、OSPF等協議将消息上傳到服務器上

2.使用IP協議、ARP協議、OSPF等協議将消息上傳到服務器上

在實際的通信中(zhōng),如果隻是使用IP協議肯定是不行的,比如在數據鏈路層的傳輸,在以太網的情況下(xià)使用的是MAC地址來傳輸數據包的,所以在傳輸數據的時候,需要其它的協議的輔助.比如ARP和OSPFX協議

ARP解決的是同一(yī)個局域網内,主機或路由器的IP地址和MAC地址的映射問題。如果源主機和目的主機在同一(yī)個局域網内(目标IP和本機IP分(fēn)别與子網掩碼相與的結果相同,那麽它們在一(yī)個子網),就可以用ARP找到目的主機的MAC地址;如果不在一(yī)個局域網内,用ARP協議找到本網絡内的一(yī)個路由器的MAC地址,剩下(xià)的工(gōng)作由這個路由器來完成。

OSPF:OpenShortestPathFirst

它屬于鏈路狀态路由協議,具有路由變化收斂速度快、無路由環路、支持變長子網掩碼(VLSM)和彙總、層次區域劃分(fēn)等優點。在網絡中(zhōng)使用OSPF協議後,大(dà)部分(fēn)路由将由OSPF協議自行計算和生(shēng)成,無須網絡管理員(yuán)人工(gōng)配置,當網絡拓撲發生(shēng)變化時,協議可以自動計算、更正路由,極大(dà)地方便了網絡管理.

客戶端和服務端建立連接

3.使用TCP建立連接 也常說的三次握手

TCP服務器進程先創建傳輸控制塊TCB,時刻準備接受客戶進程的連接請求,此時服務器就進入了LISTEN(監聽(tīng))狀态;

TCP客戶進程也是先創建傳輸控制塊TCB,然後向服務器發出連接請求報文,由Client發出請求連接即SYN=1ACK=0,同時選擇一(yī)個初始序列号seq=x,此時,TCP客戶端進程進入了SYN-SENT(同步已發送狀态)狀态。TCP規定,SYN報文段(SYN=1的報文段)不能攜帶數據,但需要消耗掉一(yī)個序号。

TCP服務器收到請求報文後,如果同意連接,則發出确認報文。确認報文中(zhōng)應該ACK=1,SYN=1,确認号是ack=x+1,同時也要爲自己初始化一(yī)個序列号seq=y,此時,TCP服務器進程進入了SYN-RCVD(同步收到)狀态。這個報文也不能攜帶數據,但是同樣要消耗一(yī)個序号。

TCP客戶進程收到确認後,還要向服務器給出确認。确認報文的ACK=1,ack=y+1,自己的序列号seq=x+1,此時,TCP連接建立,客戶端進入ESTABLISHED(已建立連接)狀态。TCP規定,ACK報文段可以攜帶數據,但是如果不攜帶數據則不消耗序号。

當服務器收到客戶端的确認後也進入ESTABLISHED狀态,此後雙方就可以開(kāi)始通信了。

客戶端發送HTTP請求

4.建立TCP連接後發起HTTP請求

HTTP請求也就是以特定的格式發送的數據、格式參考我(wǒ)(wǒ)的這篇博客HTTP、HTTPS

服務端響應HTPP請求

5.服務器響應HTTP請求

HTTP響應也就是以特定的格式發送的數據、格式參考我(wǒ)(wǒ)的這篇博客HTTP、HTTPS

1.負載均衡

網站可能會有負載均衡設備來平均分(fēn)配所有用戶的請求。即對工(gōng)作任務進行平衡,分(fēn)攤到多個操作單元上執行,如圖片服務器,應用服務器等。

2請求處理閱讀請求及它的參數和cookies

浏覽器解析html代碼,并請求HTML代碼中(zhōng)的資(zī)源

斷開(kāi)TCP連接

7.斷開(kāi)TCP連接

也就是常說的四次揮手

但要HTTP請求中(zhōng)是否是長連接。來決定是不是斷開(kāi)TCP連接

在HTTP/1.0中(zhōng)默認使用短連接。也就是說,客戶端和服務器每進行一(yī)次HTTP操作,就建立一(yī)次連接,任務結束就中(zhōng)斷連接。當客戶端浏覽器訪問的某個HTML或其他類型的Web頁中(zhōng)包含有其他的Web資(zī)源(如JavaScript文件、圖像文件、CSS文件等),每遇到這樣一(yī)個Web資(zī)源,浏覽器就會重新建立一(yī)個HTTP會話(huà)。

而從HTTP/1.1起,默認使用長連接,用以保持連接特性。使用長連接的HTTP協議,會在響應頭加入這行代碼:

在使用長連接的情況下(xià),當一(yī)個網頁打開(kāi)完成後,客戶端和服務器之間用于傳輸HTTP數據的TCP連接不會關閉,客戶端再次訪問這個服務器時,會繼續使用這一(yī)條已經建立的連接。Keep-Alive不會永久保持連接,它有一(yī)個保持時間,可以在不同的服務器軟件(如Apache)中(zhōng)設定這個時間。實現長連接需要客戶端和服務端都支持長連接。

HTTP協議的長連接和短連接,實質上是TCP協議的長連接和短連接。

長連接可以省去(qù)較多的TCP建立和關閉的操作,減少浪費(fèi),節約時間。對于頻(pín)繁請求資(zī)源的客戶端适合使用長連接。在長連接的應用場景下(xià),client端一(yī)般不會主動關閉連接,當client與server之間的連接一(yī)直不關閉,随着客戶端連接越來越多,server會保持過多連接。這時候server端需要采取一(yī)些策略,如關閉一(yī)些長時間沒有請求發生(shēng)的連接,這樣可以避免一(yī)些惡意連接導緻server端服務受損;如果條件允許則可以限制每個客戶端的最大(dà)長連接數,這樣可以完全避免惡意的客戶端拖垮整體(tǐ)後端服務。

短連接對于服務器來說管理較爲簡單,存在的連接都是有用的連接,不需要額外(wài)的控制手段。但如果客戶請求頻(pín)繁,将在TCP的建立和關閉操作上浪費(fèi)較多時間和帶寬。

客戶端進程發出連接釋放(fàng)報文,并且停止發送數據。釋放(fàng)數據報文首部,FIN=1,其序列号爲seq=u(等于前面已經傳送過來的數據的最後一(yī)個字節的序号加1),此時,客戶端進入FIN-WAIT-1(終止等待1)狀态。TCP規定,FIN報文段即使不攜帶數據,也要消耗一(yī)個序号。

服務器收到連接釋放(fàng)報文,發出确認報文,ACK=1,ack=u+1,并且帶上自己的序列号seq=v,此時,服務端就進入了CLOSE-WAIT(關閉等待)狀态。TCP服務器通知(zhī)高層的應用進程,客戶端向服務器的方向就釋放(fàng)了,這時候處于半關閉狀态,即客戶端已經沒有數據要發送了,但是服務器若發送數據,客戶端依然要接受。這個狀态還要持續一(yī)段時間,也就是整個CLOSE-WAIT狀态持續的時間。

客戶端收到服務器的确認請求後,此時,客戶端就進入FIN-WAIT-2(終止等待2)狀态,等待服務器發送連接釋放(fàng)報文(在這之前還需要接受服務器發送的最後的數據)。

服務器将最後的數據發送完畢後,就向客戶端發送連接釋放(fàng)報文,FIN=1,ack=u+1,由于在半關閉狀态,服務器很可能又(yòu)發送了一(yī)些數據,假定此時的序列号爲seq=w,此時,服務器就進入了LAST-ACK(最後确認)狀态,等待客戶端的确認。

客戶端收到服務器的連接釋放(fàng)報文後,必須發出确認,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此時,客戶端就進入了TIME-WAIT(時間等待)狀态。注意此時TCP連接還沒有釋放(fàng),必須經過2MSL(最長報文段壽命)的時間後,當客戶端撤銷相應的TCB後,才進入CLOSED狀态。

服務器隻要收到了客戶端發出的确認,立即進入CLOSED狀态。同樣,撤銷TCB後,就結束了這次的TCP連接。可以看到,服務器結束TCP連接的時間要比客戶端早一(yī)些。

浏覽器對頁面進行渲染呈現給用戶

8.浏覽器對頁面進行渲染呈現給用戶

浏覽器渲染引擎最重要的工(gōng)作就是将HTML文檔和CSS文檔解析組合并繪制到浏覽器窗口上。
返回列表
在線溝通

Are you interested in ?

感興趣嗎(ma)?

有關我(wǒ)(wǒ)們服務的更多信息,請聯系

136 7365 2363(同微信) 13140187702

鄭州網站建設鄭州網站設計鄭州網站制作鄭州建站公司鄭州網站優化--聯系索騰

與我(wǒ)(wǒ)們合作

鄭州網站建設鄭州網站設計鄭州網站制作鄭州建站公司鄭州網站優化--與索騰合作,您将會得到更成熟、專業的網絡建設服務。我(wǒ)(wǒ)們以客戶至上,同時也相互挑戰,力求呈現最好的品牌建設成果。

業務咨詢熱線:

136 7365 2363

TOP

QQ客服

在線留言