前言:為了明年面試準備的博客系列的第一篇。主要目的是幫助自己學習計算機網絡知識相關!做android開發大約有一年半了,感覺自己興趣也在android上面,因此,深耕了!!!
關於面試:什麼是Http,什麼是Https
這段話隨便看看就好了,除了文字能看懂,其他的咱也看不懂,嗐
Http (HTTP-Hypertext transfer protocol) 是一個簡單的請求-響應協議,它通常運行在TCP之上。它指定了客户端可能發送給服務器什麼樣的消息以及得到什麼樣的響應。請求和響應消息的頭以ASCII碼形式給出;而消息內容則具有一個類似MIME的格式。這個簡單模型是早期Web成功的有功之臣,因為它使開發和部署非常地直截了當。(摘自百度百科)
Https(全稱:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全為目標的 HTTP 通道,在HTTP的基礎上通過傳輸加密和身份認證保證了傳輸過程的安全性 。HTTPS 在HTTP 的基礎下加入SSL 層,HTTPS 的安全基礎是 SSL,因此加密的詳細內容就需要 SSL。 HTTPS 存在不同於 HTTP 的默認端口及一個加密/身份驗證層(在 HTTP與 TCP 之間)。這個系統提供了身份驗證與加密通訊方法。它被廣泛用於萬維網上安全敏感的通訊,例如交易支付等方面 。(摘自百度百科)
粗解Http、Https的區別(學疏才淺,不敢詳解)
Http是超文本傳輸協議,數據明文傳輸,所以會被抓包導致信息泄露,有安全風險問題!Https 則是具有安全性的SSL加密傳輸協議。Http和Https使用的是完全不同的連接方式用的端口也不一樣,前者是80,後者是443。Http的連接很簡單,是無狀態的。HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議。Https協議需要到CA付費申請證書,
HTTP是應用層協議,同其他應用層協議一樣,是為了實現某一類具體應用的協議,並由某一運行在用户空間的應用程序來實現其功能。HTTP是一種協議規範,這種規範記錄在文檔上,為真正通過HTTP協議進行通信的HTTP的實現程序。
HTTP是一種無狀態協議,即服務器不保留與客户交易時的任何狀態。這就大大減輕了服務器記憶負擔,從而保持較快的響應速度。
HTTP是一種面向對象的協議。允許傳送任意類型的數據對象。它通過數據類型和長度來標識所傳送的數據內容和大小,並允許對數據進行壓縮傳送。當用户在一個HTML文檔中定義了一個超文本鏈後,瀏覽器將通過TCP/IP協議與指定的服務器建立連接。
上面概述其實是很廢話的,忽略吧!!!
上圖是Http的工作流程圖,Https會在Tcp首部這一層前加上安全層(SSL/TSL)加解密Http報文
注:TLS是SSL的升級替代版,具體發展歷史可以參考傳輸層安全性協議。
Https解決的問題
Https協議因為採用密文傳輸,要比Http協議安全。
1、信任主機的問題。
採用https的server 必須從CA申請一個用於證明服務器用途類型的證書. 改證書只有用於對應的server 的時候,客户度才信任次主機。所以目前所有的銀行系統網站,關鍵部分應用都是https的。客户通過信任該證書,從而信任了該主機。其實這樣做效率很低,但是銀行更側重安全。這一點對我們沒有任何意義,我們的server採用的證書不管自己issue 還是從公眾的地方issue,客户端都是自己人,所以我們也就肯定信任該server。
2、通訊過程中的數據的泄密和被竄改。
(1)一般意義上的https,就是 server 有一個證書,
- 主要目的是保證server 就是他聲稱的server,這個跟第一點一樣。
- b) 服務端和客户端之間的所有通訊,都是加密的。
-
- i. 具體講,是客户端產生一個對稱的密鑰,通過server 的證書來交換密鑰。一般意義上的握手過程。
-
- ii. 加下來所有的信息往來就都是加密的,第三方即使截獲,也沒有任何意義,因為他沒有密鑰,當然竄改也就沒有什麼意義了。
(2)少許對客户端有要求的情況下,會要求客户端也必須有一個證書。
- 這裏客户端證書,其實就類似表示個人信息的時候,除了用户名/密碼,還有一個CA 認證過的身份,應為個人證書一般來説上別人無法模擬的,所有這樣能夠更深的確認自己的身份。
- 目前少數個人銀行的專業版是這種做法,具體證書可能是拿U盤作為一個備份的載體。
HTTPS 在 HTTP 與 TCP 層之間加入了 SSL/TLS 協議,可以很好的解決了上述的風險:
- 信息加密:交互信息無法被竊取,但你的號會因為「自身忘記」賬號而沒。
- 校驗機制:無法篡改通信內容,篡改了就不能正常顯示,但百度「競價排名」依然可以搜索垃圾廣告。
- 身份證書:證明淘寶是真的淘寶網,但你的錢還是會因為「剁手」而沒。
可見,只要自身不做「惡」,SSL/TLS 協議是能保證通信是安全的。
感謝這些文章的作者!
TCP的3次握手4次揮手,小學生都能看懂!
GitHub-yangkun19921001-計算機網絡基礎知識
(建議收藏)TCP協議靈魂之問,鞏固你的網路底層基礎
【建議收藏】2020年中高級Android大廠面試祕籍,為你保駕護航金三銀四,直通大廠
LRH1993
硬核!30 張圖解 HTTP 常見的面試題
看完這篇 HTTPS,和麪試官扯皮就沒問題了
https解決的問題有哪些 http與https的區別有哪些【詳解】
HTTP圖解