總體來說發生了以下幾個過程:
- DNSj解析
- TCP連接
- 發送HTTP請求
- 服務器處理請求並返回HTTP報文
- 瀏覽器渲染解析頁面
- 連接結束
一、DNS解析
DNS解析就是確定那臺計算機上有所需要的資源。互聯網上每臺計算機的唯一標識就是它的IP地址,我們常用的是URL,方便記憶。網址到IP地址的轉換,就是DNS解析。它實際上充當了一個翻譯的角色。
DNS解析是一個遞歸調用的過程。當需要DNS解析時,瀏覽器先在緩存中查找。如果找不到,則在本地域名服務器查找IP地址,如果找不到本地域名服務器向根域名服務器發請求,如果根域名服務器也沒有,則本地域名服務器會向com頂級域名服務器發送一個請求,依次類推。
二、DNS負載均衡
對於大型的網站,每天要處理上億次請求,資源肯定不在一臺電腦上,而是在多臺電腦上。不會只有一個IP地址,而是有多個IP地址。對於用戶來說,哪臺機器處理請求不重要,DNS可以找到一個合適的機器IP返回給用戶,例如可以更加每臺機器的負載量,機器離用戶的距離等。這種過程就是DNS負載均衡,也叫DNS重定向。CDN(內容分發網絡)就是利用了DNS重定向技術。
三、HTTPS協議
HTTP報文是裹在TCP報文中發送的,是明文傳輸,服務器接收到TCP後會從裏面提取出HTTP報文。但是這存在這安全問題,TCP報文可能會被截獲,會造成信息泄露的風險。爲解決這個問題,在HTTP進入TCP包之前,先對HTTP報文進行一次SSL加密,就可以保證安全的傳輸,這就是HTTPS。
四、HTTP請求
HTTP請求報文由三部分組成:請求行、請求頭、請求正文。
請求行:
Mehtod Request-URL http-version
GET index.html HTTP/1.1
常用的方法有GET,POST,PUT,DELETE ,TRACE,OPTIONS,HEAD.
請求頭:
請求頭允許客戶端向服務器傳遞請求的附加信息和客戶端自身的信息。
請求正文:
當使用POST,PUT方法時,客戶端需要先服務器傳數據,這時數據就存儲在請求正文中。
HTTP響應由狀態碼,響應報頭和響應報文組成。
狀態碼:
狀態碼由3位數組成,第一位定義了響應類別,有五種可能取值。
- 1XX:指示信息--表示信息已經接受,繼續處理
- 2XX:成功--表示請求已被接受
- 3XX:重定向--要完成請求必須進行更進一步的操作
- 4XX:客戶端錯誤--請求有語法錯誤或請求無法事先。
- 5XX:服務端錯誤--服務器未能事先合法的請求
響應報頭:
常見的響應報頭字段有:Server、Connection
響應報文:
服務器返回給瀏覽器的文本信息:通常HTML,CSS,JS,圖片等。