Http與Https的區別(精簡版包含協議說明)
一、HTTP與HTTPS的區別
- HTTP 標準埠是80 ,而 HTTPS 的標準埠是443;
- HTTP 的URL 以http:// 開頭,而HTTPS 的URL 以https:// 開頭;
- HTTP 對傳輸資料未做SSL/TLS加密,而 HTTPS 的傳輸資料是經過SSL/TLS加密的,相對來說https更安全;
- 在OSI 網路模型中,HTTP工作於應用層,而HTTPS 的安全傳輸機制工作在傳輸層;
- HTTP無需證書,而HTTPS 需要CA機構頒發的SSL證書(證書免費的少,一般需要花錢買);
二、HTTP與HTTPS的特點
HTTP的特點:
- 無狀態:協議對客戶端沒有狀態儲存,對事物處理沒有“記憶”能力,比如訪問一個網站需要反覆進行登入操作
- 無連線:HTTP/1.1之前,由於無狀態特點,每次請求需要通過TCP三次握手四次揮手,和伺服器重新建立連線。比如某個客戶機在短時間多次請求同一個資源,伺服器並不能區別是否已經響應過使用者的請求,所以每次需要重新響應請求,需要耗費不必要的時間和流量。
- 基於請求和響應:基本的特性,由客戶端發起請求,服務端響應
- 簡單快速、靈活
- 通訊使用明文、請求和響應不會對通訊方進行確認、無法保護資料的完整性
HTTPS的特點:
- 內容加密:採用混合加密技術,中間者無法直接檢視明文內容
- 驗證身份:通過證書認證客戶端訪問的是自己的伺服器
- 保護資料完整性:防止傳輸的內容被中間人冒充或者篡改
三、HTTP的格式
請求報文(包含四部分):
- 請求行*:包含請求方法、URL、HTTP版本資訊
- 請求頭*:包含host、Content-type等資訊
- 空行
- 訊息體
響應報文(包含四部分):
- 響應行*:包含HTTP版本、狀態碼、狀態碼的原因短語
- 響應頭*:
- 空行
- 響應訊息體
請求行和請求頭是必有選項
四、HTTP常用方法
- GET:請求獲取Request-URI所標識的資源 ----相當於查詢
- POST:在Request-URI所標識的資源後附加新的資料 ----相當於修改
- PUT: 請求伺服器儲存一個資源,並用Request-URI作為其標識 ----相當於增加
- DELETE:請求伺服器刪除Request-URI所標識的資源 ----相當於刪除
- HEAD:請求獲取由Request-URI所標識的資源的相應訊息報頭
- OPTIONS:查詢相應URI支援的HTTP方法(還有其他方法,不常用)
五、常見的首部
-
通用首部欄位(請求報文與響應報文都會使用的首部欄位)
- Date:建立報文時間
- Connection:連線的管理
- Cache-Control:快取的控制
- Transfer-Encoding:報文主體的傳輸編碼方式
-
請求首部欄位(請求報文會使用的首部欄位)
- Host:請求資源所在伺服器
- Accept:可處理的媒體型別
- Accept-Charset:可接收的字符集
- Accept-Encoding:可接受的內容編碼
- Accept-Language:可接受的自然語言
-
響應首部欄位(響應報文會使用的首部欄位)
- Accept-Ranges:可接受的位元組範圍
- Location:令客戶端重新定向到的URI
- Server:HTTP伺服器的安裝資訊
-
實體首部欄位(請求報文與響應報文的的實體部分使用的首部欄位)
- Allow:資源可支援的HTTP方法
- Content-Type:實體主類的型別
- Content-Encoding:實體主體適用的編碼方式
- Content-Language:實體主體的自然語言
- Content-Length:實體主體的的位元組數
- Content-Range:實體主體的位置範圍,一般用於發出部分請求時使用
六、HTTP與HTTPS的工作原理
HTTP的工作原理:
- 客戶與伺服器建立連線
- 客戶向伺服器提出請求
- 伺服器接受請求,並根據請求返回相應的檔案作為應答
- 客戶與伺服器關閉連線
HTTPS的工作原理:
- client向server傳送請求https://baidu.com,然後連線到server的443埠,傳送的資訊主要是隨機值1和客戶端支援的加密演算法。
- server接收到資訊之後給予client響應握手資訊,包括隨機值2和匹配好的協商加密演算法,這個加密演算法一定是client傳送給server加密演算法的子集。
- 隨即server給client傳送第二個響應報文是數字證書。服務端必須要有一套數字證書,可以自己製作,也可以向組織申請。區別就是自己頒發的證書需要客戶端驗證通過,才可以繼續訪問,而使用受信任的公司申請的證書則不會彈出提示頁面,這套證書其實就是一對公鑰和私鑰。傳送證書,這個證書其實就是公鑰,只是包含了很多資訊,如證書的頒發機構,過期時間、服務端的公鑰,第三方證書認證機構(CA)的簽名,服務端的域名資訊等內容。
- 客戶端解析證書,這部分工作是由客戶端的TLS來完成的,首先會驗證公鑰是否有效,比如頒發機構,過期時間等等,如果發現異常,則會彈出一個警告框,提示證書存在問題。如果證書沒有問題,那麼就生成一個隨即值(預主祕鑰)。
- 客戶端認證證書通過之後,接下來是通過隨機值1、隨機值2和預主祕鑰組裝會話祕鑰。然後通過證書的公鑰加密會話祕鑰。
- 傳送加密資訊,這部分傳送的是用證書加密後的會話祕鑰,目的就是讓服務端使用祕鑰解密得到隨機值1、隨機值2和預主祕鑰。
- 服務端解密得到隨機值1、隨機值2和預主祕鑰,然後組裝會話祕鑰,跟客戶端會話祕鑰相同。
- 客戶端通過會話祕鑰加密一條訊息傳送給服務端,主要驗證服務端是否正常接受客戶端加密的訊息。
- 同樣服務端也會通過會話祕鑰加密一條訊息回傳給客戶端,如果客戶端能夠正常接受的話表明SSL層連線建立完成了。
七、常見的HTTP相應狀態碼
- 1XX:資訊性狀態碼:接收的請求正在處理
- 2XX:成功狀態碼:請求正常處理完畢、
- 3XX:重定向狀態碼:需要進行附加操作進一步完成請求
- 4XX:客戶端錯誤狀態碼:伺服器無法處理請求
- 5XX:伺服器錯誤狀態碼:伺服器處理請求出錯
詳細的如下:
- 200:請求被正常處理
- 204:請求被受理但沒有資源可以返回
- 206:客戶端只是請求資源的一部分,伺服器只對請求的部分資源執行GET方法,相應報文中通過Content-Range指定範圍的資源。
- 301:永久性重定向
- 302:臨時重定向
- 303:與302狀態碼有相似功能,只是它希望客戶端在請求一個URI的時候,能通過GET方法重定向到另一個URI上
- 304:傳送附帶條件的請求時,條件不滿足時返回,與重定向無關
- 307:臨時重定向,與302類似,只是強制要求使用POST方法
- 400:請求報文語法有誤,伺服器無法識別
- 401:請求需要認證
- 403:請求的對應資源禁止被訪問
- 404:伺服器無法找到對應資源
- 500:伺服器內部錯誤
- 503:伺服器正忙
參考連結:
https://blog.csdn.net/xiaoming100001/article/details/81109617
相關文章
- HTTP協議(包含與HTTPS的區別) 知識筆記HTTP協議筆記
- Http與Https協議HTTP協議
- RTSP協議、RTMP協議、HTTP協議的區別協議HTTP
- CXP 協議中upconnection 與downconnection的說明及其區別協議
- http與https的區別HTTP
- HTTP 與 HTTPS 的區別HTTP
- HTTP協議圖文簡述--HTTP/HTTPS/HTTP2HTTP協議
- HTTP和HTTPS協議HTTP協議
- Http get,post,soap協議的區別HTTP協議
- 簡述HTTP和HTTPS協議的不同之處HTTP協議
- 簡單介紹HTTP與HTTPS之間的區別HTTP
- HTTP協議和HTTPS協議的異同點?HTTP協議
- Zookeeper的ZAB協議與Paxos協議區別協議
- HTTP協議類POST 和GET的區別HTTP協議
- HTTP協議中URI和URL區別HTTP協議
- 02 前端HTTP協議(圖解HTTP) 之 簡單的HTTP協議前端HTTP協議圖解
- HTTP協議GET和POST請求的區別HTTP協議
- TCP 協議簡單說明【PHP 碼農的現身說法】TCP協議PHP
- HTTP協議簡述HTTP協議
- HTTP 協議簡介HTTP協議
- Http協議簡介HTTP協議
- 簡述HTTP協議HTTP協議
- HTTP協議中PUT和POST使用區別HTTP協議
- http和https的區別?HTTP
- HTTPS和HTTP的區別HTTP
- HTTPS 和 HTTP 的區別HTTP
- http和https的區別HTTP
- 什麼是HTTPS證書?HTTP與HTTPS的區別HTTP
- http與https的區別我真的知道嗎HTTP
- 《圖解HTTP》——簡單的HTTP協議圖解HTTP協議
- 《圖解HTTP》—簡單的HTTP協議圖解HTTP協議
- 國密SSL協議與標準TLS協議的區別協議TLS
- 實現網站由http協議轉為https協議網站HTTP協議
- HTTP協議Cookie和Session有什麼區別HTTP協議CookieSession
- HTTPS 和 HTTP 的主要區別HTTP
- 網路協議 - TCP/IP、HTTP、HTTPS、HTTP2.0協議TCPHTTP
- TCP協議與UDP協議以及兩者之間的區別TCP協議UDP
- http協議中,“get”和“post”的區別是什麼HTTP協議