<progress id="jnld5"><th id="jnld5"></th></progress>

        <pre id="jnld5"></pre>

        <strike id="jnld5"><noframes id="jnld5"><pre id="jnld5"></pre>
        <strike id="jnld5"></strike>

        <strike id="jnld5"><span id="jnld5"><pre id="jnld5"></pre></span></strike>

        <font id="jnld5"><track id="jnld5"></track></font>

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

        發表于: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

        欧美日韩亚洲中文字幕|欧美变态另类z0z0禽交|久久国产精品-国产精|久久激情四射婷婷五月天

        <progress id="jnld5"><th id="jnld5"></th></progress>

              <pre id="jnld5"></pre>

              <strike id="jnld5"><noframes id="jnld5"><pre id="jnld5"></pre>
              <strike id="jnld5"></strike>

              <strike id="jnld5"><span id="jnld5"><pre id="jnld5"></pre></span></strike>

              <font id="jnld5"><track id="jnld5"></track></font>