圖解http,http基礎知識
一、瞭解web及網路基礎
1-1、URI(統一資源識別符號)
URL(統一資源定位符),我們比較熟悉,URI是3個單詞的縮寫,Uniform Resource Identifier
URI用字串表示某一網際網路資源,而URL表示資源的地點,可見URL是URI的子集;採用HTTP協議時,協議方案就是http,除此之外,還有ftp、file等,標準的URI協議有30種方案左右。
登入資訊:指定使用者名稱和密碼作為從伺服器端獲取資源時必要的登入資訊(身份認證),可選項。
查詢字串:針對已指定的檔案路徑內的資源,可以使用查詢字串傳入任意引數,可選項。
片段識別符號:使用片段識別符號通常可標識出已獲取資源中的子資源,可選項。
1-2、HTTP協議基本規定
一、HTTP傳送規則:HTTP協議規定,請求從客戶端發出,最後伺服器端響應該請求並返回,換句話說,伺服器端在沒有收到請求的時候,不會傳送響應,所以肯定是從客戶端開始建立通訊的。
二、HTTP無狀態:HTTP是一種不儲存狀態,即無狀態協議,不會對之前傳送過的請求進行資訊的儲存。這樣做的好處是可以快速處理大量事務。但是隨著網路的不斷髮展,這種無狀態的模式,出現了瓶頸,比如購物網站需要保持使用者的登入狀態,這樣伺服器才能知道是誰傳送的請求。雖然HTTP1.1是無狀態的協議,但是使用了cookie技術,可以儲存使用者的登入狀態
1-3、使用方法下達命令
1-4、HTTP持久化連結
在HTTP協議的初期版本中,每進行一次HTTP通訊都要斷開一次tcp連結,在早些時候,傳輸的都是文字類資訊,但是目前請求都是含有大量圖片的資訊,這樣tcp的不斷斷開重連會造成很大的開銷。
為了解決上述tcp連結的問題,HTTP1.1和部分HTTP1.0相出了持久連線(HTTP keep-alive)的方法,持久化連結的特點是:只要任意一端沒有明確提出斷開連結,則保持TCP連結狀態。http1.1預設都支援keep-alive
1-5、cookie的狀態管理
cookie會根據服務端傳送的一個叫做Set-Cookie的首部欄位資訊,通知客服端儲存Cookie,當下次客服端在往服務端傳送請求的時候,客服端會自動在請求報文中加入Cookie然後傳送過去,服務端接收到Cookie之後,對Cookie進行解析,然後找出是哪個使用者。
eg:
一、請求報文(沒有Cookie資訊的狀態)
GET /reader/HTTP/1.1
Host:hackr.jp
*首部欄位沒有cookie的相關資訊
二、響應報文(伺服器端生成Cookie資訊)
HTTP/1.1 200 OK
Date:Thu ,12 JUl 2012 07:12:20 GMT
Server: Apache
<Set-Cookie:sid=1342077140;path=/;expires=wed>
Content-Type:text/plain;charset=UTF-8
三、請求報文(自動傳送儲存的Cookie資訊)
GET /image/ HTTP/1.1
Host hackr.jp
Cookie:sid=1342077140
二、HTTP報文內的資訊
2-1、HTTP報文
用於HTTP協議互動的資訊
請求行:包含用於請求的方法,請求的URI和HTTP版本
狀態行:包含表明響應結果的狀態碼,原因短語和HTTP版本
首部欄位:包含表示請求和響應的各種條件和屬性的各類首部,一般有4中首部,通用首部,請求首部,響應首部,實體首部。
2-2、編碼提升傳輸效率
常用的內容編碼有這幾種:
- gzip (GNU zip)
- compress (UNIX 系統的標準壓縮)
- deflate (zlib)
- identity (不進行編碼)
2-3、分割傳送的分塊傳輸編碼
在傳輸大容量資料的時候,經常採用分塊傳輸的方式
2-4、傳送多種資料的多部分物件集合
例如在寫郵件的時候,可以在郵件中插入音訊和視訊,還有文字多種不同型別的資料,這個時候就需要用到多種資料的多部分物件集合傳送
2-5、獲取指定範圍的請求資料
例如在下載電影的時候,突然斷網了,之前是需要重新下載的,但是可以使用Range: bytes=5001-,從5001位元組之後開始下載
2-6、內容協商,返回最合適的內容
同一個網站,有多份內容相同的頁面,比如中文和英文,雖然內容是一樣的,但是使用的語言不同,這個時候需用內容協商。Accept,Accept-Charset等等
三、HTTP首部欄位
四、HTTPS協議
4-1、HTTPS協議介紹
http協議未對資訊進行加密,所以需要採用加密的形式進行傳輸,常用的加密方法有:ssl,tls,(secure socket layer)(transport layer security),在http協議上使用ssl就是https協議。
4-2、不驗證通訊方的身份可能遇到身份偽裝
http通訊不會進行身份的確認,所以可能出現雙方身份的偽裝,比如客戶端使用URI訪問伺服器的時候,響應的資料一定是指定的伺服器發出的資料嘛?伺服器傳送給客服端,一定是指定的客戶端嘛?
比如常見的DoS攻擊,就算是無意義的請求,也會響應。
ssl不僅可以加密資訊,還有身份驗證的作用(證書驗證)
4-3、資訊完整性
收到的資訊,可能被人為篡改,http無法證明通訊的完整性。像這種,在響應傳輸的過程中發起的攻擊,稱為中間人攻擊(man in the middle attack,MITM)
常用的http協議為了保證資訊完整性,一般採用MD5或者證書籤名,但是當簽名證書和md5資訊被人篡改,則無法保證資訊完整性。
4-4、HTTP+加密+認證+資訊完整性=HTTPS
五、確認訪客的身份確認
http使用的身份認證:
- BASIC認證(基本認證)--服務端放回401說明需要認證,然後輸入使用者名稱和密碼,使用base64加密,傳送給服務端,然後進行身份認證。
- DIGEST認證(摘要認證)--服務端傳送隨機數,客戶端傳送摘要和計算結果。
- SSL客服端認證
- FormBase認證(基於表單認證)
由於使用上的便利性和安全性的問題,http協議標準提供的basic認證和digest認證幾乎不怎麼使用,另外ssl使用成本高,一般使用基於表單認證。
5-1、基於表單認證
基於表單的認證標準規範尚未有定論,一般會使用cookie管理session(會話)
閱讀原文
相關文章
- 《圖解HTTP》知識點摘錄圖解HTTP
- 你應該知道的HTTP基礎知識HTTP
- Http/2知識圖譜HTTP
- 圖解HTTP知識總結(思維導圖)圖解HTTP
- HTTP知識HTTP
- 圖解 IP 基礎知識!圖解
- 01_Http、Https、Http2.0 的基礎知識總結(持續更新篇)HTTP
- 淺顯易懂的前端知識點(二)——HTTP協議基礎前端HTTP協議
- ASP.NET Core基礎知識(十四)【發出 HTTP 請求】ASP.NETHTTP
- Linux下Apache(HTTP)基礎知識梳理-運維筆記LinuxApacheHTTP運維筆記
- 《圖解HTTP》— Web網路基礎圖解HTTPWeb
- 01 前端HTTP協議(圖解HTTP) 之 網路基礎前端HTTP協議圖解
- 《圖解HTTP》學習筆記(附帶WebSocket知識點)圖解HTTP筆記Web
- HTTP入門知識HTTP
- http常用知識理解HTTP
- http快取知識HTTP快取
- HTTP基礎概念HTTP
- 基礎篇-http協議《http 簡介、url詳解、request》HTTP協議
- 《圖解HTTP》— HTTP報文資訊圖解HTTP
- Http協議常用知識HTTP協議
- HTTP知識點小結HTTP
- 05 前端HTTP協議(圖解HTTP) 之 HTTP首部前端HTTP協議圖解
- HTTP協議基礎HTTP協議
- 一、《圖解HTTP》- WEB和網路基礎圖解HTTPWeb
- NumPy基礎知識圖譜
- 圖形學基礎知識
- GraphX-基礎知識-圖術語解釋
- 讀《圖解HTTP》圖解HTTP
- 圖解HTTP(1)圖解HTTP
- 圖解HTTP(2)圖解HTTP
- 圖解HTTP(4)圖解HTTP
- HTTP和AJAX重點知識HTTP
- HTTP知識點(前端需掌握)HTTP前端
- HTTP協議知識總結HTTP協議
- HTTP協議_入門知識HTTP協議
- HTTP協議冷知識大全HTTP協議
- 重識TCP/IP協議族與HTTP基礎TCP協議HTTP
- 《圖解HTTP》——簡單的HTTP協議圖解HTTP協議