1. 程式人生 > >使用者用瀏覽器訪問一個網站的時候背後的過程與步驟是怎樣的?

使用者用瀏覽器訪問一個網站的時候背後的過程與步驟是怎樣的?

假設你用一個全新的瀏覽器(第一次啟動的那種),訪問百度(http://www.baidu.com/),在你敲入網址並按下回車之後,將會發生以下神奇的事情:

瀏覽器先嚐試從Host檔案中獲取http://www.baidu.com/對應的IP地址,如果能取到當然萬事大吉大家都能嗨,如果不能,就使用DNS協議來獲取IP咯。
在DNS協議中,PC會向你的本地DNS伺服器求助(一般是路由器),希望從本地DNS伺服器那裡得到百度的IP,得到就好,得不到本地DNS伺服器向更高層次的DNS伺服器求助.....,最終總能得到百度的IP。

得到百度的IP,下一步是使用TCP協議,建立TCP連線。
在TCP協議中,建立TCP需要與百度伺服器握手三次,你先告訴伺服器你要給伺服器發東西(SYN),伺服器應答你並告訴你它也要給你發東西(SYN、ACK),然後你應答伺服器(SYN、ACK),總共來回了3次,稱為3次握手。

不過,建立TCP連線有個前提(或者說給伺服器發訊息有個前提):你必須能成功地把訊息發到伺服器上。雖然已經知道IP,但並無啥用(比如說,你在廣東,你知道北京的地理座標經緯度就能到北京了?你得知道有哪些路通往北京吧你得準備盤纏吧你得花時間吧)。

為了將訊息從你的PC上傳到伺服器上,需要用到IP協議、ARP協議和OSPF協議。
我們都知道,你的PC和百度伺服器之間一般會有許多路由器之類的東西,IP協議指定了出發地(你的PC)和目的地(伺服器);你的資料會經過一個又一個路由器,OSPF決定了會經過那些路由器(用一種叫路由演算法的玩意,找出最佳路徑);從一個路由器怎麼傳給下一個路由器?這是ARP協議的JOB,ARP負責求下一個節點的地址(我們不止是要目的地,還要中間節點的地址)。
IP協議使用的是IP地址,整個傳送過程中只涉及出發地和目的地2個IP地址,而ARP協議使用的是MAC地址,整個傳送過程中涉及到每一個節點的MAC地址

現在,我們能和伺服器通訊,還建立了TCP連線,下一步幹嘛,當然是用HTTP協議請求網頁內容咯。

你發個HTTP請求報文給伺服器,如果伺服器禁止你訪問它就給你回個"Forbidden",如果它暫時掛掉了就給你回個“內部服務錯誤”,如果它正常才給你回個“OK“並將你要的資料傳給你;如果你還需要其它的東西再去跟它要(它一般還會給你的-_-)。

你收到了伺服器的回覆,是一坨HTML形式的文字。瀏覽器必須要能夠理解文字的內容,並快速地渲染到螢幕上(瀏覽器一般用有限自動機來理解文字內容,渲染的話就各看本事了,之所以微軟IE卡成狗而谷歌瀏覽器很6,就是它們的渲染速度不同...)

渲染出來後,你就看到百度的首頁了