「 超文本傳輸協議 」 (英語: 「 H 」 yper 「 T 」 ext 「 T 」 ransfer 「 P 」 rotocol,縮寫: 「 HTTP 」 )是一種用于分布式、協作式和超媒體信息系統的應用層協議。-- 摘自維基百科
?? 超文本指不單單是文本,還可以傳輸圖片、音頻、視頻、文字或者圖片上的超鏈接;
? 將超文本(數據包)從一端發送給另一端的過程,通常將發送數據包的一端稱為 請求方
,接收數據包的一端稱為 應答方
。
? 協議是指網絡中傳遞、管理信息的一些規范。即計算機之間相互通信所需要共同遵守的規則。
HTTP 協議傳輸內容是明文傳輸的,沒有進行任何加密;
HTTP 協議是無狀態協議,即會話過程中不會記憶會話的雙方;
?
HTTPS 就是在 HTTP 協議的基礎上增加了 SSL/TLS 加密協議。
?
SSL/TLS
? 」
因為 HTTP 是明文傳輸內容,容易造成所傳輸的數據被監聽(因為會經過多個物理設備節點)或被篡改( 中間人攻擊
)
SSL/TLS
加密的原理: 」客戶端發起一個請求給服務端;
pubkey
privatekey
CA數字證書
pubkey
);key
),然后使用公鑰( pubkey
)對這個隨機數進行加密后發送給服務端;privatekey
)對收到的隨機數密文進行解密得到 key
;key
進行加密后再傳輸;HTTP 使用的默認端口是 80,HTTPS 使用的是 443;
HTTP 傳輸數據是明文的,不安全。HTTPS 是加密后傳輸的(采用非對稱加密和對稱加密結合的形式);
http://
開頭,HTTPS 以 https://
開頭;get
方法一般用于發起獲取資源請求;post
方法一般用作表單提交,即將數據推送給服務端;get
方法請求的參數是拼接在 URL 后的,這對用戶來說是可見的,容易被竊取也不太安全;post
方法請求的參數放置在請求體 body 中,用戶不可直接查看;get
請求傳遞的參數不能過多,而 post
沒有要求;get
請求會被瀏覽器主動緩存(cache),而 post
需要手動設置;post
在發起請求時,會發送兩個 TCP 數據包,第一個先發送 header,等服務端響應 100 的時候,再發送 data;Cookie
由于存放在本地,容易被人分析本地的值后進行 Cookie
欺騙;
Cookie
Cookie
Cookie
Session
Session
就會消失,而 Cookie
會繼續存在本地直到過期;?
傳輸控制協議(TCP,Transmission Control Protocol)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。-- 摘自維基百科
?
TCP 通過三次握手和四次揮手來控制連接的建立和斷開。
SYN(seq=x)
報文給服務器,然后進入 SYN_SEND
狀態;
SYN
SYN(seq=y)
ACK(ack=x+1)
SYN_RECV
SYN
報文后,再回應一個 ACK(ack=y+1)
,如此就成功建立連接,并開始傳輸數據;TCP 連接的斷開需要發送4個包,可以由連接的任意一方先發起,以下假設客戶端先發起斷開。
FIN_WAIT_1
狀態;
FIN
CLOSE_WAIT
FIN_WAIT_2
LAST_ACK
狀態;TIME_WAIT
狀態,服務器收到這個確認包后,關閉連接并進入 CLOSE
狀態。? 因為最少要經過3次連接才能確認雙方都可正常接收和發送數據,多于3次則無必要。
原文轉自:http://www.cnblogs.com/tester-xt/p/12892957.html