天天看點

全面了解HTTP和HTTPS

一、網絡層結構

1、OSI七層模型和TCP/IP四層模型

網絡結構有兩種主流的分層方式:OSI七層模型和TCP/IP四層模型。

OSI是指Open System Interconnect,意為開放式系統互聯。

TCP/IP是指傳輸控制協定/網間協定,是目前世界上應用最廣的協定。

全面了解HTTP和HTTPS
全面了解HTTP和HTTPS

特點:  1.   OSI模型每層都有自己的功能集;

           2.  層與層之間互相獨立又互相依靠;

           3.  上層依賴于下層,下層為上層提供服務。

2、兩種模型的差別

全面了解HTTP和HTTPS

1.  TCP/IP支援跨層封裝;OSI不支援 

2.  TCP/IP僅僅支援IP網絡協定;  OSI支援多種網絡層協定(IP    IPX    APPLE  TALK    NOVELL   NSAP)

二、Http協定

1、http的曆史版本比較

1、1991年釋出Http/0.9版本,隻有Get指令,且服務端直返HTML格式字元串,伺服器響應完畢就關閉TCP連接配接。

2、1996年釋出Http/1.0版本

優點:可以發送任何格式内容,包括文字、圖像、視訊、二進制。也豐富了指令Get,Post,Head。請求和響應的格式加入頭資訊。

缺點:每個TCP連接配接隻能發送一個請求,而建立TCP連接配接的成本很高,導緻Http/1.0新能很差。

3、1997釋出Http/1.1版本,完善了Http協定,直至20年後的今天仍是最流行的版本。

優點:a. 引入持久連接配接,TCP預設不關閉,可被多個請求複用,對于一個域名,多數浏覽器允許同時建立6個持久連接配接。

b. 引入管道機制,即在同一個TCP連接配接中,可以同時發送多個請求,不過伺服器還是按順序響應。

c. 在頭部加入Content-Length字段,一個TCP可以同時傳送多個響應,是以就需要該字段來區分哪些内容屬于哪個響應。

d. 分塊傳輸編碼,對于耗時的動态操作,用流模式取代緩存模式,即産生一塊資料,就發送一塊資料。

e. 增加了許多指令,頭資訊增加Host來指定伺服器域名,可以通路一台伺服器上的不同網站。

缺點:TCP連接配接中的響應有順序,伺服器處理完一個回應才能處理下一個回應,如果某個回應特别慢,後面的請求就會排隊等着(對頭堵塞)。

4、2015年釋出Http/2版本,它有幾個特性:二進制協定、多工、資料流、頭資訊壓縮、伺服器推送。

2.http請求格式

HTTP請求封包由3部分組成(請求行+請求頭+請求體)

全面了解HTTP和HTTPS
全面了解HTTP和HTTPS

①是請求方法,HTTP/1.1 定義的請求方法有8種:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、TRACE,最常的兩種GET和POST,如果是RESTful接口的話一般會用到GET、POST、DELETE、PUT。

②為請求對應的URL位址,它和封包頭的Host屬性組成完整的請求URL

③是協定名稱及版本号。

④是HTTP的封包頭,封包頭包含若幹個屬性,格式為“屬性名:屬性值”,服務端據此擷取用戶端的資訊。

⑤是封包體,它将一個頁面表單中的元件值通過param1=value1&param2=value2的鍵值對形式編碼成一個格式化串,它承載多個請求參數的資料。不但封包體可以傳遞請求參數,請求URL也可以通過類似于“/chapter15/user.html? param1=value1&param2=value2”的方式傳遞請求參數。

1-3 請求行

全面了解HTTP和HTTPS

  請求位址:通路伺服器的哪個目錄。

4-請求頭 

(1)

  • Host:指定伺服器域名,可用來區分通路一個伺服器上的不同服務
  • Connection:keep-alive表示要求伺服器不要關閉TCP連接配接,close表示明确要求關閉連接配接,預設值是keep-alive
  • Accept-Encoding:說明自己可以接收的壓縮方式
  • Accept-Language:可以接受的語言
  • User-Agent:使用者代理,是伺服器能識别用戶端的作業系統(Android、IOS、WEB)及相關的資訊。作用是幫助伺服器區分用戶端,并且針對不同用戶端讓使用者看到不同資料,做不同操作。
  • Content-Type:伺服器告訴用戶端資料的格式,常見的值有text/plain,image/jpeg,image/png,video/mp4,application/json,application/zip。這些資料類型總稱為MIME TYPE。
  • Content-Length: 請求體長度
  • User-Agent : 浏覽器資訊
  • cookie :

(2)請求空行分析: 就是一個分隔符,用來區分請求頭和請求體的;

5-請求體

隻有POST請求才有請求體, 是以 POST請求 請求體中存放的是表單送出的鍵值對。

例如:

name=’zs’&age=10

3.http響應格式

HTTP的響應封包也由三部分組成(響應行+響應頭+響應體):

全面了解HTTP和HTTPS
全面了解HTTP和HTTPS

響應行

響應碼分五種類型,由它們的第一位數字表示: 

1xx:資訊,請求收到,繼續處理 

2xx:成功,行為被成功地接受、了解和采納 

3xx:重定向,為了完成請求,必須進一步執行的動作 

4xx:用戶端錯誤,請求包含文法錯誤或者請求無法實作 

5xx:伺服器錯誤,伺服器不能實作一種明顯無效的請求 

下表顯示每個響應碼及其含義: 

100 繼續101 分組交換協

200 OK201 被建立202 被采納203 非授權資訊204 無内容205 重置内容206 部分内容

300 多選項301 永久地傳送302 找到303 參見其他304 未改動305 使用代理307 暫時重定向

400 錯誤請求401 未授權402 要求付費403 禁止404 未找到405 不允許的方法406 不被采納407 要求代理授權408 請求逾時409 沖突

  410 過期的411 要求的長度412 前提不成立413 請求執行個體太大414 請求URI太大415 不支援的媒體類型416 無法滿足的請求範圍417 失敗的預期

500 内部伺服器錯誤501 未被使用502 網關錯誤503 不可用的服務504 網關逾時505 HTTP版本未被支援 

響應頭

Content-Encoding:伺服器資料壓縮方式

Transfer-Encoding:chunked表示采用分塊傳輸編碼,有該字段則無需使用Content-Length字段。

Content-Length:聲明資料的長度,請求和回應頭部都可以使用該字段。

轉載于:https://www.cnblogs.com/yuanfang0903/p/11280891.html

繼續閱讀