首先咱們來看一下瀏覽器訪問Web服務器這一過程的全貌.訪問Web服務器並顯示網頁這一過程包含了瀏覽器和Web服務器之間的一系列交互,主要是下面這樣的交互.html
要實現應用程序之間的交互,咱們須要一個可以在瀏覽器和Web服務器之間傳遞請求和響應的機制.網絡是由不少計算機等設備相互鏈接組成的,所以在通訊過程當中須要肯定正確的通訊對象,並將請求和響應發送給它們.請求和響應在傳遞的過程當中可能會丟失和損壞,所以這些狀況也要考慮到.segmentfault
因此說,咱們須要一種機制,不管遇到任何狀況都可以將請求和響應準確無誤地發送給對方.因爲請求和響應都是由0和1組成的數字信息,因此能夠說,咱們須要的是一種可以將數字信息搬運到指定目的地的機制.瀏覽器
這種機制是由操做系統中的網絡控制軟件,以及交換機,路由器等設備分工合做來實現的,它的基本思路是將數字信息分割成一個一個的小塊,而後裝入一些被稱爲"包"的容器中來運送.緩存
整體上分爲以下六個環節.服務器
咱們的探索之旅是從瀏覽器中輸入網址(URL)開始的.例如,當咱們輸入下面這樣的網址時,瀏覽器就會按照必定的規則去分析這個網址的含義,而後根據其含義生成請求消息.網絡
http://segmentfault.com/zuckjet/index.html
上面這個例子中,瀏覽器生成的消息表示"請給我index.html這一文件中存儲的網頁數據",接着瀏覽器會將請求發送給 Web服務器.
固然瀏覽器並不會親自負責數據的傳送.傳送消息是搬運數字信息的機制負責的工做,所以瀏覽器會委託它將數據發送出去.操作系統
協議棧(網絡控制軟件叫作協議棧)會將從瀏覽器接收到的消息打包,而後加上目的地址等控制信息.接下來,協議棧會將包交給網卡(負責以太網或無線網絡通訊的硬件).而後,網卡會將包轉換爲電信號並經過網線發送出去.這樣一來,包就進入到網絡中了.設計
網卡發送的包會通過交換機等設備,到達用來接入互聯網的路由器.路由器的後面就是互聯網,網絡運營商會負責將包送到目的地,就好像咱們把信投到郵筒中以後,郵遞員會負責把信送給收件人同樣.code
接下來,數據從用來接入互聯網的路由器出發,進入了互聯網的內部.互聯網的入口線路稱爲接入網.通常來講咱們能夠用電話線,ISDN,ADSL,有線電視,光線,專線等多種通訊線路來接入互聯網,這些通訊線路統稱爲接入網.接入網鏈接到簽約的網絡運營商,並接入被稱爲接入點的設備.
接入點的實體是一臺專爲運營商設計的路由器,咱們能夠把它理解爲離你家最近的郵局.接入點的後面就是互聯網的骨幹部分了.htm
經過骨幹網以後,網絡包最終到達了Web服務器所在的局域網中.接着,它會遇到防火牆,防火牆會對進入的包進行檢查.檢查完以後,網絡包接下來可能還會遇到緩存服務器.若是要訪問的網頁數據正好在緩存服務器中可以找到,那麼就能夠不用勞煩Web服務器,直接從緩存服務器讀出數據.
當網絡包到達Web服務器後,數據會被解包並還原爲原始的請求消息,而後交給Web服務器程序.和客戶端同樣,這個操做也是由操做系統中的協議棧來完成的.接下來Web服務器程序分析請求消息的含義,並按照其中的指示將數據裝入響應消息中,而後發回給客戶端.