1. 程式人生 > >使用者用瀏覽器訪問一個網站,發生了什麼。

使用者用瀏覽器訪問一個網站,發生了什麼。

當我們用瀏覽器訪問一個網頁時,瀏覽器先嚐試從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次握手。不過,建立TCP連線有個前提,你必須能夠成功地把訊息發到伺服器上。

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

現在,我們能和伺服器通訊,還建立TCP連線,下一步就是用HTTP協議請求網頁內容了。你發個http請求報文給伺服器,如果伺服器禁止你訪問就給你回個“forbidden”,如果他暫時掛掉了就給你回個“內部服務錯誤”,如果它正常才給你回個“OK”,並將你要的資料傳給你;如果你有其他需要的東西再去給他要。你收到了伺服器的回覆,是一坨html的文字,瀏覽器必須能夠理解文字的內容,並快速的渲染到螢幕上。渲染出來後,就可以看到房網的網頁了。