有關處理技術面試中常見計算機網路問題的完整指南
> Photo by Su San Lee on Unsplash
"你準備好接受面試了嗎?"
"當然是。請開始。"
"大。能否談談你對計算機網路的瞭解?也許我們可以從TCP是什麼以及它如何工作開始。"
"嗯……嗯……嗯……"
這看起來和你的經歷相似嗎?
不要放棄, 你絕對可以做得更好。
這是技術面試中會遇到的一些常見計算機網路問題。它們大多數與應用程式,傳輸和網路層有關。你可以按照本指南從頭開始學習計算機網路,並向面試官清楚地解釋它們。
1.計算機網路的體系結構是什麼?通常,計算機網路概念通常分為5個主要層。這是OSI(開放系統互連)模型和TCP / IP模型的組合,分別具有7層和4層。
> Different Models of Computer Networks (Image by Author)
2.每層的功能是什麼?以下介紹將基於OSI網路模型:
· 應用程式層:應用程式層的任務是指定主機執行的應用程式程序之間的通訊協議或介面。應用層中有一些通用協議,例如HTTP(超文字傳輸協議),DNS(域名系統)和SMTP。
· 表示層:此層主要負責將來自應用程式層的資料轉換為所需的格式(例如ASCII)。此處完成了一些工作,例如資料加密/解密和壓縮。
· 會話層:此層負責在兩個程序之間建立和維護連線或會話。它還允許程序新增檢查點以進行同步。
· 傳輸層:它透過網路在應用程式之間提供端到端的資料(段)傳輸服務。傳輸層最著名的協議是TCP(傳輸控制協議)和UDP(使用者資料報協議)。
· 網路層:網路層負責資料包(資料塊)的路由。具體來說,網路層選擇合適的傳輸路徑,並從其他網路傳送和接收IP(網際網路協議)資料包。
· 物理層:負責節點之間的位傳輸,這是物理連線(透過物理資料鏈路),並儘可能消除裝置之間的差異。
3.傳輸層中的TCP和UDP是什麼?他們有什麼區別?TCP(傳輸控制協議)是一種面向連線的服務,這意味著它在傳輸資料之前建立連線,並在傳輸之後關閉連線。
TCP的可靠性反映在透過三向握手建立連線,以及一些機制如錯誤檢測,流控制,擁塞控制和重傳。這些功能將花費大量開銷並佔用處理器資源。
TCP通常用於檔案傳輸,郵件的傳送和接收以及遠端登入。
UDP(使用者資料報協議)不需要在資料傳輸之前建立連線,這意味著遠端主機在接收到UDP段之後不需要進行確認。
儘管UDP無法提供可靠的傳輸,但它在某些情況下(通常是即時訊息傳遞)是最有效的服務,例如實時音訊和影片流。
> TCP v.s. UDP (Image by Author)
4. TCP如何建立和終止連線?我們首先來看一下如何在客戶端/伺服器模型中建立TCP連線,該模型通常稱為三向握手:
· 客戶端:它傳送一個SYN段,該段請求伺服器將其序列號與客戶端的序列號同步。
· 伺服器:從客戶端接收到資料包後,伺服器將返回SYN和ACK段,這會通知客戶端已收到該資料包,並要求其提供用於確認的預期序列號。
· 客戶端:它傳送迴帶有ACK段的資料包,該資料包通知伺服器已正確接收了返回的資料包。
> TCP Connection Establishment (Image by Author)
SYN段確認從傳送方到接收方的路由沒有問題,但是從接收方到傳送方的路由應由ACK段確認。
· 客戶端:決定關閉連線後,客戶端將向伺服器傳送FIN段。然後,客戶端將進入FIN_WAIT_1狀態,等待來自伺服器的確認。
· 伺服器:一旦接收到來自客戶端的FIN段,它將傳送回ACK段。
· 客戶端:從伺服器接收到ACK段後,它進入FIN_WAIT_2狀態,伺服器正在等待另一端傳送的FIN段。
· 伺服器:它還會關閉與客戶端的連線,並在傳送ACK段後傳送FIN段。
· 客戶端:接收到來自伺服器的ACK段後,客戶端會發回最終的ACK段進行確認。之後,客戶端將進入TIME_WAIT狀態,如果另一端未收到最終的ACK段,則客戶端將在一段時間後正式關閉。
5.什麼是ARQ(自動重複請求)?ARQ是一種錯誤控制方法,用於在傳輸層和資料鏈路層中進行資料傳輸。
確認和超時用於確保可靠的資料傳輸。如果接收方在給定時間內沒有收到確認,它將重新發送同一資料包,直到返回確認或超出預定義的重傳時間為止。
有兩種型別的ARQ,包括:
· 停止等待ARQ:停止等待ARQ的基本思想是傳送方每次傳送資料包後都會停止資料傳輸。如果在給定時間後未收到接收方的確認,則傳輸將被視為失敗。這意味著應該重新傳輸資料,直到收到確認為止。如果接收方收到重複的資料包,則應放棄此資料包並同時傳送回確認。
· Go-Back-N ARQ:發件人維護一個滑動視窗,該視窗中的資料包可以連續傳送,無需等待確認。接收器通常僅接收有序資料包,並在最後一個數據包到達後發回累積ACK。
6. TCP如何實現流量控制?流控制的目的是控制資料包傳送的速度,以確保接收方可以及時接收到它。
TCP可以透過滑動視窗來實現流控制。傳送方的滑動視窗大小可以由接收方返回的ACK段控制,這也可能影響傳送速度。
7. TCP如何實現擁塞控制?當對網路資源的請求超出其可以處理的資料量時,就會發生網路擁塞。
擁塞控制是為了防止過多的資料注入網路,以使網路連結或節點不會過載。
TCP擁塞控制採用多種策略,包括:
· 啟動緩慢:TCP不會首先將少量資料傳送並在每個RTT(往返時間)後按指數方式逐漸增加擁塞視窗(cwnd)大小,而不是將大量資料吸收到網路中。
· 避免擁塞:擁塞視窗(cwnd)大小達到閾值後,它開始累加地增加以避免網路擁塞。
· 擁塞檢測:這發生在發生擁塞時,擁塞視窗大小將成倍減小。假定在需要重發分組時發生擁塞。
· 快速重傳和恢復(FRR):這是一種擁塞控制演算法,可以快速恢復丟失的資料包。如果沒有FRR,TCP將透過計時器暫停傳輸。在暫停期間,不會傳輸新的資料包。使用FRR,如果接收器收到一個分段,它將立即返回一個重複的ACK分段。傳送方將在接收到三個重複的ACK段後假定該段丟失。FRR減少了重傳的延遲。
8.從輸入URL到顯示網頁的過程是什麼?此過程可以分為幾個步驟:
· DNS解析。
· 建立一個TCP連線。
· 傳送HTTP請求。
· 伺服器處理該請求並返回HTTP響應。
· 瀏覽器呈現網頁。
· 緊密連線。
> The Process of Accessing URL and Protocols Used (Image by Author)
8. HTTP如何儲存使用者狀態?HTTP是一種"無狀態"協議,這意味著它不會儲存請求和響應本身之間的連線狀態。
那麼我們如何儲存使用者狀態?
管理會話以解決此問題。會話的主要功能是從伺服器端記錄使用者狀態。
例如,當您將一些產品放入亞馬遜購物車,並考慮以後再購買時。由於實際上是無狀態的,因此係統實際上不知道是誰透過HTTP儲存這些專案。因此,伺服器將為您建立並保留一個特定的會話,從而可以跟蹤您的購物資訊。
9.什麼是計算機網路中的cookie?Cookies和會話之間有什麼區別?Cookie和會話都可以跟蹤和儲存使用者身份,但是它們通常用於不同的情況。
Cookies通常用於儲存使用者資訊。例如,在登入網站後,下次無需再次登入,因為我們的安全詳細資訊已作為令牌儲存在cookie中。系統僅需根據令牌值查詢使用者。
會話透過伺服器記錄使用者狀態。使用會話的典型場景是線上購物車。由於HTTP是無狀態的,因此伺服器將透過將使用者標記為會話來跟蹤使用者狀態。
Cookie資料儲存在客戶端(瀏覽器)上,而會話資料儲存在伺服器端。這意味著與cookie相比,會話具有更高的安全級別。
10. HTTP和HTTPS有什麼區別?HTTP超出了TCP的範圍,並使用純文字傳輸內容。客戶端和伺服器端都無法驗證彼此的身份。
HTTPS(安全超文字傳輸協議)是執行在SSL / TLS之外的HTTP,而SSL / TLS執行在TCP / IP之外。傳輸的所有內容均已加密。
因此,HTTPS的安全性高於HTTP,但是HTTPS比HTTP需要更多的資源。
參考文獻· OSI模型層
· TCP / IP模型
· 傳輸控制協議—維基百科
· TCP連線建立
· TCP連線終止
· 停止等待ARQ
· Go-Back-N ARQ
· TCP / IP協議如何處理資料通訊
· 停止和等待,GoBackN和選擇性重複之間的區別
· TCP擁塞控制
需要明確的是,仍然有許多與計算機網路有關的知識。由於常見的技術面試,尤其是初級軟體工程師的面試通常集中在網路層的上半部分,因此我們所看到的那些問題只是該領域的一小部分。