1.1 http 協議

1.什麼是HTTP?

HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫。包含有超鏈接(Link)和各種多媒體元素標記(Markup)的文本。這些超文本文件彼此鏈接,形成網狀(Web),因此又被稱爲網頁(Web Page)。這些鏈接使用URL表示。最常見的超文本標記語言HTML。

2.什麼是URL?

URL統一資源定位符(Uniform Resource Locator),用來唯一地標識萬維網中的某一文檔。URL由協議,主機和端口(默認爲80)以及文件名三部分構成:
在這裏插入圖片描述

圖1-1

3.什麼是超文本傳輸協議(HTTP)?

是客戶端(如瀏覽器和手機應用程序等)以及其他應用程序 與Web服務器之間的應用層通信協議。在Internet上的Web服務器上存放的都是超文本信息,Web服務器按照URL指示,將超文本文檔傳輸到客戶端(瀏覽器),以實現超鏈接功能。

4.HTTP協議的特點

1)支持客戶/服務器模式(C/S):HTTP協議由兩部分程序實現,一個客戶機程序和一個服務器程序,通過交換HTTP報文進行會話。
2)簡單快速:客戶向服務器請求服務時,只需要傳送請求方法和路徑,由於HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快。
3)靈活:HTTP允許傳輸任意類型的數據對象,正在傳輸的類型由Content-Type加以標記。
4)無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開連接。採用這種方式可以節省傳輸時間。

早期這麼做的原因是HTTP產生於互聯網,雖然服務器處理的客戶端訪問數據量很大,幾十萬到幾百萬,但每個客戶端(瀏覽器等應用程序)與服務器之間交換數據間歇性比較大(即傳輸具有突發性,瞬時性),並且網頁瀏覽的聯想性,發散性導致兩次傳送的數據關聯性很低,大部分通道實際上很空閒,無端佔用資源。因此HTTP協議的設計者有意利用這種特點將協議設計爲請求時建立連接,請求完釋放鏈接,以儘快釋放資源來服務於其他客戶端程序;隨着時間推移,網頁(其他應用程序等)複雜化,可能內嵌很多圖片,如果每次請求圖片,都建立一個TCP鏈接就顯得效率很低。於是Keep-Alive被提出來解決這個低效率問題,Keep-Alive功能使客戶端到服務器端的連接持續有效,當出現後繼請求時,就不用再建立TCP連接。(注:超過Keep-Alive時間和意外斷電會斷開)

5)無狀態:HTTP協議對事務處理沒有記憶能力,服務器不知道客戶端的狀態。即客戶端發送HTTP請求,服務器做出迴應,返回數據,但是服務器不做任何記錄。這樣做的既有優點也有缺點,
缺點是,如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大;優點是,如果服務器不需要先前傳送的信息時,服務端應答就快。由於現在客戶端與服務器是動態交互的,HTTP的無狀態特性嚴重阻礙了這些應用程序的實現,畢竟交互需要承前啓後的,如購物車程序也需要用戶之前選擇了那些商品。於是,保持HTTP連接狀態的技術就應運而生了,一個是Cookie,另一個是Session;Cookie是由服務端生成,發送給User-Agent客戶端(一般是瀏覽器),其中記錄了用戶信息以便確認用戶身份,保存在客戶端,客戶端下次請求時將Cookie信息發送給服務器來識別用戶身份(前提是瀏覽器啓用了Cookie);Session是服務端使用的一種記錄客戶端狀態的機制,Session將客戶端信息以某種形式記錄在服務器上,客戶端第一次請求時,服務器返回一個唯一的SessionId,客戶端將其保存在本地,客戶端再次訪問服務器時只需要帶上SessionId在對應Session中查找客戶的狀態就可以了。

5.HTTP的工作原理

在這裏插入圖片描述
結合圖1-1分析,在用戶點擊URL爲http://www.sxtyu.com/index.html的鏈接後,瀏覽器和Web服務器執行以下動作:
1)瀏覽器分析超鏈接中的URL
2)瀏覽器向DNS請求解析www.sxtyu.com的IP地址
3)DNS將解析出的IP地址202.2.16.21返回瀏覽器
4)瀏覽器與服務器建立TCP連接(80端口)
5)瀏覽器請求文檔:GET/index.html
6)服務器給出響應,將文檔index/html發送給瀏覽器
7)釋放TCP連接
8)瀏覽器顯示index.html中的內容

6.HTTP報文結構

1)請求報文:從客戶端向Web服務器發送的請求的報文。報文的所有字段都是ASCII碼。其由請求行,請求頭,請求體三部分組成。如下圖:

在這裏插入圖片描述

實例圖如下:
在這裏插入圖片描述
2)響應報文:從Web服務器到客戶端的應答。報文的所有字段都是ASCII碼。其由狀態行,消息報頭,響應正文三部分組成。如下圖:
在這裏插入圖片描述

實例圖如下:
在這裏插入圖片描述

圖1-6
3)響應報文中的狀態碼
狀態碼 含義 例子
1XX 通知消息 100=服務器正在處理客戶請求
2XX 成功 200= 請求成功(OK)
3XX 重定向 301 = 頁面改變了位置
4XX 客戶錯誤 403 = 服務器收到請求,但拒絕服務; 404 =請求的資源不存在,如輸入URL錯誤
5XX 服務器錯誤 500 = 服務器內部錯誤; 503 = 以後再試,當前不能處理請求

4)請求頭和消息報頭的字段解析

5.HTTP請求方法
根據HTTP標準,HTTP請求可以使用多種請求方法。
HTTP1.0定義了三種請求方法:GET,POST和HEAD方法。
HTTP1.1新增五中請求方法:OPTIONS,PUT,DELETE,TRACE和CONNECT方法。
如下圖表:
在這裏插入圖片描述

7 Get Post 區別

  • GET - 從指定的資源請求數據。
  • POST - 向指定的資源提交要被處理的數據
- GET POST
緩存 能被緩存 不能緩存
編碼類型 application/x-www-form-urlencoded application/x-www-form-urlencoded 或 multipart/form-data。爲二進制數據使用多重編碼。
對數據長度的限制 是的。當發送數據時,GET 方法向 URL 添加數據;URL 的長度是受限制的(URL 的最大長度是 2048 個字符)。 無限制。
對數據類型的限制 只允許 ASCII 字符。 沒有限制。也允許二進制數據。
安全性 與 POST 相比,GET 的安全性較差,因爲所發送的數據是 URL 的一部分。在發送密碼或其他敏感信息時絕不要使用 GET ! POST 比 GET 更安全,因爲參數不會被保存在瀏覽器歷史或 web 服務器日誌中。
傳參形式 拼接到url 多用於表單 Formbody傳參

8 header 詳解

在這裏插入圖片描述

更多參考:https://kb.cnblogs.com/page/92320/

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