HTTP是hypertext transfer protocol(超文本傳輸協議)的簡寫,它是TCP/IP協議的一個應用層協議,用於定義WEB瀏覽器與WEB服務器之間交換數據的過程。html
1.支持客戶端/服務器模式
2.無鏈接:每次鏈接只處理一個請求,服務器處理完請求後,並收到客戶端的應答後,即斷開鏈接。
3.無狀態:無狀態是指協議對於事物處理沒有記憶能力。
對於無狀態這一特色,能夠經過cookie或者session回話進行保存。算法
HTTP 1.1版本新特性:
1.默認持久鏈接節省通訊量,只要客戶端服務端任意一端沒有明確提出斷開TCP鏈接,就一直保持鏈接,能夠發送屢次HTTP請求
2.管線化,客戶端能夠同時發出多個HTTP請求,而不用一個個等待響應
3.斷點續傳原理瀏覽器
1.請求報文:安全
2.響應報文:服務器
1.GET: 用於請求訪問已經被URI(統一資源標識符)識別的資源,能夠經過URL傳參給服務器。
2.POST: 用於傳輸信息給服務器,主要功能與GET方法相似,但通常推薦使用POST方式。
3.PUT: 傳輸文件,報文主體中包含文件內容,保存到對應URI位置。
4.HEAD: 得到報文首部,與GET方法相似,只是不返回報文主體,通常用於驗證URI是否有效。
5.DELETE: 刪除文件,與PUT方法相反,刪除對應URI位置的文件。
6.OPTIONS: 查詢相應URI支持的HTTP方法。
7.TRACE: 回顯服務器收到的請求,主要用於測試或診斷。
8.CONNECT: http1.1中預留給可以將鏈接改成管道方式的代理服務器。
前6個爲經常使用方法,主要記憶GET和POST。cookie
1.GET主要是從服務器上獲取資源;POST主要是向服務器發送數據。
2.get傳輸數據是經過URL請求,以field(字段)= value的形式,置於URL後,並用"?"鏈接,多個請求數據間用"&"鏈接,
如http://127.0.0.1/Test/login.a...,這個過程用戶是可見的;post傳輸數據經過Http的post機制,將字段與對應值封存在請求實體中發送給服務器,這個過程對用戶是不可見的。
3.Get傳輸的數據量小,由於受URL長度限制,但效率較高;Post能夠傳輸大量數據,因此上傳文件時只能用Post方式;
4.GET是不安全的,由於URL是可見的,可能會泄露私密信息,如密碼等;POST較GETt安全性較高;
5.GET方式只能支持ASCII字符,向服務器傳的中文字符可能會亂碼;POST支持標準字符集,能夠正確傳遞中文字符。網絡
200:請求被正常處理
204:請求被受理但沒有資源能夠返回
206:客戶端只是請求資源的一部分,服務器只對請求的部分資源執行GET方法,相應報文中經過Content-Range指定範圍的資源。session
301:永久性重定向
302:臨時重定向
303:與302狀態碼有類似功能,只是它但願客戶端在請求一個URI的時候,能經過GET方法重定向到另外一個URI上
304:發送附帶條件的請求時,條件不知足時返回,與重定向無關
307:臨時重定向,與302相似,只是強制要求使用POST方法負載均衡
401:請求須要認證
403:請求的對應資源禁止被訪問
404:服務器沒法找到對應資源post
500:服務器內部錯誤
503:服務器正忙
1.域名解析
2.發起TCP的3次握手
3.創建TCP鏈接後發起http請求
4.服務器端響應http請求,瀏覽器獲得html代碼
5.瀏覽器解析html代碼,並請求html代碼中的資源
6.瀏覽器對頁面進行渲染呈現給用戶
1.通訊使用明文不加密,內容可能被竊聽
2.不驗證通訊方身份,可能遭到假裝
3.沒法驗證報文完整性,可能被篡改
HTTPS就是HTTP加上加密處理(通常是SSL安全通訊線路)+認證+完整性保護
1.HTTP 的URL 以http:// 開頭,而HTTPS 的URL 以https:// 開頭
2.HTTP 是不安全的,而 HTTPS 是安全的
3.HTTP 標準端口是80 ,而 HTTPS 的標準端口是443
4.在OSI 網絡模型中,HTTP工做於應用層,而HTTPS 的安全傳輸機制工做在傳輸層
5.HTTP 沒法加密,而HTTPS 對傳輸的數據進行加密
6.HTTP無需證書,而HTTPS 須要CA機構wosign的頒發的SSL證書
1.首先HTTP請求服務端生成證書,客戶端對證書的有效期、合法性、域名是否與請求的域名一致、證書的公鑰(RSA加密)等進行校驗;2.客戶端若是校驗經過後,就根據證書的公鑰的有效, 生成隨機數,隨機數使用公鑰進行加密(RSA加密);3.消息體產生的後,對它的摘要進行MD5(或者SHA1)算法加密,此時就獲得了RSA簽名;4.發送給服務端,此時只有服務端(RSA私鑰)能解密;5.解密獲得的隨機數,再用AES加密,做爲密鑰(此時的密鑰只有客戶端和服務端知道)。