Android 面試必備 - http 與 https 協議

版權聲明:本文爲博主原創文章,遵循[ CC 4.0
by-sa ](http://creativecommons.org/li...,轉載請附上原文出處連接和本聲明。css

本文連接:https://blog.csdn.net/gdutxia...java

前言

在講解 http 與 https 之間的區別以前,我麼先來看一下一個常見的面試問題。面試

一次完整的 http 協議請求過程是怎樣的算法

image

該圖片出自 博客瀏覽器

Http協議的主要特色

  1. 支持客戶/服務器模式
  2. 簡單快速:客戶向服務端請求服務時,只需傳送請求方式和路徑。
  3. 靈活:容許傳輸任意類型的數據對象。由Content-Type加以標記。
  4. 無鏈接:每次響應一個請求,響應完成之後就斷開鏈接。
  5. 無狀態:服務器不保存瀏覽器的任何信息。每次提交的請求之間沒有關聯。

怎麼理解HTTP協議是無狀態的無鏈接的的協議?安全

非持續性和持續性

HTTP1.0默認非持續性;HTTP1.1默認持續性服務器

持續性:瀏覽器和服務器創建TCP鏈接後,能夠請求多個對象網絡

非持續性:瀏覽器和服務器創建TCP鏈接後,只能請求一個對象併發

非流水線和流水線

相似於組成裏面的流水操做jsp

  • 流水線:沒必要等到收到服務器的迴應就發送下一個報文。
  • 非流水線:發出一個報文,等到響應,再發下一個報文。相似TCP。

http 各個版本之間的區別

1.0 與 1.1

  • http1.0一次只能處理一個請求,不能同時收發數據
  • http1.1能夠處理多個請求,能同時收發數據
  • http1.1增長可更多字段,如cache-control,keep-alive.

2.0

  • http 2.0採用二進制的格式傳送數據,再也不使用文本格式傳送數據
  • http2.0對消息頭採用hpack壓縮算法,http1.x的版本消息頭帶有大量的冗餘消息
  • http2.0 採用多路複用,即用一個tcp鏈接處理全部的請求,真正意義上作到了併發請求,流還支持優先級和流量控制(HTTP/1.x 雖然經過 pipeline也能併發請求,可是多個請求之間的響應會被阻塞的,因此 pipeline 至今也沒有被普及應用,而 HTTP/2 作到了真正的併發請求。同時,流還支持優先級和流量控制。)
  • http2.0支持server push,服務端能夠主動把css,jsp文件主動推送到客戶端,不須要客戶端解析HTML,再發送請求,當客戶端須要的時候,它已經在客戶端了。

POST和GET的區別

Post通常用於更新或者添加資源信息 Get通常用於查詢操做,並且應該是安全和冪等的
Post更加安全 Get會把請求的信息放到URL的後面
Post傳輸量通常無大小限制 Get不能大於2KB
Post執行效率低 Get執行效率略高

爲何POST效率低,Get效率高

    • Get將參數拼成URL,放到header消息頭裏傳遞
    • Post直接以鍵值對的形式放到消息體中傳遞。
    • 但二者的效率差距很小很小
      • *

    Https

    HTTPS至關於HTTP的安全版本了,是在http的基礎之上加上ssl(Secure Socket Layer)

    • 端口號是443
    • 是由SSL+Http協議構建的可進行加密傳輸、身份認證的網絡協議。

    https在客戶端(瀏覽器)與服務端(網站)傳輸加密的數據大概經歷一下流程

    1. 客戶端將本身的has算法和加密算法發給服務器
    2. 服務器接收到客戶端發來的加密算法和has算法,取出本身的加密算法與has算法,並將本身的身份信息以證書的形式發送給客戶端,該證書信息包括公鑰,網站地址,預計頒發機構等
    3. 客戶端收到服務器發來的證書(即公鑰),開始驗證證書的合法性,若是證書信任,則生成一串隨機的字符串數字做爲私鑰,並將私鑰(密文)用證書(服務器的公鑰)進行加密,發送給服務器
    4. 服務器收到客戶端發來的數據以後,經過服務器本身的私鑰進行解密客戶端發來的數據(客戶端的私鑰),(這樣雙方都擁有私鑰)再進行hash檢驗,若是結果一致,則將客戶端發來的字符串(第3個步驟發送過來的字符串)經過加密發送給客戶端
    5. 客戶端解密,若是一致的話,就使用以前客戶端隨機生成的字符串進行對稱加密算法進行加密

    image

      • *

    推薦閱讀

    聊一聊 Android中巧妙的位操做

    二分查找的相關算法題

    快速排序的相關算法題(java)

    Android 面試必備 -計算機網絡基本知識(TCP,UDP,Http,https)

    360面試總結(Android)

    Android技術人(stormjun94)

    掃一掃,歡迎關注個人公衆號 stormjun94。若是你有好的文章,也歡迎你的投稿。

    相關文章
    相關標籤/搜索