軟件測試常見網絡相關面試題

發表于:2020-05-18來源:未知作者:tester_小天點擊數: 標簽:
軟件測試常見網絡相關面試題

什么是HTTP

?

「 超文本傳輸協議 」 (英語: 「 H 」 yper 「 T 」 ext 「 T 」 ransfer 「 P 」 rotocol,縮寫: 「 HTTP 」 )是一種用于分布式、協作式和超媒體信息系統的應用層協議。-- 摘自維基百科

?

「 超文本: 」

? 超文本指不單單是文本,還可以傳輸圖片、音頻、視頻、文字或者圖片上的超鏈接;

「 傳輸: 」

? 將超文本(數據包)從一端發送給另一端的過程,通常將發送數據包的一端稱為 請求方 ,接收數據包的一端稱為 應答方 。

「 協議: 」

? 協議是指網絡中傳遞、管理信息的一些規范。即計算機之間相互通信所需要共同遵守的規則。

HTTP 協議傳輸內容是明文傳輸的,沒有進行任何加密;

HTTP 協議是無狀態協議,即會話過程中不會記憶會話的雙方;

HTTP 與 HTTPS 的區別

?

HTTPS 就是在 HTTP 協議的基礎上增加了 SSL/TLS 加密協議。

?

「 為什么需要加 SSL/TLS ? 」

因為 HTTP 是明文傳輸內容,容易造成所傳輸的數據被監聽(因為會經過多個物理設備節點)或被篡改( 中間人攻擊 )

「 SSL/TLS 加密的原理: 」

HTTPS 解密流程圖(來源網絡)
  1. 客戶端發起一個請求給服務端;

  2. pubkey
    privatekey
    CA數字證書
    
  3. 客戶端校驗該證書是否合法(通過瀏覽器內置的廠商根證書等手段校驗),然后從證書中提取出公鑰( pubkey );
  4. 客戶端生成一個隨機數( key ),然后使用公鑰( pubkey )對這個隨機數進行加密后發送給服務端;
  5. 服務端利用私鑰( privatekey )對收到的隨機數密文進行解密得到 key ;
  6. 后續客戶端和服務端傳輸數據使用該 key 進行加密后再傳輸;

「 HTTP 與 HTTPS 的區別: 」

  1. HTTP 使用的默認端口是 80,HTTPS 使用的是 443;

  2. HTTP 傳輸數據是明文的,不安全。HTTPS 是加密后傳輸的(采用非對稱加密和對稱加密結合的形式);

  3. HTTP 的地址以 http:// 開頭,HTTPS 以 https:// 開頭;

GET 與 POST 的區別

  1. get 方法一般用于發起獲取資源請求;
  2. post 方法一般用作表單提交,即將數據推送給服務端;
  3. get 方法請求的參數是拼接在 URL 后的,這對用戶來說是可見的,容易被竊取也不太安全;
  4. post 方法請求的參數放置在請求體 body 中,用戶不可直接查看;
  5. URL 一般有長度限制,所以 get 請求傳遞的參數不能過多,而 post 沒有要求;
  6. get 請求會被瀏覽器主動緩存(cache),而 post 需要手動設置;
  7. post 在發起請求時,會發送兩個 TCP 數據包,第一個先發送 header,等服務端響應 100 的時候,再發送 data;

Cookie 與 Session 的區別

  1. Cookie 數據存放在客戶端, Session 數據存放在服務器上;
  2. Cookie 由于存放在本地,容易被人分析本地的值后進行 Cookie 欺騙;
  3. Cookie
    Cookie
    Cookie
    Session
    
  4. 兩者的生命周期不一樣,瀏覽器關閉后 Session 就會消失,而 Cookie 會繼續存在本地直到過期;

?

傳輸控制協議(TCP,Transmission Control Protocol)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。-- 摘自維基百科

?

TCP 通過三次握手和四次揮手來控制連接的建立和斷開。

「 三次握手: 」

三次握手示意圖(來源網絡)
  1. 客戶端發送一個 SYN(seq=x) 報文給服務器,然后進入 SYN_SEND 狀態;
  2. SYN
    SYN(seq=y)
    ACK(ack=x+1)
    SYN_RECV
    
  3. 客戶端收到服務器的 SYN 報文后,再回應一個 ACK(ack=y+1) ,如此就成功建立連接,并開始傳輸數據;

「 四次揮手: 」

四次揮手示意圖(來源網絡)

TCP 連接的斷開需要發送4個包,可以由連接的任意一方先發起,以下假設客戶端先發起斷開。

  1. 客戶端發送一個 FIN 包給到服務器,表明自己的數據已經發送完畢,想要斷開連接了,客戶端進入 FIN_WAIT_1 狀態;
  2. FIN
    CLOSE_WAIT
    FIN_WAIT_2
    
  3. 服務器準備好了關閉連接,想客戶端發送結束連接請求,服務器進入 LAST_ACK 狀態;
  4. 客戶端收到服務器的關閉請求,發送一個確認包給服務器并進入 TIME_WAIT 狀態,服務器收到這個確認包后,關閉連接并進入 CLOSE 狀態。

「 TCP 的連接為什么是3次握手,為什么不是更多或更少? 」

? 因為最少要經過3次連接才能確認雙方都可正常接收和發送數據,多于3次則無必要。

原文轉自:http://www.cnblogs.com/tester-xt/p/12892957.html

...
国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97