我們從系統網絡的角度分析輸入www.baidu.com后的過程:
1、客戶端瀏覽器通過DNS解析到www.baidu.com的IP地址202.108.22.5,通過這個IP地址找到客戶端到服務器的路徑。客戶端瀏覽器發起一個HTTP會話到202.108.22.5,然后通過TCP進行封裝數據包,輸入到網絡層。
2、在客戶端的傳輸層,把HTTP會話請求分成報文段,添加源和目的端口,如服務器使用80端口監聽客戶端的請求,客戶端由系統隨機選擇一個端口如5000,與服務器進行交換,服務器把相應的請求返回給客戶端的5000端口。然后使用IP層的IP地址查找目的端。
3、客戶端的網絡層不用關心應用層或者傳輸層的東西,主要做的是通過查找路由表確定如何到達服務器,期間可能經過多個路由器,這些都是由路由器來完成的工作,無非就是通過查找路由表決定通過那個路徑到達服務器。
4、客戶端的鏈路層,包通過鏈路層發送到路由器,通過鄰居協議查找給定IP地址的MAC地址,然后發送ARP請求查找目的地址,如果得到回應后就可以使用ARP的請求應答交換的IP數據包現在就可以傳輸了,然后發送IP數據包到達服務器的地址。
事件順序:
(1) 瀏覽器獲取輸入的域名www.baidu.com
(2) 瀏覽器向DNS請求解析www.baidu.com的IP地址
(3) 域名系統DNS解析出百度服務器的IP地址 (詳細介紹DNS)-通過網關出去
(4) 瀏覽器與該服務器建立TCP連接(默認端口號80)
(5) 瀏覽器發出HTTP請求,請求百度首頁
(6) 服務器通過HTTP響應把首頁文件發送給瀏覽器
(7) TCP連接釋放
(8) 瀏覽器將首頁文件進行解析,並將Web頁顯示給用戶。
涉及到的協議:
(1) 應用層:HTTP(WWW訪問協議),DNS(域名解析服務)
DNS解析域名為目的IP,通過IP找到服務器路徑,客戶端向服務器發起HTTP會話,然后通過運輸層TCP協議封裝數據包,在TCP協議基礎上進行傳輸。
(2) 傳輸層:TCP(為HTTP提供可靠的數據傳輸),UDP(DNS使用UDP傳輸),HTTP會話會被分成報文段,添加源、目的端口;TCP協議進行主要工作。
(3)網絡層:IP(IP數據數據包傳輸和路由選擇),ICMP(提供網絡傳輸過程中的差錯檢測),ARP(將本機的默認網關IP地址映射成物理MAC地址)為數據包選擇路由,IP協議進行主要工作,相鄰結點的可靠傳輸,ARP協議將IP地址轉成MAC地址。
簡單理解: 域名解析 --> 發起TCP的3次握手 --> 建立TCP連接后發起http請求 --> 服務器響應http請求,瀏覽器得到html代碼 --> 瀏覽器解析html代碼,並請求html代碼中的資源(如js、css、圖片等) --> 瀏覽器對頁面進行渲染呈現給用戶。