HTTP 協議 - 簡單談談 TCP / IP (一)

原文鏈接 bloggit

TCP / IP 基本概念

世界上幾乎全部的 HTTP 協議都是由 TCP / IP 協議來承載的。它是互聯網相關的各種協議族的總稱(一般所說的規則,就是協議)。github

從輸入的 URL 裏咱們能夠從中獲取服務器端的 IP 地址與端口號,創建一條 TCP 鏈接。創建鏈接以後,在客戶端和服務器端之間交換的報文,不會丟失,受損,或者失序。安全

分層

TCP / IP 協議族裏最重要的特徵就是分層,每一層都靠下一層的支持。TCP / IP 按層次分,分爲四層:應用層、傳輸層、網絡層、數據鏈路層。HTTPS 就是在應用層與傳輸層之間多了一層安全層。服務器

分層以後,各層只需完成各自特定的問題,而不須要管其餘,使得設計變的簡單,同時,若某部分須要改變時,也只需改變對應的層,無需改變總體。網絡

應用層

應用層決定了向用戶提供應用服務時通訊的活動(規定傳輸的數據格式)。tcp

好比 FTP 文件傳輸協議,DNS 域名解析系統,HTTP 超文本傳輸協議也位於此層。加密

傳輸層

傳輸層提供處於網絡鏈接中的兩臺計算機之間的數據傳輸,在傳輸層有兩個不一樣的協議,TCP 和 UDP 協議。操作系統

網絡層

網絡層,用來處理網絡上流動的數據包,數據包是網絡傳輸的最小數據單位,該層規定了經過怎樣的路徑到達對方計算機,並把數據包傳送給對方。設計

鏈路層

用來處理網絡的硬件部分。如操做系統,設備驅動等。blog

TCP / IP 通信傳輸

HTTP

以 HTTP 爲例,在進行網絡通訊時,發送端會從應用層往下走,接收端則會往應用層往上走。

創建 TCP 鏈接以後,從客戶端發送一條 HTTP 請求報文,會以流的形式,至傳輸層(TCP協議), 傳輸層會把從應用層出收到的請求報文進行分割,並在各個報文打上標記序號,及端口號轉發給網絡層。到達網絡層(IP協議)後,增長做爲通訊目的地的 MAC 地址後轉發給鏈路層。

做爲接收端的服務器在鏈路層接收到數據以後,會一級一級往上傳至應用層。

發送端在層與層之間傳輸數據時,每通過一層,會被打上屬於該層的首部信息。
接收端在層與層之間傳輸數據時,會把每層對應的首部去掉。

HTTPS

HTTPS 方案的 URL 以 https:// 開頭,而不是以 http:// 開頭,使用 HTTPS時,全部的 HTTP 請求和響應數據在發送到網絡以前,都要進行加密。

下圖中,對比了 HTTP 與 HTTPS 的不一樣:

在發送已加密的 HTTP 報文以前,客戶端和服務端會進行一次 SSL 握手,在此次握手過程當中,他們主要完成如下工做:

  • 交換協議版本號;
  • 選擇一個兩端都瞭解的密碼;
  • 對兩端身份驗證;
  • 生成臨時的會話祕鑰,以便加密通道。

實際過程可能更復雜。

相關文章
相關標籤/搜索