>>>點擊網址後,應用層的DNS協議會將網址解析爲IP地址;web
DNS查找過程:瀏覽器
1. 瀏覽器會檢查緩存中有沒有這個域名對應的解析過的IP地址,若是緩存中有,這個解析過程就將結束。緩存
2. 若是用戶的瀏覽器緩存中沒有,瀏覽器會查找操做系統緩存(hosts文件)中是否有這個域名對應的DNS解析結果。服務器
3. 若尚未,此時會發送一個數據包給DNS服務器,DNS服務器找到後將解析所得IP地址返回給用戶。cookie
>>>在應用層,瀏覽器會給web服務器發送一個HTTP請求;網絡
請求頭爲:GET http://www.baidu.com/HTTP/1.1操作系統
>>>在傳輸層,(上層的傳輸數據流分段)HTTP數據包會嵌入在TCP報文段中;線程
TCP報文段須要設置端口,接收方(百度)的HTTP端口默認是80,本機的端口是一個1024-65535之間的隨機整數,這裏假設爲1025,這樣TCP報文段由TCP首部(包含發送方和接收方的端口信息)+ HTTP數據包組成。翻譯
>>>在網絡層中,TCP報文段再嵌入IP數據包中;3d
IP數據包須要知道雙方的IP地址,本機IP地址假定爲192.168.1.5,接受方IP地址爲220.181.111.147(百度),這樣IP數據包由IP頭部(IP地址信息)+TCP報文段組成。
>>> 在網絡接口層,IP數據包嵌入到數據幀(以太網數據包)中在網絡上傳送;
數據幀中包含源MAC地址和目的MAC地址(經過ARP地址解析協議獲得的)。這樣數據幀由頭部(MAC地址)+IP數據包組成。
>>>數據包通過多個網關的轉發到達百度服務器,請求對應端口的服務;
服務接收到發送過來的以太網數據包開始解析請求信息,從以太網數據包中提取IP數據包—>TCP報文段—>HTTP數據包,並組裝爲有效數據交與對應線程池中分配的線程進行處理,在這個過程當中,生成相應request、response對象。
>>>請求處理完成以後,服務器發回一個HTTP響應;
請求處理程序會閱讀請求及它的參數和cookies。它會讀取也可能更新一些數據,並將數據存儲在服務器上。處理完畢後,數據經過response對象給客戶輸出信息,輸出信息也須要拼接HTTP協議頭部分,關閉後斷開鏈接。斷開後,服務器端自動註銷request、response對象,並將釋放對應線程的使用標識(通常一個請求單獨由一個線程處理,部分特殊狀況有一個線程處理多個請求的狀況)。
響應頭爲:HTTP/1.1200 OK
>>>瀏覽器以一樣的過程讀取到HTTP響應的內容(HTTP響應數據包),而後瀏覽器對接收到的HTML頁面進行解析,把網頁顯示出來呈現給用戶。
客戶端接收到返回數據,去掉對應頭信息,造成也能夠被瀏覽器認識的頁面HTML字符串信息,交與瀏覽器翻譯爲對應頁面規則信息展現爲頁面內容。