是超文字傳輸協議,是基於tcp協議來傳輸資料,屬於物件導向的協議。
靈活:允許傳輸任意型別的資料。
無連線:每次連線只處理一次請求。
無狀態:對事務處理沒有記憶能力,會導致處理後續資料需要前面的資料,,則需要重傳,可能導致資料量增大。
get提交資料會把資料附在url後面(把資料放在http協議頭中),post請求會把資料放到phttp包體中
get提交有資料大小的限制,post理論不受限制(為受web伺服器規定限制)
post更安全《安全不到哪兒去》
get一般執行請求資料的操作,post執行運算元據的操作。
客服端連線到服務端:乙個http客戶端與伺服器的http埠(預設80)建立乙個tcp套接字連線(?不懂,待研究)
傳送http請求:通過tcp套接字客服端向服務端傳送乙個文字請求報文,報文包括請求行,請求頭部,空行,請求資料組成
伺服器接受請求並返回http響應:伺服器解析請求,定位請求資源,將資源複本寫到tcp套接字,又客戶端讀取,乙個響應由:狀態行,響應頭部,空行,響應資料組成
釋放tcp連線:若connection為close,則伺服器主動關閉tcp連線,客服端被動關閉連線,tcp連線釋放;ruoconnection為keepalive,則連線會保持一會,在保持時間內可以繼續接受請求
客戶端解析html內容:首先解析狀態行,檢視是否請求成功,後解析每乙個響應頭。
防範方式:
https,http通過和ssl/tls的組合使用,加密http的通訊內容。
將http參與通訊的內容本身進行加密《內容可能被篡改》
http協議通訊時,不存在確認通訊方身份的步驟,所有人都可以發起請求,伺服器都會響應請求。 解決方法:ssl證書手段,用於確定通訊方
防止篡改方法:md5/sha-1等校驗,無妨確保正確。
https = http + 加密 + 認證 + 完整性保護,除http 其他操作在ssl/tls協議進行,換言之,https是http通訊介面用ssl/tls協議代替。
ssl 採用一種公開金鑰加密的加密處理方式,加密演算法是公開的,金鑰是保密的。
對稱金鑰加密:採用乙個金鑰加密解密的方式,共享金鑰《金鑰不能保證安全》。 非對稱金鑰加密:一把公開金鑰,一把私有金鑰,公開金鑰加密,私有金鑰解密。
https:採用共享金鑰加密和公開金鑰加密兩者並用的混合加密機制。在交換金鑰時用公開金鑰,之後用共享金鑰加密方式《公開金鑰速度慢》。
公開金鑰的正確性無法驗證,所以需要正經的機構頒發的公開金鑰證書
使用客戶端證書,來驗證伺服器通訊的對方始終是預料之內的客戶端。
自簽名證書,由自認證機構頒發的證書《無法消除偽裝可能性》。
客戶端傳送clienthello報文開始ssl通訊,報文中包含客戶端支援的ssl的指定版本、加密元件、列表《使用的加密演算法、金鑰長度等》。
服務端進行ssl通訊,返回server hello報文應道。報文中包含ssl版本和加密元件《從客戶端加密元件內篩選》。
服務端傳送certificate報文。報文包含公開金鑰證書。
伺服器傳送server hello done報文通知客戶端最初sll握手協商結束。
客戶端傳送client key exchange報文回應。報文中包含加密通訊中使用的隨機密碼串,已被公開金鑰加密。
客戶端繼續傳送change cipher spec報文。報文提示伺服器以後採用pre-master secret金鑰加密。《更換到共享加密》。
客戶端傳送finished報文。
伺服器傳送change cioher spec報文。
伺服器傳送finished報文。
服務端和客戶端finished報文交換之後,ssl連線建立完成。此後進行http請求。
應用層協議通訊。傳送http響應。
最後客戶端斷開鏈結,傳送close_notify報文。之後傳送tcp fin報文關閉tcp的通訊。
HTTP協議學習
1 什麼是http協議?http是超文字傳輸協議,是基於tcp ip協議之上實現的用於客戶端和伺服器之間資料傳輸的一種協議 2 什麼是http協議的無狀態?怎麼解決http協議的無狀態?解決 使用cookie或者session來保持會話 3 http支援的方法有哪些?一共有8種請求方法 get 獲取...
HTTP協議學習
面試過程中又乙個常見的問題,http協議,因為做伺服器開發如果用http協議的話,現在各種開源軟體都封裝好了,python中只需要簡單的繼承定義好的類,重寫get或者post等方法,幾行 就可以搭建起來乙個簡單的http伺服器,導致底層對程式設計師來說都是透明的了。但是面試中追求這個底層的問題還不少...
HTTP 協議學習
摘自 http簡介 http,hyper text transfer protocol 超文字傳輸協議 是用於從全球資訊網 www world wide web 伺服器傳輸超文字到本地瀏覽器的傳送協議。http是乙個基於tcp ip通訊協議來傳遞資料 過程 http協議工作於客戶端 服務端架構為上。...