面試:網絡知識彙總

面試題經常問到:

1.首先根據URL訪問DNS服務器找到需要方位的IP,  因爲IP纔是真正第對應一臺真正的機器;

2.get 到IP的時候,這個時就會三次握手, 正常的走一次TCP/IP請求;

  注意:

源IP:本地機器IP 

源端口號:隨機的一個端口號,一般是大於1000,

目標IP: 剛剛獲得的IP

端口號: 80 

3.組織HTTP請求參數{應用層}  ,TCP組裝參數[傳輸層]--->要做的事情就是封裝HTTP參數,然後將端口號 封裝進去;

4 網絡層 IP層將 源IP 目標IP封裝進去,並封裝TCP參數;

5 鏈路層封裝MAC信息, 物理層發送消息出去,電信號轉光信號傳輸了;

6 服務端接收到數據之後,一層層解析,根據端口號找到相應的服務, 然後把請求路徑,請求參數解析出來,

7 程序根據請求處理這些邏輯, 組織返回參數,和之前邏輯一樣,封裝參數 發送出去,

8 瀏覽器拿到結果,進行解析渲染到頁面上,完成了一次請求,

9 這個時候,還需要四次揮手釋放掉這個連接. 真正的一次請求完成了.

 

面試點2: HTTP請求與HTTPS之間的區別

答案: HTTP請求傳輸是明文傳輸, 請求數據和返回數據是可以被解析看到的.

HTTPS是HTTP+ SSL[SSL=socket secrurity layer 安全套接字層],是密文傳輸的,保證了消息的安全性

一次HTTPS請求的過程;

首先 HTTPS請求從服務端獲得加密的公鑰;

第二步: 客戶端會隨機生層一個對稱的密鑰, 通過公鑰加密,然後發送服務端,

第三步: 服務端就會用私鑰對穿過去的加密隨機數,進行解密; 這樣隨機數就能解出來了,

第四步:客戶端用對稱祕鑰進行加密,傳輸,這樣服務端就可以用對稱祕鑰進行解密;

整體流程發送了三次請求:

-->獲取公鑰, 

-->第二步發送隨機數[作爲對稱加密祕鑰]

-->發送對稱加密數據;

 

面試題3: TCP粘包現象的處理方案

什麼是粘包? --->TCP在發送數據的時候,小數據就會合並幾個一起發送. 通過nagle 算法合併小包一起發送;

但是接收方的時候, 接收方接收到數據不會立馬消費,而是將將數據放入緩存區,[這就是問題出現的七點]

應用程序在讀取時間的時候,是不知道要讀取多大的數據的,舉個例子: 讀 1024*1024數據的時候, 可能一個數據包被切成了兩半;

造成數據不能正常消費.

針對這種現象的解決方案是:

1.發送定長的數據,這樣每段數據都會被正常消費;

2.在數據包之間添加特殊的分割字符,這樣能讀取數據的時候,按照分隔符讀取.

3. 禁用nagle算法.

 

面試題4: 四次揮手狀態轉移;

1.客戶端: FIN_WAIT1 --->FIN_WAIT2 --->TIME_WAIT---CLOSE

2 服務端:close_wait--->last-ack;

  爲什麼要四次揮手, 爲什麼是2MSL [max segment live] 最大塊存活時間

  答案: 四次揮手是兩次半雙工的關閉. 

  2MSL的時間? 第一:保證消息能正常關閉,即使消息沒有正常到達服務端,也能保證下次接受到關閉消息,

    2 保證消息能在網絡中安全的消失.

 

面試題5:TCP是怎麼保證安全傳輸的?

答案: 1 面向連接. 2.超時重傳,3 傳輸包校驗, 4 流量控制,5 擁塞控制.

以上就能保證數據能夠正常送達.

 

面試題6: 流量控制過程是怎樣的?

答:流量控制是通過滑動窗口機制實現的,  發送方的窗口大小是根據接收方的接收能力來控制的.

發送方維護了一個三個指針 P1  窗口後沿  P2:尚未發送的第一個字節. P3:是指窗口的前沿,表示可用窗口的大小.

  <--發送並已經確認數據--->P1<---已發送但未確認的數據----->P2<[待發送的起始數據]--------可用窗口大小------>P3<---未發送的數據,--->

 

面試7: 擁塞控制的整個流程?

擁塞控制有兩個算法  慢啓動算法和擁塞避免算法,

其中一個閾值 大於閾值用擁塞避免算法,小於閾值用慢啓動算法.

劃重點了:   

慢啓動是指數形式增長的,

擁塞避免算法是 +1形式增長的.

注意:當出現網絡擁塞的時候,此時閾值就是當前窗口的一半, 然後重新走:---->慢啓動--->新閾值<--擁塞避免算法;

----->快速重傳和快速恢復[思路是這樣的}

當發送端收到三個重複確認的請求時候, 就立即重新發送待確認的數據.

原因是這樣的::接收端收到一個失序的數據包,中間丟包了,之後的就不在確認了,然後發送待確認的丟包序號,發送端就會重新發送.

舉例說明: 發送端:  M1--M2--M3--M4--M5   接收端接收到: M1--M2-(--)-M4--M5 丟了M3 這個時候返回的確認信號就是M3M3M3

三次同樣的信號之後,就會重新發送M3; 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章