計算機網絡之Http與Https

一、Http介紹

Http即超文本傳送協議,是應用層上的協議。HTTP 是一個無狀態的協議。無狀態是指客戶機(Web 瀏覽器)和服務器之間不需要建立持久的連接,這意味着當一個客戶端向服務器端發出請求,然後服務器返回響應(response),連接就被關閉了,在服務器端不保留連接的有關信息.HTTP 遵循請求(Request)/應答(Response)模型。客戶機(瀏覽器)向服務器發送請求,服務器處理請求並返回適當的應答。所有 HTTP 連接都被構造成一套請求和應答。統一資源定位符URL是用來表示從因特網上得到的資源位置和訪問這些資源的方法。

//URL的組成部分
<協議>://<主機><端口>/<路徑>
//http協議
http://<主機><端口>/<路徑>

請求報文的一些方式:

請求方式 說明
GET 請求讀取由URL所標誌的信息
POST 給服務器發送信息
HEAD 請求讀取由URL所標誌的信息的首部
OPTION 請求一些選項信息
PUT 在指明的URL下存儲一個文檔
DELETE 刪除指明的URL所標誌的資源
TRACE 用進行環回測試的請求報文
CONNECT 用於代理服務器

二、Http傳輸流程

  1. 地址解析
    比如請求地址,http://localhost:8080/index.html從中分析出協議名,主機名,端口,對象路徑等
    協議名:http
    主機名:localhost ,進一步解析出Ip地址
    端口:8080
    對象路徑:/index.html

  2. 封裝Http請求數據包

  3. 封裝成TCP包並建立連接,建立TCP連接(三次握手)

  4. 客戶機發送請求命令:
    建立連接後,客戶機發送一個請求給服務器,請求方式的格式爲:統一資源標識符(URL)、協議版本號,後邊是 MIME 信息包括請求修飾符、客戶機信息和可內容。

  5. 服務器響應:
    服務器接到請求後,給予相應的響應信息,其格式爲一個狀態行,包括信息的協議版本號、一個成功或錯誤的代碼,後邊是 MIME 信息包括服務器信息、實體信息和可能的內容。

  6. 服務器關閉TCP連接
    一般情況下,一旦 Web 服務器向瀏覽器發送了請求數據,它就要關閉 TCP 連接,然後如果瀏覽器或者服務器在其頭信息加入了這行代碼 Connection:keep-alive,TCP 連接在發送後將仍然保持打開狀態,於是,瀏覽器可以繼續通過相同的連接發送請求。保持連接節省了爲每個請求建立新連接所需的時間,還節約了網絡帶寬。

三、HTTP的狀態

  1. 消息響應
狀態碼 說明
100 Continue(繼續)
101 Switching Protocol(切換協議)
  1. 成功響應
狀態碼 說明
200 ok(成功)
201 Created(已創建)
202 Accepted(已創建)
203 Non-Authoritative Information(未授權信息)
204 No Content(無內容)
205 Reset Content(重置內容)
206 Partial Content(部分內容)
  1. 重定向
狀態碼 說明
300 Multiple Choice(多種選擇)
301 Moved Permanently(永久移動)
302 Found(臨時移動)
303 See Other(查看其他位置)
304 Not Modified(未修改)
305 Use Proxy(使用代理)
306 unused(未使用)
307 Temporary Redirect(臨時重定向)
308 Permanent Redirect(永久重定向)
  1. 客戶端錯誤
狀態碼 說明
400 Bad Request(錯誤請求)
401 Unauthorized(未授權)
402 Payment Required(需要付款)
403 Forbidden(禁止訪問)
404 Not Found(未找到)
405 Method Not Allowed(不允許使用該方法)
406 Not Acceptable(無法接受)
407 Proxy Authentication Required(要求代理身份驗證)
408 Request Timeout(請求超時)
409 Conflict(衝突)
410 Gone(已失效)
411 Length Required(需要內容長度頭)
412 Precondition Failed(預處理失敗)
413 Request Entity Too Large(請求實體過長)
414 Request-URI Too Long(請求網址過長)
415 Unsupported Media Type(媒體類型不支持)
416 Requested Range Not Satisfiable(請求範圍不合要求)
417 Expectation Failed(預期結果失敗)
  1. 服務器錯誤
狀態碼 說明
500 Internal Server Error(內部服務器錯誤)
501 Implemented(未實現)
502 Bad Gateway(網關錯誤)
503 Service Unavailable(服務不可用)
504 Gateway Timeout (網關超時)
505 HTTP Version Not Supported(HTTP 版本不受支持)

四、Https

HTTPS(全稱:Hypertext Transfer Protocol over Secure Socket Layer),是以安全爲目標的HTTP 通道,簡單講是 HTTP 的安全版。即 HTTP 下加入 SSL (Secure Socket Layer)協議,HTTPS 的安全基礎是 SSL。其所用的端口號是 443。

SSL可對www客戶與服務器之間的傳送的數據進行加密與鑑別。它在雙方聯絡階段對將要使用的加密算法(如用DES或RSA)和雙方共享的會話密鑰進行協商,完成客戶與服務器之間的鑑別。

SSL提供三個功能:

  1. SSL服務器鑑別 :允許用戶證實服務器的身份。即獲取到公鑰的證書。從CA表中獲取認證證書與公鑰。
  2. 加密SSL會話:所有數據都在發送方加密,在接收方解密。SSL還提供了一種檢測信息是否被攻擊者篡改的機制。
  3. SSL客戶鑑別:允許服務器證實用戶的身份。

連接過程:

  1. 建立連接獲取證書:SSL 客戶端通過 TCP 和服務器建立連接之後(443 端口),並且在一般的 tcp 連接協商(握手)過程中請求證書。即客戶端發出一個消息給服務器,這個消息裏面包含了自己可實現的算法列表和其它一些需要的消息,SSL 的服務器端會迴應一個數據包,這裏面確定了這次通信所需要的算法,然後服務器向客戶端返回證書。(證書裏面包含了服務器信息:域名。申請證書的公司,公共祕鑰)。
  2. 證書驗證: Client 在收到服務器返回的證書後,判斷簽發這個證書的公共簽發機構,並使用這個機構的公共祕鑰確認簽名是否有效,客戶端還會確保證書中列出的域名就是它正在連接的域名。
  3. 數據加密和傳輸:如果確認證書有效,那麼生成對稱祕鑰並使用服務器的公共祕鑰進行加密。然後發送給服務器,服務器使用它的私鑰對它進行解密,這樣兩臺計算機可以開始進行對稱加密進行通信。
    https通信過程
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章