天天看點

HTTP知識點

各種協定在通信過程中的用處

HTTP知識點

HTTP 1.1

1. http協定規定,請求從用戶端發出,最後伺服器響應該請求并且傳回。換句話說,一定是從用戶端開始建立通信的,伺服器端在沒有接收到請求之前不會發送響應。

2. http請求封包的構成

HTTP知識點

3. http響應封包的構成

HTTP知識點

4. http是無狀态協定。

使用http協定,每當有新的請求發送是,就有對應的新響應産生。協定本身不保留之前一切的請求或者響應封包的資訊。但是有些場景是需要保持狀态的,于是引入了cookie技術(後面再說)。

5. http的請求方法:

  • get:從指定的資源請求資料
  • post:向指定的資源送出要被處理的資料
  • put:上傳檔案
  • head: 請求頭部

6. get和post的差別:

get post
url可見性 url參數可見,拼接在url後面進行傳參 url參數不可見,通過body體傳參
緩存性 可以緩存 不可以緩存
後退頁面的反應 不産生影響 重新送出請求
傳輸資料的大小 一般不超過2k-4k 根據php.ini 配置檔案設定,也可以無限大
安全性 不安全 比較安全

7. http的keep alive:

http協定的初始版本中,每進行一次http通信就要斷開一次TCP連接配接,導緻增加通信量的開銷。HTTP/1.1 和一部分的 HTTP/1.0 想出了持久連接配接(HTTP Persistent Connections,也稱為 HTTP keep-alive 或HTTP connection reuse)的方法。持久連接配接的特點是,隻要任意一端沒有明确提出斷開連接配接,則保持 TCP 連接配接狀态。持久連接配接的好處:

  • 減少了TCP連接配接的重複建立和斷開所造成的額外開銷,減輕了伺服器的負載;
  • 減少開銷的這部分時間,使得http請求和響應能夠更早的結束,提高web頁面的顯示速度。

8. http管線化(pipelining):發送請求之後,不用等待響應亦可直接發送下一個請求。

9. cookie: Cookie 技術通過在請求和響應封包中寫入 Cookie 資訊來控制用戶端的狀态。

  • 通過伺服器端發送的響應封包内的Set-cookie首部字段,通知用戶端儲存cookie;
  • 用戶端下次就會自動在請求封包中加入cookie值;
  • 服務端發現用戶端發來的cookie後,會查找對應的用戶端,得到狀态資訊;
    HTTP知識點

10. 狀态碼:

1xx:資訊狀态碼:接收的請求正在處理

2xx:成功狀态碼:請求正常處理完畢

  • 200 ok:表示從用戶端發來的請求在伺服器端被正常處理了
  • 204 no content:代表伺服器接收的請求已成功處理,但在傳回的響應封包中不含實體的主體部分
  • 206 Partial Content:表示用戶端進行了範圍請求(請求一部分資源),而伺服器成功執行了這部分的GET 請求

3xx:重定向狀态碼:需要進行附加操作以完成要求

  • 301 Moved Permanently:永久性重定向。該狀态碼表示請求的資源已被配置設定了新的 URI,以後應使用資源現在所指的 URI
  • 302 Found:臨時重定向。該狀态碼表示請求的資源已被配置設定了新的 URI,希望

    使用者(本次)能使用新的 URI 通路

  • 304 Not Modified: 服務端資源無變化,可使用緩存資源

4xx:用戶端錯誤狀态碼:伺服器無法處理請求

  • 400 Bad Request:表示請求封包中存在文法錯誤
  • 401 Unauthorized:表示發送的請求需要有通過 HTTP 認證(BASIC 認證、DIGEST 認證)的認證資訊。另外若之前已進行過 1 次請求,則表示使用者認證失敗
  • 403 Forbidden:表明對請求資源的通路被伺服器拒絕了
  • 404 Not Found:表明伺服器上無法找到請求的資源

5xx:伺服器錯誤狀态碼:伺服器處理請求出錯

  • 500 Internal Server Error:表明伺服器端在執行請求時發生了錯誤。也有可能是 Web應用存在的 bug 或某些臨時的故障
  • 503 Service Unavailable:表明伺服器暫時處于超負載或正在進行停機維護,現在無法處理請求

11. 首部字段

通用首部字段

HTTP知識點

請求首部字段

HTTP知識點

響應首部字段

HTTP知識點

實體首部字段

12. HTTP的缺點

  • 通信使用明文(不加密),内容有可能被竊聽
  • 不驗證通信方的身份,是以有可能遭遇僞裝
  • 無法證明封包的完整性,是以有可能已遭篡改

HTTPS

1. HTTP+ 加密 + 認證 + 完整性保護=HTTPS

2. https的混合加密

  • 對稱加密:用相同的密鑰加密解密--->不安全,容易被竊聽
  • 非對稱加密:有一對公鑰和私鑰,發送方用公鑰加密,接收端用私鑰解密。(速度慢)
  • 混合加密:使用非對稱加密來加密傳輸密鑰,然後之後就用該密鑰進行對稱加密傳輸

3. https建立ssl連接配接的過程

  • 客戶使用 https url 通路伺服器,則要求 web 伺服器建立 ssl 連結。
  • web 伺服器接收到用戶端的請求之後,會将網站的證書(證書中包含了公鑰),傳回或者說傳輸給用戶端。
  • 用戶端和 web 伺服器端開始協商 SSL 連結的安全等級,也就是加密等級。
  • 用戶端浏覽器通過雙方協商一緻的安全等級,建立會話密鑰,然後通過網站的公鑰來加密會話密鑰,并傳送給網站。
  • web 伺服器通過自己的私鑰解密出會話密鑰。
  • web 伺服器通過會話密鑰加密與用戶端之間的通信。