前言:進行軟體測試面試時,相信大家或多或少都會被問到一些關於計算機網絡的問題,今天這篇文章就目前反饋比較多的計算機網絡面試題及答案做了一個整理,在找工作的你,趕緊看過來~
Q1. 說一下你理解的七層網絡模型?
A
應用層: 網絡服務與最終用戶的一個接口。
協議有:HTTP FTP TFTP DNS 協議等;
表示層: 數據的表示、安全、壓縮的格式;
會話層: 建立、管理、終止會話。對應主機進程,指本地主機與遠程主機正在進行的會話
傳輸層:定義傳輸數據的協議埠號,以及流控和差錯校驗。協議有:TCP UDP 協議。
網絡層:進行邏輯地址尋址,實現不同網絡之間的路徑選擇。協議有:ICMP IP(IPV4 IPV6)
數據鏈路層: 建立邏輯連接、進行硬體地址尋址功能。將比特組合成字節進而組合成幀,用 MAC 地址訪問介質,錯誤發現但不能糾正。
物理層: 建立、維護、斷開物理連接。
Q2. tcp 協議的三次握手過程?
A
TCP 協議要建立連接的時候,需要經歷三次握手的過程:
第一次握手: 是客戶端向伺服器發起的,用來申請建立連接的,這個報文中的 SYN 標誌位標記為 1,所以我們也叫作 SYN 包;
第二次握手:是伺服器回復客戶端的,用來確認並接受連接請求的,這個報文中的 SYN 位和 ACK 位都標記為 1,所以叫做 SYN-ACK 報文;
第三次握手:仍然是客戶端發給伺服器的,用來確認伺服器的回覆消息,這個報文中的 ACK 標誌位標記為 1,所以我們也叫作 ACK 包。
這就是 TCP 協議的三次握手過程。
Q3. 有了解 TCP 握手是握幾次嗎?為什麼要握三次手?
A
3 次。
客戶端發送請求建立連接的數據包可能會滯留在網絡中,等到後續這個連接斷開之後再次到達伺服器,那麼伺服器會發送消息告訴客戶端可以發送消息,但是客戶端不會理會伺服器也不會發送消息,伺服器端處於等待狀態,會造成資源浪費
Q4. TCP 協議的 4 次揮手?
A
TCP 協議完成了數據發送之後,就會斷開連接,此時就需要經歷四次揮手的過程:
第一次揮手:是客戶端向伺服器發起的,用來申請斷開連接的,這個報文中的 FIN 標誌位標記為 1,所以我們也叫作 FIN 包;
第二次揮手:是伺服器回復客戶端的,用來確認客戶端的上一個斷開連接請求的,所以是一個 ACK 報文;
第三次揮手:仍然是伺服器發給客戶端的,用來告知客戶端伺服器的數據發送完畢了,需要斷開連接;這個報文中的 FIN 標誌位標記為 1,所以也是一個 FIN 包。
第四次揮手:是客戶端回復伺服器的,確認伺服器的上一個斷開連接請求,所以也是一個 ACK 報文;
這就是 TCP 協議的四次揮手過程。
Q5. 為什麼握手需要三次,揮手卻需要四次呢?
A
三次握手是 TCP 協議建立連接的過程,建立連接,我只需要確認一下你在我也在就好了啊,三次握手夠了;
但是四次揮手是 TCP 協議是為了斷開連接的,所以需要確保我既結束髮送數據,也結束接收數據;開始客戶端先結束髮送並告知伺服器,伺服器確認後就結束接收了;這兩次揮手完成後,客戶端還在接收數據哦,伺服器也還在發送;所以需要伺服器也發送一次 FIN 包,告知我也結束數據發送了,客戶端確認後,才雙方都關閉發送和接收數據通道,所以必須要四次~
Q6. tcp 和 udp 的區別?
A
TCP 協議和 UDP 協議都是傳輸層的兩個協議:它們的區別主要有如下 3 個方面:
第一:TCP 是面向連接,就像打電話要先撥號建立連接一樣,而 UDP 是無連接的,即發送數據之前不需要建立連接。
第二:TCP 可以提供可靠的服務,能保證數據傳輸無差錯,不丟失,不重複,且按序到達;而 UDP 協議只是盡最大努力交付,即不保證可靠交付。
第三:因為 TCP 以上兩個特點,所以對應傳輸效率相對較低,而 UDP 效率高,所以一些注重速度而不在乎的丟包的場景,會選擇用 UDP 協議,比如 IP 電話,流媒體等。
Q7. 你了解 http 協議有哪些響應狀態碼?
A
狀態碼有如下幾種:
1xx(臨時響應):表示臨時響應並需要請求者繼續執行操作的狀態代碼。
2xx (成功):表示成功處理了請求的狀態代碼。
3xx (重定向):表示要完成請求,需要進一步操作。通常,這些狀態代碼用來重定向。
4xx(請求錯誤):這些狀態代碼表示請求可能出錯,妨礙了伺服器的處理。
5xx(伺服器錯誤):這些狀態代碼表示伺服器在嘗試處理請求時發生內部錯誤。這些錯誤可能是伺服器本身的錯誤,而不是請求出錯。
Q8. HTTP 和 HTTPS 的區別?
A
1.從安全性來說:http 明文傳輸,易受攻擊,無法確認雙方身份,也無法保證數據的完整性;https 使用 SSL 加密傳輸協議,信息是密文,可以認證雙方身份,防止信息被截取篡改,安全性相比 http 要高
2.從埠來看:http 默認埠 80,https 默認埠 443
3.靈活性上:http 簡單快速,使用靈活;https 技術門檻較高,多數個人或私人網站難以支撐
4.訪問速度:http 協議簡單,http 伺服器的程序規模小,因而通信速度很快;https 加重了服務端負擔,需要更多的資源來支撐,降低了用戶的訪問速度
5.經濟適用度:http 沒有額外的費用要求,https 協議 CA 機構頒發的證書都是需年費的,此外對接 https 協議也需要額外的技術支持
Q9、https 協議比 http 安全,是如何實現的呢?
A
https 協議通過 SSL 協議外殼來實現它的安全性,主要體現在三個方面:
第一: 數據是加密的,SSL 協議通過非對稱秘鑰分發的方式完成秘鑰的協商,然後通過對稱秘鑰的加密方式完成數據的加密;
第二:會驗證對方身份。服務端和客戶端雙方會需要向 CA 機構申請證書,再 SSL 握手階段會驗證雙方證書是否可信,從而驗證雙方的身份,防止第三方冒充;
第三:保證數據的完整性。每次的數據都會加上 MAC 摘要並簽名,接收的數據和發送的數據這個摘要信息一致的,就表示數據沒有被篡改過。
Q10、當一個用戶在瀏覽器輸入 url 打開一個網頁的時候,從輸入到加載完整個過程經歷了什麼?
A
1.首先它會進行 DNS 的域名解析;
2.建立 TCP 連接;發起 tcp 的三次握手
3.發送一個 HTTP 的請求;
4.伺服器處理相關的請求並返回處理後的結果;
5.關閉 TCP 連接;
6.瀏覽器接收到伺服器給到的 HTML 代碼,開始解析;
7.瀏覽器將解析後的資源(如 js、CSS、圖片等)進行請求,並對頁面進行渲染呈現給用戶。
最後:
需要更多軟體測試面試題的關注+轉發後私信【軟體測試】獲取哦!