面試【JAVA基礎】Web與網絡


一、轉發與重定向的區別

  1. 轉發是服務器請求資源,服務器直接訪問目標地址url,把響應內容返回給瀏覽器。 重定向根據服務器返回的狀態碼從新請求地址。
  2. 轉發是服務器行爲,重定向是客戶端行爲。
  3. 轉發顯示的url不變而重定向顯示新的url。
  4. 轉發頁面和轉發到的頁面共享request的信息,重定向不共享數據。
  5. 轉發通常用於用戶登陸,根據角色轉發到響應的模塊, 重定向通常用於用戶註銷,跳轉到其餘的地方。

二、TCP三次握手

創建鏈接時進行TCP三次握手:java

  • 客戶端發送syn給服務端 鏈接請求。
  • 服務端發送syn ack 給客戶端 授予鏈接。
  • 客戶端發送ack給服務端 確認鏈接。

第一次客戶端確認本身的發送正常,服務端確認本身的接收正常。 第二次服務端確認本身的發送,接收正常,客戶端的發送正常。客戶端確認本身的發送、接受正常,服務端的發送、接受正常。 第三次客戶端服務端都確認雙方的發送接收正常。web

三、TCP四次揮手

  1. 客戶端發送fin給服務端,關閉客戶端到服務端的數據傳送。
  2. 服務端發送ack 。
  3. 服務端發送fin,關閉服務端和客戶端的鏈接。
  4. 客戶端發送ack,鏈接關閉。

四、爲何是三次握手四次揮手

創建鏈接的時候,syn和ack能夠同時發送,可是斷開鏈接的時候fin和ack不能同時發送,由於server還未確認是否全部的報文都發送完了,全部的報文發送完了才能發送fin。因此創建鏈接須要三次握手,斷開鏈接須要四次揮手。算法

五、TCP與UDP的區別

  1. TCP協議是有鏈接的,必須經過三次握手創建鏈接,UDP是無鏈接的。
  2. TCP保證數據按序到達,UDP不能保證。
  3. TCP是面向字節流的服務,UDP是面向報文的服務。

六、什麼是Servlet

是http請求和程序之間的中間層。能夠讀取客戶端請求數據,處理數據並生成結果。瀏覽器

七、攔截器與過濾器的區別

  1. 攔截器基於java反射實現,過濾器基於函數回調。
  2. 攔截器不依賴Servlet容器,過濾器依賴Servlet。

實現一個攔截器繼承HandlerIntecepterAdapter。 實現過濾器繼承Filter,在web.xml中進行配置。緩存

八、HTTPS的過程

  1. 客戶端發起https請求,創建鏈接,發送所支持的ssl/tls的版本,支持的加密套件等。
  2. 服務器收到請求後,會發送服務端的證書,選擇的ssl/tls的版本,使用的加密套件。
  3. 客戶端收到證書以後對證書進行驗證,驗證證書是否被篡改,驗證證書的有效期。獲取服務器的公鑰。
  4. 使用服務器的公鑰對一個隨機數進行加密,傳送給服務器。
  5. 而後使用這個隨機數進行對稱加密進行傳輸數據。

九、加密相關

  • 對稱加密 加解密使用同一套祕鑰,經常使用的加密算法: AES、 DES。
  • 非對稱加密 指的是加解密使用不一樣的密匙,一個公鑰一個私鑰。公鑰加密的信息只有私鑰能解開,私鑰加密的信息只有公鑰能解開。
  • 摘要 一段信息,通過摘要算法獲得一串hash值。經常使用的摘要算法:MD五、SHA一、SHA256。
  • 數字簽名 先用摘要算法,獲取內容的摘要,以後使用本身的私鑰對摘要進行加密生成簽名。
  • 數字證書 證書有簽發者、證書用途、公鑰、加密算法、hash算法、到期時間等。數字證書會作一個數字簽名防止證書被篡改。會用CA的私鑰進行加密。CA的公鑰是公開的,瀏覽器會緩存。

tencent.jpg

相關文章
相關標籤/搜索