在后臺開發(fā)的面試中,計算機(jī)網(wǎng)絡(luò)知識是必考的核心內(nèi)容之一。扎實的網(wǎng)絡(luò)基礎(chǔ)不僅能幫助開發(fā)者在工作中解決實際問題,也是技術(shù)深度的體現(xiàn)。以下整理了一些常見的計算機(jī)網(wǎng)絡(luò)面試題,并附上了參考答案,希望能為開發(fā)者們提供一些幫助。
1. OSI七層模型與TCP/IP四層模型是什么?有什么區(qū)別?
參考答案:OSI(開放系統(tǒng)互連)七層模型包括物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會話層、表示層和應(yīng)用層。TCP/IP四層模型則包括網(wǎng)絡(luò)接口層、網(wǎng)際層、傳輸層和應(yīng)用層。主要區(qū)別在于TCP/IP模型將OSI的物理層和數(shù)據(jù)鏈路層合并為網(wǎng)絡(luò)接口層,將會話層、表示層和應(yīng)用層合并為應(yīng)用層,更貼近實際互聯(lián)網(wǎng)的實現(xiàn),而OSI模型理論性更強(qiáng)。
2. 請解釋TCP三次握手和四次揮手的過程。
參考答案:
- 三次握手(建立連接):
1. 客戶端發(fā)送SYN包(序列號seq=x)到服務(wù)器,進(jìn)入SYN_SENT狀態(tài)。
- 服務(wù)器收到SYN包,回復(fù)SYN+ACK包(seq=y, ack=x+1),進(jìn)入SYN_RCVD狀態(tài)。
- 客戶端收到SYN+ACK包,發(fā)送ACK包(ack=y+1),雙方進(jìn)入ESTABLISHED狀態(tài),連接建立。
- 四次揮手(斷開連接):
- 客戶端發(fā)送FIN包(seq=u),進(jìn)入FINWAIT1狀態(tài)。
- 服務(wù)器收到FIN包,回復(fù)ACK包(ack=u+1),進(jìn)入CLOSEWAIT狀態(tài);客戶端收到ACK后進(jìn)入FINWAIT_2狀態(tài)。
- 服務(wù)器發(fā)送FIN包(seq=v, ack=u+1),進(jìn)入LAST_ACK狀態(tài)。
- 客戶端收到FIN包,回復(fù)ACK包(ack=v+1),進(jìn)入TIME_WAIT狀態(tài);服務(wù)器收到ACK后關(guān)閉連接,客戶端等待2MSL后關(guān)閉連接。
3. TCP與UDP的區(qū)別是什么?
參考答案:TCP是面向連接的、可靠的、基于字節(jié)流的傳輸層協(xié)議,提供流量控制、擁塞控制、重傳機(jī)制,適用于需要可靠傳輸?shù)膱鼍埃ㄈ鏗TTP、FTP)。UDP是無連接的、不可靠的、基于數(shù)據(jù)報的傳輸層協(xié)議,傳輸速度快、開銷小,適用于實時性要求高或允許丟包的場景(如視頻流、DNS查詢)。
4. HTTP和HTTPS有什么區(qū)別?
參考答案:HTTP是超文本傳輸協(xié)議,以明文傳輸數(shù)據(jù),端口為80,存在安全風(fēng)險。HTTPS是HTTP的安全版本,通過SSL/TLS協(xié)議進(jìn)行加密傳輸,端口為443,能防止數(shù)據(jù)被竊取或篡改,但會增加計算開銷和連接時間。HTTPS需要證書來驗證服務(wù)器身份。
5. 什么是DNS?它的解析過程是怎樣的?
參考答案:DNS(域名系統(tǒng))是將域名轉(zhuǎn)換為IP地址的分布式系統(tǒng)。解析過程包括:
1. 客戶端查詢本地DNS緩存,若沒有則向本地DNS服務(wù)器發(fā)送請求。
- 本地DNS服務(wù)器查詢根域名服務(wù)器,獲取頂級域(如.com)服務(wù)器地址。
- 查詢頂級域服務(wù)器,獲取權(quán)威域名服務(wù)器地址。
- 查詢權(quán)威域名服務(wù)器,獲得目標(biāo)IP地址,并緩存結(jié)果返回給客戶端。
6. 請解釋HTTP狀態(tài)碼及其常見類型。
參考答案:HTTP狀態(tài)碼表示服務(wù)器對請求的響應(yīng)狀態(tài),分為五類:
- 1xx(信息性):如100 Continue,表示請求已接收,繼續(xù)處理。
- 2xx(成功):如200 OK,請求成功。
- 3xx(重定向):如301 Moved Permanently,資源永久重定向。
- 4xx(客戶端錯誤):如404 Not Found,資源不存在。
- 5xx(服務(wù)器錯誤):如500 Internal Server Error,服務(wù)器內(nèi)部錯誤。
7. 什么是TCP的流量控制和擁塞控制?
參考答案:
- 流量控制:通過滑動窗口機(jī)制實現(xiàn),接收方根據(jù)自身緩沖區(qū)大小動態(tài)調(diào)整窗口大小,告知發(fā)送方可發(fā)送的數(shù)據(jù)量,避免發(fā)送過快導(dǎo)致數(shù)據(jù)丟失。
- 擁塞控制:包括慢啟動、擁塞避免、快重傳和快恢復(fù)等算法,通過調(diào)整擁塞窗口大小來探測網(wǎng)絡(luò)帶寬,防止網(wǎng)絡(luò)過載。
8. 什么是WebSocket?它與HTTP長輪詢有什么區(qū)別?
參考答案:WebSocket是一種全雙工通信協(xié)議,建立在TCP之上,允許服務(wù)器主動向客戶端推送數(shù)據(jù),適用于實時應(yīng)用(如聊天室)。HTTP長輪詢則是客戶端定期發(fā)送請求查詢服務(wù)器是否有新數(shù)據(jù),效率較低且延遲高。WebSocket連接更持久、開銷更小。
9. 請解釋ARP協(xié)議的作用。
參考答案:ARP(地址解析協(xié)議)用于將IP地址映射到MAC地址。當(dāng)設(shè)備需要與同一局域網(wǎng)內(nèi)的另一設(shè)備通信時,會廣播ARP請求查詢目標(biāo)IP對應(yīng)的MAC地址,目標(biāo)設(shè)備回復(fù)ARP響應(yīng),從而建立數(shù)據(jù)鏈路層通信。
10. 什么是CDN?它如何工作?
參考答案:CDN(內(nèi)容分發(fā)網(wǎng)絡(luò))是一種分布式網(wǎng)絡(luò)系統(tǒng),通過將內(nèi)容緩存到全球多個邊緣節(jié)點,使用戶可以從最近的節(jié)點獲取數(shù)據(jù),從而減少延遲、提高訪問速度。工作流程包括DNS解析將用戶請求重定向到最優(yōu)CDN節(jié)點,節(jié)點直接返回緩存內(nèi)容或回源站獲取。
###
掌握這些計算機(jī)網(wǎng)絡(luò)基礎(chǔ)知識,不僅能幫助后臺開發(fā)者在面試中脫穎而出,還能在實際開發(fā)中優(yōu)化系統(tǒng)性能、解決網(wǎng)絡(luò)問題。建議結(jié)合實踐加深理解,例如通過Wireshark抓包分析TCP連接過程,或搭建簡單的HTTP服務(wù)器來體驗協(xié)議交互。不斷學(xué)習(xí)和積累,才能在技術(shù)道路上走得更遠(yuǎn)。