iOS面試關於http知識點basic-01-http

URL

  • URL 的全稱是 Uniform Resource Locator(統一資源定位符)
  • 通過 1 個 URL,能找到互聯網上唯一的 1 個資源
  • URL就是資源的地址、位置,互聯網上的每個資源都有一個唯一的 URL

URL 格式

  • 基本格式:協議頭://主機地址/路徑
    • 協議頭:不同的協議,表示不同的資源查找及傳輸方式
    • 主機地址:存放資源主機的 IP 地址(域名)
    • 路徑:資源在主機中的具體位置

這裏寫圖片描述

HTTP 協議

  • HTTP 的全稱是 Hypertext Transfer Protocol,超文本傳輸協議
  • 規定客戶端和服務器之間的數據傳輸格式
  • 讓客戶端和服務器能有效地進行數據溝通
  • HTTP 協議是網絡編程使用最爲廣泛的協議

這裏寫圖片描述

  • 思考
    • 客戶端該傳什麼格式的數據給服務器?服務器才能看懂
    • 服務器該返回什麼格式的數據給客戶端?客戶端才能看懂

HTTP協議特點

  • 簡單快速
    • 因爲HTTP協議簡單,所以 HTTP 服務器的程序規模小,通信速度快
  • 靈活
    • HTTP 允許傳輸任意類型的數據
  • HTTP 0.91.0 使用非持續連接
    • 限制每次連接只處理一個請求,服務器對客戶端的請求做出響應後,立刻斷開連接,這種方式可以節省傳輸時間
  • HTTP 1.1 使用持續連接
    • 不必爲每個web對象創建一個新的連接,一個連接可以傳送多個對象

HTTP通信過程

請求

  • HTTP協議規定:一個完整的由客戶端發給服務器HTTP 請求 需要包含以下內容:
    • 請求行:指定 請求方法請求資源路徑 以及 HTTP協議版本
# / 表示訪問根目錄
GET / HTTP/1.1
* `請求頭`:對客戶端的環境描述、客戶端請求的主機地址等信息
    * `請求頭`中至少包含以下信息
# 客戶端要訪問的服務器主機地址
Host: m.baidu.com
    * `請求頭`中還可以包含以下信息
# 客戶端的類型,客戶端的軟件環境
User-Agent: iPhone AppleWebKit
# 客戶端所能接收的數據類型
Accept: text/html, */*
# 客戶端的語言環境
Accept-Language: zh-cn
# 客戶端支持的數據壓縮格式
Accept-Encoding: gzip
# 訪問結束後,是否斷開連接
Connection: Close
* 請求體(可選):客戶端發給服務器的具體數據,例如要上傳的文件數據
  • 請求格式
    • 每一項請求信息末尾使用 \r\n
    • 最後一個請求項末尾使用 \r\n\r\n 表示請求結束

響應

  • HTTP協議規定:一個完整的 HTTP 響應包含以下內容:
    • 狀態行:包含了HTTP協議版本、狀態碼、狀態英文名稱
# 請求成功
HTTP/1.1 200 OK
# 內容無變化
HTTP/1.1 304 Not Modified
* 響應頭:包含了對服務器的描述、對返回數據的描述
# 服務器的類型
Server: Apache/2.4.10 (Unix) PHP/5.5.20
# 返回數據的類型
Content-Type: text/html
# 返回數據的長度
Content-Length: 660
# 響應時間
Date: Thu, 04 Jun 2015 19:31:50 GMT
# ETag(HASH值,用於檢測本地資源和服務器資源是否一致)
ETag: "294-4e1862f57e7c0"
* 實體內容:服務器返回給客戶端的具體二進制數據

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章