1. 程式人生 > >http一次請求和響應的全過程

http一次請求和響應的全過程

一、什麼是HTTP協議

http協議是Hyper Text Transfer Protocol(超文字傳輸協議),是用於全球資訊網伺服器傳輸超文字到本地瀏覽器的傳輸協議,http協議是基於TCP/IP通訊協議來傳送資料。http協議工作於B/S架構的系統時,瀏覽器作為http的客戶端通過URL向http服務端即WEB伺服器傳送訪問請求,WEB伺服器收到請求後再將相應的請求內容返回到客戶端。

二、HTTP的主要特點

1.無狀態性

http是沒有狀態的,即協議對事務處理是沒有記憶的,同一個客戶端第二次訪問位於同一伺服器上的頁面時,伺服器是不認識不記得這個客戶端的,它並不知道這個客戶端曾經訪問過它。這樣的好處是簡化了服務端的設計,能夠更加容易的支援大併發量的http請求。

2.靈活

http允許傳輸任意型別的資料物件

3.無連線

即限制每次連線只響應一個請求,服務端迴應了客戶端的請求並得到客戶端的迴應後,斷開連線,採用這種方式可以節省傳輸時間。

三、請求和響應的過程

1.在瀏覽器中輸入網址

2.瀏覽器根據使用者輸入的網址來解析出相應的IP地址(DNS查詢過程)

(1)瀏覽器快取

如果在一定的時間內已經訪問過這個網址,那麼瀏覽器快取DNS記錄一段時間(不同的瀏覽器儲存快取的時間也不一樣)

(2)系統快取

如果在瀏覽器快取中沒有查詢到相應的域名,那麼就會在作業系統的快取中進行查詢(瀏覽器會做一個系統呼叫)

(3)路由器快取

如果在系統快取中也沒有查詢到相應的域名,那麼就是在路由器的快取中來進行查詢

(4)ISP DNS快取

如果在路由器快取中還是沒有查詢到相應的域名,那麼就需要到ISP(Internet   Service   Provider即網路服務提供商)的DNS快取中進行查詢,這裡一般都可以查到對應的快取記錄

3.瀏覽器與伺服器建立一個TCP連線

4.瀏覽器給WEB伺服器傳送一個http請求

http請求的常見請求方法有GET、POST、HEAD

GET和POST的區別

GET和POST的區別

5.伺服器永久重定向響應

伺服器會給瀏覽器一個301永久重定向響應,這樣的話樣瀏覽器就會訪問"http://www.baidu.com/" 而非"http://baidu.com/",服務端一定要重定向而不是直接把使用者想看的內容直接返回客戶端是為什麼呢?其中一個原因是和搜尋引擎的排名有關,例如"http://www.baidu.com/"和"http://baidu.com/",服務端會將它們看成是兩個網頁,這樣的話就降低了兩個域名的搜尋排名,搜尋引擎明白301狀態碼的意思是什麼,就會把帶有www和不帶有www的兩個地址歸到同一個網站名下。另一個原因是會造成快取友好性變差,如果一個頁面有好幾個名字的話,在快取中會出現好幾次。

6.瀏覽器跟蹤重定向的地址,並向改地址傳送http請求

7.伺服器處理請求

8.伺服器發回一個HTML響應

9.釋放TCP連線

10.客戶端將接到的HTML文字解析並顯示出來

11.瀏覽器獲取嵌入在HTML中的其他物件

在瀏覽器顯示HTML時,這個HTML文字中可能會包含一些其他地址的資源,這個時候瀏覽器就要再向這些地址傳送http請求來獲得相應的資源。