入門HTTP協議

1.HTTP協議和TCP協議

tcp-http

1.1 長連接

long

keepalive

1.2 管線化

pipeline

2. URI和URL

2.1 URI

URI(Uniform Resource Identifier)是統一資源標識符,在某個規則下能把這個資源獨一無二標示出來,好比人的身份證號瀏覽器

  • Uniform 不用根據上下文來識別資源指定的訪問方式
  • Resource 能夠標識的任何東西
  • Identifier 表示可標識的對象

2.2 URL

統一資源定位符,表示資源的地點,URL時使用瀏覽器訪問WEB頁面時須要輸入的網頁地址緩存

  • Uniform 不用根據上下文來識別資源指定的訪問方式
  • Resource 能夠標識的任何東西
  • Location 定位

2.2.1 URL的格式

url

  • 協議類型
  • 登陸信息
  • 服務器地址
  • 服務器端口號
  • 帶層次的文件路徑
  • 查詢字符串
  • 片斷標識符

3. HTTP

  • 請求的一方叫客戶端,響應的一方叫服務器端
  • 經過請求和響應達成通訊
  • HTTP是一種不保存狀態的協議

3.1 請求報文

request

request-header

  • 請求行安全

    • 方法服務器

      • GET 獲取資源
      • POST 向服務器端發送數據,傳輸實體主體
      • PUT 傳輸文件
      • HEAD 獲取報文首部
      • DELETE 刪除文件
      • OPTIONS 詢問支持的方法
      • TRACE 追蹤路徑網絡

      • trace

    • 協議/版本號
    • URL
  • 請求頭
    • 通用首部(General Header)
    • 請求首部(Request Header)
    • 響應首部(Response Header)
    • 實體首部(Entity Header Fields)
  • 請求體

3.2 響應報文

  • response
  • responseheader
  • 響應行
  • 響應頭
  • 響應體

3.3 編碼

HTTP能夠在傳輸的過程當中經過編碼提高傳輸效率,可是會消耗更多的CPU時間。tcp

3.3.1 編碼壓縮

發送文件時能夠先用ZIP壓縮功能後再發送文件ide

encoding

  • gzip
  • compress
  • deflate
  • identify

3.3.2 分割發送的分塊傳輸編碼

請求的實體在還沒有傳輸完成前瀏覽器不能顯示。因此在傳輸大容量數據時,經過把數據分割成多塊,能讓瀏覽器逐步顯示頁面。網站

encoding

3.3.3 多部分對象集合

  • 一份報文主體中能夠包含多類型實體。
  • 使用boundary字符串來劃分多部分對象指明的各種實體。在各個實體起始行以前插入--標記,多部分對象集合最後插入--標記

mime

3.3.3.1 multiparty/form-data

上傳表單時使用multiparty/form-data編碼

form-data

3.3.3.2 multipart/byteranges 206(Particial Content)

狀態碼(Partical Content)響應報文中包含多個範圍時使用url

  • byteranges

3.3.4 獲取部份內容的範圍請求

爲了實現中斷恢復下載的需求,須要能下載指定下載的實體範圍

  • 請求頭中的Range來指定 資源的byte範圍
  • 響應會返回狀態碼206響應報文
  • 對於多重範圍的範圍請求,響應會在首部字段Content-Type中標明multipart/byteranges
  • partial
  • bytes

3.4 內容協商

  • 首部字段
    • Accept
    • Accept-Charset
    • Accept-Encoding
    • Accept-Language
    • Content-Language
  • 協商類型
    • 服務器驅動
    • 客戶端驅動協商
    • 透明協商

3.5 狀態碼

狀態碼負責表示客戶端請求的返回結果、標記服務器端是否正常、通知出現的錯誤

3.5.1 狀態碼類別

類別 緣由短語
1XX Informational(信息性狀態碼)
2XX Success(成功狀態碼)
3XX Redirection(重定向)
4XX Client Error(客戶端錯誤狀態碼)
5XX Server Error(服務器錯誤狀態嗎)

3.5.2 2XX 成功

  • 200(OK 客戶端發過來的數據被正常處理
  • 204(Not Content 正常響應,沒有實體
  • 206(Partial Content 範圍請求,返回部分數據,響應報文中由Content-Range指定實體內容

3.5.3 3XX 重定向

  • 301(Moved Permanently) 永久重定向
  • 302(Found) 臨時重定向,規範要求方法名不變,可是都會改變
  • 303(See Other) 和302相似,但必須用GET方法
  • 304(Not Modified) 狀態未改變 配合(If-Match、If-Modified-Since、If-None_Match、If-Range、If-Unmodified-Since)
  • 307(Temporary Redirect) 臨時重定向,不應改變請求方法

3.5.4 4XX 客戶端錯誤

  • 400(Bad Request) 請求報文語法錯誤
  • 401 (unauthorized) 須要認證
  • 403(Forbidden) 服務器拒絕訪問對應的資源
  • 404(Not Found) 服務器上沒法找到資源

3.5.5 5XX 服務器端錯誤

  • 500(Internal Server Error)服務器故障
  • 503(Service Unavailable) 服務器處於超負載或正在停機維護

4. Web服務器

4.1 虛擬主機(Virtual Host)

一臺HTTP服務器上搭建多個Web站點,客戶端發送請求時必須在Host首部完整指定主機名或域名的URL

4.2 通訊轉發程序:代理、網關

4.2.1 代理

代理就是客戶端和服務器的中間人

proxy

4.2.1.1 爲啥使用代理
  • 利用緩存技術減小網絡流量
  • 組織內部針對網站進行訪問控制
  • 獲取訪問日誌
    4.2.1.2 代理的分類
  • 緩存代理 會預先把資源副本保存在服務器上
  • 透明代理 不對報文進行任何加工

4.2.2 網關

接收從客戶端發送來的數據時,會轉發給其餘服務器處理,再由本身返回

  • 使通訊線路上的服務器提供非HTTP協議服務
  • 提升通訊安全性

encoding

5. 首部

5.1 通用首部字段

首部字段名 說明
Cache-Control 控制緩存行爲
Connection 連接的管理
Date 報文日期
Pragma 報文指令
Trailer 報文尾部的首部
Trasfer-Encoding 指定報文主體的傳輸編碼方式
Upgrade 升級爲其餘協議
Via 代理服務器信息
Warning 錯誤通知

5.2 請求首部字段

首部字段名 說明
Accept 用戶代理可處理的媒體類型
Accept-Charset 優先的字符集
Accept-Encoding 優先的編碼
Accept-Langulage 優先的語言
Authorization Web認證信息
Expect 期待服務器的特定行爲
From 用戶的電子郵箱地址
Host 請求資源所在的服務器
If-Match 比較實體標記
If-Modified-Since 比較資源的更新時間
If-None-Match 比較實體標記
If-Range 資源未更新時發送實體Byte的範圍請求
If-Unmodified-Since 比較資源的更新時間(和If-Modified-Since相反)
Max-Forwards 最大傳輸跳數
Proxy-Authorization 代理服務器須要客戶端認證
Range 實體字節範圍請求
Referer 請求中的URI的原始獲取方
TE 傳輸編碼的優先級
User-Agent HTTP客戶端程序的信息

5.3 響應首部字段

首部字段名 說明
Accept-Ranges 是否接受字節範圍
Age 資源的建立時間
ETag 資源的匹配信息
Location 客戶端重定向至指定的URI
Proxy-Authenticate 代理服務器對客戶端的認證信息
Retry-After 再次發送請求的時機
Server 服務器的信息
Vary 代理服務器緩存的管理信息
www-Authenticate 服務器對客戶端的認證

5.4 實體首部字段

首部字段名 說明
Allow 資源可支持的HTTP方法
Content-Encoding 實體的編碼方式
Content-Language 實體的天然語言
Content-Length 實體的內容大小(字節爲單位)
Content-Location 替代對應資源的URI
Content-MD5 實體的報文摘要
Content-Range 實體的位置範圍
Content-Type 實體主體的媒體類型
Expires 實體過時時間
Last-Modified 資源的最後修改時間
相關文章
相關標籤/搜索