計算機網絡之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傳輸流程
-
地址解析
比如請求地址,http://localhost:8080/index.html從中分析出協議名,主機名,端口,對象路徑等
協議名:http
主機名:localhost ,進一步解析出Ip地址
端口:8080
對象路徑:/index.html -
封裝Http請求數據包
-
封裝成TCP包並建立連接,建立TCP連接(三次握手)
-
客戶機發送請求命令:
建立連接後,客戶機發送一個請求給服務器,請求方式的格式爲:統一資源標識符(URL)、協議版本號,後邊是 MIME 信息包括請求修飾符、客戶機信息和可內容。 -
服務器響應:
服務器接到請求後,給予相應的響應信息,其格式爲一個狀態行,包括信息的協議版本號、一個成功或錯誤的代碼,後邊是 MIME 信息包括服務器信息、實體信息和可能的內容。 -
服務器關閉TCP連接
一般情況下,一旦 Web 服務器向瀏覽器發送了請求數據,它就要關閉 TCP 連接,然後如果瀏覽器或者服務器在其頭信息加入了這行代碼 Connection:keep-alive,TCP 連接在發送後將仍然保持打開狀態,於是,瀏覽器可以繼續通過相同的連接發送請求。保持連接節省了爲每個請求建立新連接所需的時間,還節約了網絡帶寬。
三、HTTP的狀態
- 消息響應
狀態碼 | 說明 |
---|---|
100 | Continue(繼續) |
101 | Switching Protocol(切換協議) |
- 成功響應
狀態碼 | 說明 |
---|---|
200 | ok(成功) |
201 | Created(已創建) |
202 | Accepted(已創建) |
203 | Non-Authoritative Information(未授權信息) |
204 | No Content(無內容) |
205 | Reset Content(重置內容) |
206 | Partial Content(部分內容) |
- 重定向
狀態碼 | 說明 |
---|---|
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(永久重定向) |
- 客戶端錯誤
狀態碼 | 說明 |
---|---|
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(預期結果失敗) |
- 服務器錯誤
狀態碼 | 說明 |
---|---|
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提供三個功能:
- SSL服務器鑑別 :允許用戶證實服務器的身份。即獲取到公鑰的證書。從CA表中獲取認證證書與公鑰。
- 加密SSL會話:所有數據都在發送方加密,在接收方解密。SSL還提供了一種檢測信息是否被攻擊者篡改的機制。
- SSL客戶鑑別:允許服務器證實用戶的身份。
連接過程:
- 建立連接獲取證書:SSL 客戶端通過 TCP 和服務器建立連接之後(443 端口),並且在一般的 tcp 連接協商(握手)過程中請求證書。即客戶端發出一個消息給服務器,這個消息裏面包含了自己可實現的算法列表和其它一些需要的消息,SSL 的服務器端會迴應一個數據包,這裏面確定了這次通信所需要的算法,然後服務器向客戶端返回證書。(證書裏面包含了服務器信息:域名。申請證書的公司,公共祕鑰)。
- 證書驗證: Client 在收到服務器返回的證書後,判斷簽發這個證書的公共簽發機構,並使用這個機構的公共祕鑰確認簽名是否有效,客戶端還會確保證書中列出的域名就是它正在連接的域名。
- 數據加密和傳輸:如果確認證書有效,那麼生成對稱祕鑰並使用服務器的公共祕鑰進行加密。然後發送給服務器,服務器使用它的私鑰對它進行解密,這樣兩臺計算機可以開始進行對稱加密進行通信。