一.http協議
1.官方概念:
http協議是hyper text transfer protocol(超文字傳輸協議)的縮寫,是用於從全球資訊網(www:world wide web )伺服器傳輸超文字到本地瀏覽器的傳送協議。
2.白話概念:
http協議就是伺服器(server)和客戶端(client)之間進行資料互動(相互傳輸資料)的一種形式。我們可以將server和client進行擬人化,那麼該協議就是server和client這兩兄弟間指定的一種互動溝通方式。
3.http工作原理:
http協議工作於客戶端-服務端架構為上。瀏覽器作為http客戶端通過url向http服務端即web伺服器傳送所有請求。web伺服器根據接收到的請求後,向客戶端傳送響應資訊。
4.http四點注意事項:
- http允許傳輸任意型別的資料物件。正在傳輸的型別由content-type加以標記。
- http是無連線:無連線的含義是限制每次連線只處理乙個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連線。採用這種方式可以節省傳輸時間。
- http是**獨立的:這意味著,只要客戶端和伺服器知道如何處理的資料內容,任何型別的資料都可以通過http傳送。客戶端以及伺服器指定使用適合的mime-type內容型別。
- http是無狀態:http協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的資訊,則它必須重傳,這樣可能導致每次連線傳送的資料量增大。另一方面,在伺服器不需要先前資訊時它的應答就較快。
5.http之url:
http使用統一資源識別符號(uniform resource identifiers, uri)來傳輸資料和建立連線。url是一種特殊型別的uri,包含了用於查詢某個資源的足夠的資訊
url,全稱是uniformresourcelocator, 中文叫統一資源定位符,是網際網路上用來標識某一處資源的位址。以下面這個url為例,介紹下普通url的各部分組成:從上面的url可以看出,乙個完整的url包括以下幾部分:
- 協議部分:該url的協議部分為「http:」,這代表網頁使用的是http協議。在internet中可以使用多種協議,如http,ftp等等本例中使用的是http協議。在"http"後面的「//」為分隔符
- 埠部分:跟在網域名稱後面的是埠,網域名稱和埠之間使用「:」作為分隔符。埠不是乙個url必須的部分,如果省略埠部分,將採用預設埠
- 虛擬目錄部分:從網域名稱後的第乙個「/」開始到最後乙個「/」為止,是虛擬目錄部分。虛擬目錄也不是乙個url必須的部分。本例中的虛擬目錄是「/news/」
- 檔名部分:從網域名稱後的最後乙個「/」開始到「?」為止,是檔名部分,如果沒有「?」,則是從網域名稱後的最後乙個「/」開始到「#」為止,是檔案部分,如果沒有「?」和「#」,那麼從網域名稱後的最後乙個「/」開始到結束,都是檔名部分。本例中的檔名是「index.asp」。檔名部分也不是乙個url必須的部分,如果省略該部分,則使用預設的檔名
- 錨部分:從「#」開始到最後,都是錨部分。本例中的錨部分是「name」。錨部分也不是乙個url必須的部分
- 引數部分:從「?」開始到「#」為止之間的部分為引數部分,又稱搜尋部分、查詢部分。本例中的引數部分為「boardid=5&id=24618&page=1」。引數可以允許有多個引數,引數與引數之間用「&」作為分隔符。
6.http之request:
客戶端傳送乙個http請求到伺服器的請求訊息包括以下組成部分:
報文頭:常被叫做請求頭,請求頭中儲存的是該請求的一些主要說明(自我介紹)。伺服器據此獲取客戶端的資訊。
常見的請求頭:
accept:瀏覽器通過這個頭告訴伺服器,它所支援的資料型別
accept-charset: 瀏覽器通過這個頭告訴伺服器,它支援哪種字符集
accept-encoding:瀏覽器通過這個頭告訴伺服器,支援的壓縮格式
accept-language:瀏覽器通過這個頭告訴伺服器,它的語言環境
host:瀏覽器通過這個頭告訴伺服器,想訪問哪台主機
if-modified-since: 瀏覽器通過這個頭告訴伺服器,快取資料的時間
referer:瀏覽器通過這個頭告訴伺服器,客戶機是哪個頁面來的 防盜煉
connection:瀏覽器通過這個頭告訴伺服器,請求完後是斷開鏈結還是何持鏈結
x-requested-with: xmlhttprequest 代表通過ajax方式進行訪問
user-agent:請求載體的身份標識
報文體:常被叫做請求體,請求體中儲存的是將要傳輸/傳送給伺服器的資料資訊。
7.http之response:
伺服器回傳乙個http響應到客戶端的響應訊息包括以下組成部分:
狀態碼:以「清晰明確」的語言告訴客戶端本次請求的處理結果。
http的響應狀態碼由5段組成:
相應頭:響應的詳情展示
常見的相應頭資訊:
相應體:根據客戶端指定的請求資訊,傳送給客戶端的指定資料
二.https協議
1.官方概念:
https (secure hypertext transfer protocol)安全超文字傳輸協議,https是在http上建立ssl加密層,並對傳輸資料進行加密,是http協議的安全版。
2.白話概念:
加密安全版的http協議。
3.https採用的加密技術
3.1 ssl加密技術
ssl採用的加密技術叫做「共享金鑰加密」,也叫作「對稱金鑰加密」,這種加密方法是這樣的,比如客戶端向伺服器傳送一條資訊,首先客戶端會採用已知的演算法對資訊進行加密,比如md5或者base64加密,接收端對加密的資訊進行解密的時候需要用到金鑰,中間會傳遞金鑰,(加密和解密的金鑰是同乙個),金鑰在傳輸中間是被加密的。這種方式看起來安全,但是仍有潛在的危險,一旦被竊聽,或者資訊被挾持,就有可能破解金鑰,而破解其中的資訊。因此「共享金鑰加密」這種方式存在安全隱患:
3.2 非對稱秘鑰加密技術
「非對稱加密」使用的時候有兩把鎖,一把叫做「私有金鑰」,一把是「公開金鑰」,使用非物件加密的加密方式的時候,伺服器首先告訴客戶端按照自己給定的公開金鑰進行加密處理,客戶端按照公開金鑰加密以後,伺服器接受到資訊再通過自己的私有金鑰進行解密,這樣做的好處就是解密的鑰匙根本就不會進行傳輸,因此也就避免了被挾持的風險。就算公開金鑰被竊聽者拿到了,它也很難進行解密,因為解密過程是對離散對數求值,這可不是輕而易舉就能做到的事。以下是非對稱加密的原理圖:
但是非對稱秘鑰加密技術也存在如下缺點:
第乙個是:如何保證接收端向傳送端發出公開秘鑰的時候,傳送端確保收到的是預先要傳送的,而不會被挾持。只要是傳送金鑰,就有可能有被挾持的風險。
第二個是:非對稱加密的方式效率比較低,它處理起來更為複雜,通訊過程中使用就有一定的效率問題而影響通訊速度
4.https的證書機制
在上面我們講了非對稱加密的缺點,其中第乙個就是公鑰很可能存在被挾持的情況,無法保證客戶端收到的公開金鑰就是伺服器發行的公開金鑰。此時就引出了公開金鑰證書機制。數字證書認證機構是客戶端與伺服器都可信賴的第三方機構。證書的具體傳播過程如下:
1:伺服器的開發者攜帶公開金鑰,向數字證書認證機構提出公開金鑰的申請,數字證書認證機構在認清申請者的身份,審核通過以後,會對開發者申請的公開金鑰做數字簽名,然後分配這個已簽名的公開金鑰,並將金鑰放在證書裡面,繫結在一起
2:伺服器將這份數字證書傳送給客戶端,因為客戶端也認可證書機構,客戶端可以通過數字證書中的數字簽名來驗證公鑰的真偽,來確保伺服器傳過來的公開金鑰是真實的。一般情況下,證書的數字簽名是很難被偽造的,這取決於認證機構的公信力。一旦確認資訊無誤之後,客戶端就會通過公鑰對報文進行加密傳送,伺服器接收到以後用自己的私鑰進行解密。
為什麼還有很多**不使用https?
2:如果所有的資訊都採用https加密,這無疑是一種浪費。非敏感資訊就算被竊取了,也無傷大雅。可以在其傳輸敏感資訊的時候,採用https協議進行加密
3:購買證書的開銷也是一筆很大的費用。向認證機構購買證書,證書**會根據不同的認證機構略有不同,而一般的授權需要折合人民幣600多元。
身披SSL外殼的HTTP協議 HTTPS協議
前面的話 http主要的缺點 解決措施 針對http協議上面的三個缺點,分別接受對應的處理措施 1 加密處理,防止內容被竊聽 為防止內容被竊聽,最常用的就是使用加密技術。加密方式分兩種 通訊加密和內容加密。2 查明對方證書,驗證身份,防止偽裝 http協議中的請求與響應都不會驗證通訊雙方的身份,任何...
https 與 http 協議 總結
https協議與http協議最大的不同在於安全性,https協議採用了ssl協議,保證通訊的安全性大致流程 ca 證書 電腦內有內建的ca公鑰,可以去解密服務端證書 雙方各自生成一樣的對稱金鑰,不存在金鑰在網路上傳輸的情況 服務端證書中包括 服務端公鑰,截止日期 頒發機構 簽名演算法 http 有四...
網路協議 HTTP與HTTPS
https的身份認證機制,如何證明我是我?我知道某帶密碼門鎖房間的密碼,如何證明我有這個密碼呢?有以下兩種方式 我把密碼告訴你,你用密碼開啟該房間的鎖。我知道該房間內有某一物品,我用密碼開啟房間的們,然後把物品拿出來給你看。方式 的結果是密碼洩露了,方式 是零知識證明,他指的是證明者能夠在不向驗證者...