http是一種協議,計算機之間要遵照這個協議才能夠相互通訊。後端
那http在使用場景中的流程是怎樣的呢?瀏覽器
一、http客戶端發起請求,建立端口,通常是80默認端口緩存
二、http服務器在端口監聽客戶端請求服務器
三、http服務器向客戶端返回狀態和內容操作系統
當咱們輸入網址到頁面渲染,計算機和瀏覽器都作了什麼呢?圖片
以Chrome瀏覽器爲例:資源
一、Chrome搜索自身的DNS緩存,看自身的緩存中有沒有好比123.com這個域名已經緩存的IP地址,這個緩存的時間大概只有1分鐘。若是有緩存,則看有沒過時,若是沒看有過時,這個解析就結束了。域名
二、Chrome搜索操做系統自身的DNS緩存(瀏覽器沒有找到緩存或緩存已經失效)服務器端
三、Chrome讀取本地的HOSTS文件 C:\Windows\System32\drivers\etc\hosts渲染
四、瀏覽器發起一個DNS的一個系統調用(通常是寬帶運營商提供的)
4.1寬帶運營商服務器查看自己緩存
4.2運營商服務器發起一個迭代DNS解析的請求
4.2.1 運營商服務器把結果返回操做系統內核同時緩存起來
4.2.2操做系統內核把結果返回瀏覽器
4.2.3最終瀏覽器拿到了www.123.com對應的IP地址
五、瀏覽器得到域名對應的IP地址後,發起HTTP「三次握手」(TCP鏈接請求)
5.1 客戶端--->服務器 :是否能夠鏈接
5.2 服務器--->客戶端:能夠鏈接
5.3 客戶端--->服務器:OK,已鏈接
六、TCP/IP鏈接創建起來後,瀏覽器就能夠向服務器發送HTTP請求了
七、服務器端接受到了這個請求,根據路徑參數,通過後端的一些處理以後,把處理後的結果數據返回給瀏覽器,若是是123.com的頁面就會把完整的HTML頁面代碼返回給瀏覽器
八、瀏覽器拿到了123.com的完整的HTML頁面代碼,在解析和渲染這個頁面的時候,裏面的JS、CSS、圖片靜態資源,他們一樣也是一個個http請求,都須要通過上面的七個步驟
九、瀏覽器根據拿到的資源對頁面進行渲染,最後把一個完整的頁面呈現給了用戶
真實的HTTP請求遠比以上覆雜,有興趣的能夠詳細瞭解。