HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用於從萬維網(WWW:World Wide Web )服務器傳輸超文本到本地瀏覽器的傳送協議。
以上是官方對於http協議的一個解釋,可能相對晦澀難懂一些,實際上http協議就是:服務器server和客戶端client之間進行數據交換的一種形式
1.http協議的工作原理
HTTP協議工作於客戶端-服務端架構為上。瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB服務器發送所有請求。Web服務器根據接收到的請求后,向客戶端發送響應信息。
2.http的四點注意事項
-
HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。
-
HTTP是無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答后,即斷開連接。采用這種方式可以節省傳輸時間。*
-
HTTP是媒體獨立的:這意味着,只要客戶端和服務器知道如何處理的數據內容,任何類型的數據都可以通過HTTP發送。客戶端以及服務器指定使用適合的MIME-type內容類型。
-
HTTP是無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味着如果后續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快
3.http中的url
-
協議部分:該URL的協議部分為“http:”,這代表網頁使用的是HTTP協議。在Internet中可以使用多種協議,如HTTP,FTP等等本例中使用的是HTTP協議。在"HTTP"后面的“//”為分隔符
-
域名部分:該URL的域名部分為“www.aspxfans.com”。一個URL中,也可以使用IP地址作為域名使用
-
端口部分:跟在域名后面的是端口,域名和端口之間使用“:”作為分隔符。端口不是一個URL必須的部分,如果省略端口部分,將采用默認端口
-
虛擬目錄部分:從域名后的第一個“/”開始到最后一個“/”為止,是虛擬目錄部分。虛擬目錄也不是一個URL必須的部分。本例中的虛擬目錄是“/news/”
-
文件名部分:從域名后的最后一個“/”開始到“?”為止,是文件名部分,如果沒有“?”,則是從域名后的最后一個“/”開始到“#”為止,是文件部分,如果沒有“?”和“#”,那么從域名后的最后一個“/”開始到結束,都是文件名部分。本例中的文件名是“index.asp”。文件名部分也不是一個URL必須的部分,如果省略該部分,則使用默認的文件名
-
錨部分:從“#”開始到最后,都是錨部分。本例中的錨部分是“name”。錨部分也不是一個URL必須的部分
-
參數部分:從“?”開始到“#”為止之間的部分為參數部分,又稱搜索部分、查詢部分。本例中的參數部分為“boardID=5&ID=24618&page=1”。參數可以允許有多個參數,參數與參數之間用“&”作為分隔符。
4.http中的Request
常見的請求頭:
-
accept:瀏覽器通過這個頭告訴服務器,它所支持的數據類型
-
Accept-Charset: 瀏覽器通過這個頭告訴服務器,它支持哪種字符集
-
Accept-Encoding:瀏覽器通過這個頭告訴服務器,支持的壓縮格式
-
Accept-Language:瀏覽器通過這個頭告訴服務器,它的語言環境
-
Host:瀏覽器通過這個頭告訴服務器,想訪問哪台主機
-
If-Modified-Since: 瀏覽器通過這個頭告訴服務器,緩存數據的時間
-
Referer:瀏覽器通過這個頭告訴服務器,客戶機是哪個頁面來的 防盜鏈
-
Connection:瀏覽器通過這個頭告訴服務器,請求完后是斷開鏈接還是何持鏈接
-
X-Requested-With: XMLHttpRequest 代表通過ajax方式進行訪問
-
User-Agent:請求載體的身份標識
5.http中的Response
常見的響應頭信息:
-
Location: 服務器通過這個頭,來告訴瀏覽器跳到哪里
-
Server:服務器通過這個頭,告訴瀏覽器服務器的型號
-
Content-Encoding:服務器通過這個頭,告訴瀏覽器,數據的壓縮格
-
Content-Length: 服務器通過這個頭,告訴瀏覽器回送數據的長度
-
Content-Language: 服務器通過這個頭,告訴瀏覽器語言環境
-
Content-Type:服務器通過這個頭,告訴瀏覽器回送數據的類型
-
Refresh:服務器通過這個頭,告訴瀏覽器定時刷新
-
Content-Disposition: 服務器通過這個頭,告訴瀏覽器以下載方式打數據
-
Transfer-Encoding:服務器通過這個頭,告訴瀏覽器數據是以分塊方式回送的
-
Expires: -1 控制瀏覽器不要緩存
-
Cache-Control: no-cache
-
Pragma: no-cache
https協議
HTTPS (Secure Hypertext Transfer Protocol)安全超文本傳輸協議,HTTPS是在HTTP上建立SSL加密層,並對傳輸數據進行加密,是HTTP協議的安全版。
說白了就是加密版的HTTP協議。
1.證書
證書是被應用在https的加密操作中的,改證書是由證書認證機構頒布的,里面包含了公鑰
2.https采用的加密技術:
-
對稱密鑰加密:
-
流程:客戶端向服務器發送一條信息,首先客戶端會采用已知的算法對信息進行加密,比如MD5或者Base64加密,接收端對加密的信息進行解密的時候需要用到密鑰,中間會傳遞密鑰,(加密和解密的密鑰是同一個),密鑰在傳輸中間是被加密的。
-
缺點:這種方式看起來安全,但是仍有潛在的危險,一旦被竊聽,或者信息被挾持,就有可能破解密鑰,而破解其中的信息。因此“共享密鑰加密”這種方式存在安全隱患
-
-
非對稱密鑰加密
-
流程:服務器告訴客戶端按照自己給定的公開密鑰進行信息的加密處理,這時服務器接收到加密消息后,再按照自己的密鑰進行解密。
-
缺點:一是有可能是有人模仿服務器向客戶端進行發送公共密鑰,二是非對稱加密的方式效率比較低
-
-
證書密鑰加密方式
-
過程:服務器攜帶公開密鑰向數字證書認證機構提出公開密鑰的申請,數字證書認證機構在認清申請者的身份之后,會對服務器申請的公開密鑰做數字簽名,然后把這個公開的密鑰放入到證書之中,綁定在一起。
-
服務器將這個證書發送給客戶端,因為客戶端也認可證書機構,客戶端通過證書中的數字簽名來進行驗證公鑰的真偽,來確保服務器傳過來的公鑰是真實的
-
以上是對http協議以及https協議的相關知識。