1. 程式人生 > >Java每日一面(Part1:計算機網路)[19/11/25]

Java每日一面(Part1:計算機網路)[19/11/25]

作者:晨鐘暮鼓c
個人微信公眾號:程式猿的月光寶盒

1. HTTP相關[2]

1.1Get請求和Post請求的區別

從三個層面來回答:

1.1.1 從HTTP報文層面:

​ Get請求將請求資訊放在URL後面,請求資訊和URL之間用問號(?)隔開,多個請求資訊之間用&隔開,形式是鍵值對的形式,且有長度限制.

​ Post請求是放在報文體中,想獲得請求資訊必須請求報文,因此,安全性較Get要高一些,但是可以通過抓包工具獲取資訊,所以不是絕對安全,具體還要靠https,沒有長度限制

1.1.2 從資料庫層面:

​ Get符合冪等性和安全性,Post不符合

冪等性:

​ 對資料庫的一次操作和多次操作獲得的結果是一致的

安全性:

​ 對資料庫的操作沒有改變資料庫中的資料

1.1.3 從其他層面上看

​ Get可以被快取,被儲存,會被儲存在瀏覽器的瀏覽記錄中,以Get方式傳送的URL可以儲存為瀏覽器書籤,而post不行

1.2 Cookie和Session的區別:

​ 兩者產生的原因:HTTP的最大特點:無狀態,每次登陸某網站都要不厭其煩輸入帳號密碼,對此,就產生的Cookie和Session.

1.2.1 Cookie簡介:

​ 是由伺服器傳送給客戶端的特殊資訊,以文字的形式存放在客戶端

​ 客戶端再次請求的時候,會把Cookie回發

​ 伺服器接收到後,會解析Cookie生成 與客戶端相對應的內容

1.2.1.1 Cookie的設定和傳送過程

  1. 客戶端傳送http請求到服務端,

  2. 服務端傳送http響應到客戶端,其中包括了Set-Cookie頭部

  3. 客戶端傳送http請求到服務端,包括了Cookie頭部

  4. 伺服器傳送http相應到客戶端


1.2.2 Session簡介

服務端的機制,在服務端上儲存資訊

解析客戶端請求並操作Session id,按需儲存狀態資訊

1.2.2.1 Session的實現方式
1.使用Cookie實現

伺服器給每個Session分配一個唯一的JSessionID,並通過Cookie傳送給客戶端,當客戶端傳送新的請求的時候,將在Cookie頭中攜帶JSessionID,這樣伺服器就能找到相對應的Session

2.使用URL回寫實現

​ 指伺服器在傳送給瀏覽器的所有頁面中都攜帶JSessionID的引數,這樣客戶端點選任何一個連線都會把JSessionID的值傳給服務端

1.2.3 Cookie和Session的區別

1.Cookie資料存放在瀏覽器,Session存放在伺服器

2.Session相對Cookie安全

3.若考慮伺服器負擔,應當使用Cookie


1.3 HTTP和HTTPS的區別

1.3.1 HTTPS簡介

是一個以安全通行為目的的傳輸協議,是一個安全版的Http

1.3.2 SSL(Security Sockets Layer,安全套接層)

1.為網路通訊提供安全及資料完整性的一種安全協議

2.是作業系統對外提供的API,SSL3.0後改名為TLS

那麼它如何保護安全及資料完整性?

​ 採用身份驗證資料加密保證網路通訊的安全和資料的完整性

1.3.3加密方式

1.對稱加密:

​ 加密和解密都使用同一個祕鑰,效能較高,安全性相對不強

2.非對稱加密:

​ 加密和解密使用的祕鑰都是不同的,分別稱為公鑰和私鑰,效能較低,安全性超強

3.雜湊演算法:

​ 將任意長度的資訊轉換為固定長度的值,演算法不可逆(常見的MD5演算法)

4.數字簽名:

​ 證明某個訊息或者檔案是從某人發出/認同的

1.3.4Https資料傳輸流程

1.瀏覽器將支援的加密演算法資訊傳送給伺服器

2.伺服器選擇一套瀏覽器支援的加密演算法,以證書的形式回發給瀏覽器

3.瀏覽器驗證證書的合法性,並結合證書公鑰加密資訊傳送給伺服器

4.伺服器使用私鑰解密資訊,驗證雜湊,加密響應資訊回發瀏覽器

5.瀏覽器解密響應資訊,並對資訊進行驗證,之後進行加密互動資料

1.3.5 HTTP和HTTPS的區別

1.HTTPS需要到CA申請證書,HTTP不需要

2.HTTPS密文傳輸,HTTP明文傳輸

3.連線方式不同,HTTPS預設使用443埠,http使用80埠

4.HTTPS=HTTP+加密+認證+完整性保護,較HTTP安全

1.3.6HTTPS真的安全嗎

未必

1.瀏覽器預設填充http://,請求需要進行跳轉,有被劫持的風險

2.可以使用HSTS(HTTP Strict Transport Security)優化

以上,計算機網路部分結