http 請求過程——當咱們在瀏覽器輸入 www.baidu.com,而後回車以後的詳解。html
1)域名解析(域名 www.baidu.com 變爲 ip 地址)。web
1.瀏覽器搜索本身的DNS緩存(維護一張域名與IP的對應表),若沒有,則搜索操做系統的DNS緩存(維護一張域名與IP的對應表),若沒有,則搜索操做系統的hosts文件(維護一張域名與IP的對應表)瀏覽器
2.若都沒有,則找 tcp/ip 參數中設置的首選 dns 服務器,即本地 dns 服務器(遞歸查詢),本地域名服務器查詢本身的dns緩存,若是沒有,則進行下面的迭代查詢緩存
2.1本地dns服務器向根域名服務器發起請求,根域名服務器返回com域的頂級域名服務器的地址。服務器
2.2本地dns服務器向com域的頂級域名服務器發起請求,返回baidu.com權限域名服務器(保存該區中全部主機域名到IP的映射)地址。網絡
2.3本地dns服務器向baidu.com權限域名服務器發起請求,獲得www.baidu.com的IP地址。tcp
3.本地dns服務器將IP返回給操做系統,同時緩存IP。操作系統
4.操做系統將IP返回給瀏覽器,同時緩存IP。htm
2)發起 tcp 的三次握手,創建 tcp 鏈接。瀏覽器會以一個隨機端口(1024-65535)向服務端的 web 程序 80 端口發起 tcp 的鏈接.這個請求(原始的 http 請求,通過原始的 tcp/ip 四層模型層層封裝),到達服務器端後,進入網卡,而後進入內核的協議棧(一層一層撥開),而後到達 web 應用程序,最終創建了 tcp/ip 連接。blog
3)創建 tcp 鏈接後發起 http 請求。
4)服務器響應 http 請求,客戶端獲得 html 代碼。服務器 web 應用程序收到 http 請求後,就開始處理請求,處理以後就返回給瀏覽器 html 文件。
5)瀏覽器解析 html 代碼,並請求 html 中的資源。
6)瀏覽器對頁面進行渲染,並呈現給用戶。
涉及到的協議
(1) 應用層:HTTP(WWW訪問協議),DNS(域名解析服務)
(2) 傳輸層:TCP(爲HTTP提供可靠的數據傳輸),UDP(DNS使用UDP傳輸)
(3) 網絡層:IP(IP數據數據包傳輸和路由選擇),ICMP(提供網絡傳輸過程當中的差錯檢測),ARP(將本機的默認網關IP地址映射成物理MAC地址)
ps:ARP緩存本局域網內的IP和MAC的映射。若是在本局域網不在緩存中,則廣播請求信息,目的主機會以單播形式回送MAC;若是不在本局域網中,則找到本網絡的路由器MAC地址,由路由器去找到目的MAC地址。
ping www.baidu.com用到的協議
DNS, UDP, ICMP, ARP。