從計算機說起
計算機最開始其實是用于高速計算的機器嘉抓,慢慢的后來才出現(xiàn)了多媒體功能。
互聯(lián)網(wǎng)
一臺計算機能做的事情其實很有限刘离,互聯(lián)網(wǎng)是將不同功能的計算機連接起來實現(xiàn)資源共享的系統(tǒng)睹簇。
服務器&終端:服務器、手機寥闪、PC其實都屬于計算機的一種太惠,而一般來說,個人PC和手機的處理能力遠遠不如一個服務器集群的疲憋,所以說服務器和這些終端存在大量數(shù)據(jù)交互凿渊,這個數(shù)據(jù)交互就是依靠互聯(lián)網(wǎng)。
TCP
互聯(lián)網(wǎng)好啊缚柳,互聯(lián)網(wǎng)能把所有的“計算機”都連接在一起埃脏,那么,在如此大量的信息交互中秋忙,傳輸數(shù)據(jù)的目標性彩掐、完整性和安全性怎么保證呢?
Transmission Control Protocol
灰追,簡稱TCP堵幽,中文譯名:傳輸控制協(xié)議。TCP是一種面向連接的弹澎、可靠的朴下、基于字節(jié)流的傳輸層通信協(xié)議。
TCP傳輸是由專門的TCP傳輸實體負責的苦蒿,這個實體殴胧,可能是一個類,也可能是一個工具庫佩迟,實體主要管理TCP和IP層之間的接口团滥。
TCP/IP:
TCP將需要傳輸?shù)臄?shù)據(jù)分段,然后通過IP層(發(fā)送方)發(fā)送和(接收方)接收报强,IP層是不會在乎數(shù)據(jù)傳輸?shù)捻樞蚝屯暾缘木逆ⅲ訲CP還需要保證接收數(shù)據(jù)的完整性和順序。
那么躺涝,TCP是如何工作的呢厨钻?
建立連接——三次握手
- 客戶端發(fā)送SYN(SEQ=x)報文給服務器端扼雏,進入SYN_SEND狀態(tài)。
- 服務器端收到SYN報文夯膀,回應一個SYN (SEQ=y)ACK(ACK=x+1)報文诗充,進入SYN_RECV狀態(tài)。
- 客戶端收到服務器端的SYN報文诱建,回應一個ACK(ACK=y+1)報文蝴蜓,進入Established狀態(tài)。
三次握手完成俺猿,TCP客戶端和服務器端成功地建立連接茎匠,可以開始傳輸數(shù)據(jù)了。
斷開連接——四次揮手
- 某個應用進程首先調(diào)用close押袍,稱該端執(zhí)行“主動關閉”(active close)诵冒。該端的TCP于是發(fā)送一個FIN分節(jié),表示數(shù)據(jù)發(fā)送完畢谊惭。
- 接收到這個FIN的對端執(zhí)行 “被動關閉”(passive close)汽馋,這個FIN由TCP確認。
注意:FIN的接收也作為一個文件結束符(end-of-file)傳遞給接收端應用進程圈盔,放在已排隊等候該應用進程接收的任何其他數(shù)據(jù)之后豹芯,因為,F(xiàn)IN的接收意味著接收端應用進程在相應連接上再無額外數(shù)據(jù)可接收驱敲。 - 一段時間后铁蹈,接收到這個文件結束符的應用進程將調(diào)用close關閉它的套接字。這導致它的TCP也發(fā)送一個FIN众眨。
- 接收這個最終FIN的原發(fā)送端TCP(即執(zhí)行主動關閉的那一端)確認這個FIN握牧。
HTTP
HTTP,是Hyper Text Transfer Protocol
的縮寫围辙,翻譯過來是超文本傳輸協(xié)議我碟,它建立在TCP協(xié)議之上,最初出現(xiàn)的時候就是解決網(wǎng)頁內(nèi)容傳輸問題的姚建,HTTP在連接成功的TCP通道中傳輸數(shù)據(jù)包。
特點
- 一次性:每次HTTP請求是即時連接并且在單次請求吱殉、響應完成之后就關閉的
- 單向性:只能是請求方主動向接收方發(fā)出請求并連接的(這個也是TCP的特點)
請求方式
HTTP規(guī)定了一些請求方式掸冤,使用不同請求做不同的事。
- GET友雳,請求指定的頁面信息稿湿,并返回實體主體。
- HEAD押赊,類似于 GET 請求饺藤,只不過返回的響應中沒有具體的內(nèi)容,用于獲取報頭
- POST,向指定資源提交數(shù)據(jù)進行處理請求(例如提交表單或者上傳文件)涕俗。數(shù)據(jù)被包含在請求體中罗丰。POST 請求可能會導致新的資源的建立和/或已有資源的修改。
- PUT再姑,從客戶端向服務器傳送的數(shù)據(jù)取代指定的文檔的內(nèi)容萌抵。
- DELETE,請求服務器刪除指定的頁面昙沦。
6.CONNECT泌参,HTTP/1.1 協(xié)議中預留給能夠?qū)⑦B接改為管道方式的代理服務器乖阵。 - OPTIONS,允許客戶端查看服務器的性能讨永。
- TRACE,回顯服務器收到的請求遇革,主要用于測試或診斷住闯。
- PATCH,是對 PUT 方法的補充澳淑,用來對已知資源進行局部更新 比原。
請求狀態(tài)
HTTP規(guī)定了一系列code,表示每次HTTP請求的響應狀態(tài)杠巡。
1xx 信息量窘,服務器收到請求,需要請求者繼續(xù)執(zhí)行操作
2xx 成功氢拥,操作被成功接收并處理
3xx 重定向蚌铜,需要進一步的操作以完成請求
4xx 客戶端錯誤,請求包含語法錯誤或無法完成請求
5xx 服務器錯誤嫩海,服務器在處理請求的過程中發(fā)生了錯誤
HTTPS
終于進入重點了...
HTTP請求基于TCP冬殃,內(nèi)容都是明文傳輸,信息沒有加密叁怪,如果使用HTTP傳輸敏感數(shù)據(jù)审葬,那這些敏感數(shù)據(jù)很容易被截獲盜取。所以Netscape 公司制定了HTTPS協(xié)議奕谭,將內(nèi)容進行加密傳輸涣觉。
HTTPS(Hypertext Transfer Protocol Secure) = HTTP+SSL/TLS,在HTTP和TCP之間加入一層安全協(xié)議層血柳,就是HTTPS
SSL/TLS
SSL:Secure Sockets Layer官册,安全套接字層
TLS:Transport Layer Security,傳輸層安全
HTTP 原理
① 客戶端的瀏覽器首先要通過網(wǎng)絡與服務器建立連接难捌,該連接是通過TCP 來完成的膝宁,一般 TCP 連接的端口號是80鸦难。 建立連接后,客戶機發(fā)送一個請求給服務器员淫,請求方式的格式為:統(tǒng)一資源標識符(URL)合蔽、協(xié)議版本號,后邊是 MIME 信息包括請求修飾符满粗、客戶機信息和許可內(nèi)容辈末。
② 服務器接到請求后,給予相應的響應信息映皆,其格式為一個狀態(tài)行挤聘,包括信息的協(xié)議版本號、一個成功或錯誤的代碼捅彻,后邊是 MIME 信息包括服務器信息组去、實體信息和可能的內(nèi)容。
HTTPS 原理
① 客戶端將它所支持的算法列表和一個用作產(chǎn)生密鑰的隨機數(shù)發(fā)送給服務器步淹;
② 服務器從算法列表中選擇一種加密算法从隆,并將它和一份包含服務器公用密鑰的證書發(fā)送給客戶端;該證書還包含了用于認證目的的服務器標識缭裆,服務器同時還提供了一個用作產(chǎn)生密鑰的隨機數(shù)键闺;
③ 客戶端對服務器的證書進行驗證,并抽取服務器的公用密鑰澈驼;然后辛燥,再產(chǎn)生一個稱作 pre_master_secret 的隨機密碼串,并使用服務器的公用密鑰對其進行加密(參考非對稱加 / 解密)缝其,并將加密后的信息發(fā)送給服務器挎塌;
④ 客戶端與服務器端根據(jù) pre_master_secret 以及客戶端與服務器的隨機數(shù)值獨立計算出加密和 MAC密鑰;
⑤ 客戶端將所有握手消息的 MAC 值發(fā)送給服務器内边;
⑥ 服務器將所有握手消息的 MAC 值發(fā)送給客戶端榴都。
優(yōu)點
使用 HTTPS 協(xié)議可認證用戶和服務器,確保數(shù)據(jù)發(fā)送到正確的客戶機和服務器漠其;
HTTPS 協(xié)議是由 SSL+HTTP構建的可進行加密傳輸嘴高、身份認證的網(wǎng)絡協(xié)議,要比 HTTP安全辉懒,可防止數(shù)據(jù)在傳輸過程中被竊取阳惹、改變,確保數(shù)據(jù)的完整性眶俩。
HTTPS 是現(xiàn)行架構下最安全的解決方案,雖然不是絕對安全快鱼,但它大幅增加了中間人攻擊的成本颠印。
缺點
相同網(wǎng)絡環(huán)境下纲岭,HTTPS 協(xié)議會使頁面的加載時間延長近 50%,增加 10%到 20%的耗電线罕。此外止潮,HTTPS 協(xié)議還會影響緩存,增加數(shù)據(jù)開銷和功耗钞楼。
HTTPS 協(xié)議的安全是有范圍的喇闸,在黑客攻擊、拒絕服務攻擊和服務器劫持等方面幾乎起不到什么作用询件。
最關鍵的是燃乍,SSL 證書的信用鏈體系并不安全。特別是在某些國家可以控制 CA根證書的情況下宛琅,中間人攻擊一樣可行刻蟹。
成本增加。部署 HTTPS 后嘿辟,因為 HTTPS 協(xié)議的工作要增加額外的計算資源消耗舆瘪,例如 SSL 協(xié)議加密算法和 SSL 交互次數(shù)將占用一定的計算資源和服務器成本。在大規(guī)模用戶訪問應用的場景下红伦,服務器需要頻繁地做加密和解密操作英古,幾乎每一個字節(jié)都需要做加解密,這就產(chǎn)生了服務器成本昙读。隨著云計算技術的發(fā)展召调,數(shù)據(jù)中心部署的服務器使用成本在規(guī)模增加后逐步下降,相對于用戶訪問的安全提升箕戳,其投入成本已經(jīng)下降到可接受程度某残。
注:以上內(nèi)容基本來自百度百科,只是做了綜述