HTTP協議學習總結一

什麼是協議

協議是多人經過協商,最後達成一致的合約。html


什麼是HTTP協議

HTTP協議是客戶端與服務器之間通訊時所共同遵循一個合約。shell


HTTP協議的主要內容是什麼

HTTP協議是雙方的:它定義了客戶端如何請求服務器資源,服務器如何響應客戶端請求。緩存


客戶端如何請求資源

<!-- lang: shell -->
GET /index.html HTTP/1.1
Host:www.baidu.com
#GET:請求資源的方法
#/index.html:資源位置
#HTTP/1.1:請求資源的協議/版本
#Host:資源所在的服務器

服務器如何響應請求

<!-- lang: shell -->
HTTP/1.1 200 OK
Content-type:text/html

Hello,World!
#HTTP/1.1:響應資源的協議/版本
#200:狀態碼,表示資源狀態
#OK:狀態描述值
#Content-type:文本格式
#CRLF(換行符+回車符)
#Hello,World!:響應主體

HTTP協議與TCP/IP協議之間的關係

HTTP協議是構建在TCP/IP協議之上的,一次完整的HTTP通訊會打開一次TCP鏈接。 因此深刻理解HTTP協議,必須對TCP/IP協議有必定的瞭解。服務器


HTTP代理

在現實的網絡世界中,代理無處不在,對於客戶端來講,代理就是服務端,對於最終的服務端來講,代理又是客戶端。 代理的身份能夠是雙重的,因此在不少方面,代理做用很大:網絡

  1. 作爲緩存服務器,直接與客戶端通訊,緩解真實服務端壓力
  2. 作爲代理服務器,能夠讓一些訪問不了外網的客戶端也能訪問到外網的資源
  3. 作爲認證服務器,能夠攔截客戶請求,只有經過認證的客戶端才能訪問到最終的資源

HTTP緩存策略

對於一些服務器資源,服務端並不但願客戶端在重複請求時,每次都返回資源。這樣當資源文件足夠大、請求足夠多時,服務器的壓力會很大。 HTTP協議在緩存這一塊有一個比較合理的交互規則:代理

  1. 客戶端請求資源(默認是容許緩存,若是header中帶Cache-Control: no-cache,那麼說明客戶端不緩存數據)
  2. 服務端響應資源,header中添加Cache-Control: max-age=1000,告訴客戶端1000s內我不會改變資源內容,你就用舊的資源吧
  3. 客戶端的將資源放入到緩存文件夾
  4. 客戶端再次請求資源,先去緩存文件夾中查找,找到資源後,對比時間,看是否超過了1000s,若是沒有超過就會繼續使用資源,若是超過了就會向服務器詢問資源是否已經更新,在header中添加if-modified-since:(服務端先前響應header中的Date值)或if-none-match:(服務端先前響應header中的ETag)
  5. 服務端接收到客戶端請求,發現請求header中有條件請求if-modified-since或if-none-match,會檢查服務器資源是否修改過,若是沒有修改,服務端返回304,告訴客戶端緩存資源可用。若是發現資源已經修改,那麼就將修改過的資源發送給客戶端
相關文章
相關標籤/搜索