![](http://static.javashuo.com/static/loading.gif)
一、轉發與重定向的區別
- 轉發是服務器請求資源,服務器直接訪問目標地址url,把響應內容返回給瀏覽器。 重定向根據服務器返回的狀態碼從新請求地址。
- 轉發是服務器行爲,重定向是客戶端行爲。
- 轉發顯示的url不變而重定向顯示新的url。
- 轉發頁面和轉發到的頁面共享request的信息,重定向不共享數據。
- 轉發通常用於用戶登陸,根據角色轉發到響應的模塊, 重定向通常用於用戶註銷,跳轉到其餘的地方。
二、TCP三次握手
創建鏈接時進行TCP三次握手:java
- 客戶端發送syn給服務端 鏈接請求。
- 服務端發送syn ack 給客戶端 授予鏈接。
- 客戶端發送ack給服務端 確認鏈接。
第一次客戶端確認本身的發送正常,服務端確認本身的接收正常。 第二次服務端確認本身的發送,接收正常,客戶端的發送正常。客戶端確認本身的發送、接受正常,服務端的發送、接受正常。 第三次客戶端服務端都確認雙方的發送接收正常。web
三、TCP四次揮手
- 客戶端發送fin給服務端,關閉客戶端到服務端的數據傳送。
- 服務端發送ack 。
- 服務端發送fin,關閉服務端和客戶端的鏈接。
- 客戶端發送ack,鏈接關閉。
四、爲何是三次握手四次揮手
創建鏈接的時候,syn和ack能夠同時發送,可是斷開鏈接的時候fin和ack不能同時發送,由於server還未確認是否全部的報文都發送完了,全部的報文發送完了才能發送fin。因此創建鏈接須要三次握手,斷開鏈接須要四次揮手。算法
五、TCP與UDP的區別
- TCP協議是有鏈接的,必須經過三次握手創建鏈接,UDP是無鏈接的。
- TCP保證數據按序到達,UDP不能保證。
- TCP是面向字節流的服務,UDP是面向報文的服務。
六、什麼是Servlet
是http請求和程序之間的中間層。能夠讀取客戶端請求數據,處理數據並生成結果。瀏覽器
七、攔截器與過濾器的區別
- 攔截器基於java反射實現,過濾器基於函數回調。
- 攔截器不依賴Servlet容器,過濾器依賴Servlet。
實現一個攔截器繼承HandlerIntecepterAdapter。 實現過濾器繼承Filter,在web.xml中進行配置。緩存
八、HTTPS的過程
- 客戶端發起https請求,創建鏈接,發送所支持的ssl/tls的版本,支持的加密套件等。
- 服務器收到請求後,會發送服務端的證書,選擇的ssl/tls的版本,使用的加密套件。
- 客戶端收到證書以後對證書進行驗證,驗證證書是否被篡改,驗證證書的有效期。獲取服務器的公鑰。
- 使用服務器的公鑰對一個隨機數進行加密,傳送給服務器。
- 而後使用這個隨機數進行對稱加密進行傳輸數據。
九、加密相關
- 對稱加密 加解密使用同一套祕鑰,經常使用的加密算法: AES、 DES。
- 非對稱加密 指的是加解密使用不一樣的密匙,一個公鑰一個私鑰。公鑰加密的信息只有私鑰能解開,私鑰加密的信息只有公鑰能解開。
- 摘要 一段信息,通過摘要算法獲得一串hash值。經常使用的摘要算法:MD五、SHA一、SHA256。
- 數字簽名 先用摘要算法,獲取內容的摘要,以後使用本身的私鑰對摘要進行加密生成簽名。
- 數字證書 證書有簽發者、證書用途、公鑰、加密算法、hash算法、到期時間等。數字證書會作一個數字簽名防止證書被篡改。會用CA的私鑰進行加密。CA的公鑰是公開的,瀏覽器會緩存。
![tencent.jpg](http://static.javashuo.com/static/loading.gif)