專業(yè)的營(yíng)銷型網(wǎng)站建設(shè)競(jìng)價(jià)廣告代運(yùn)營(yíng)
計(jì)算機(jī)網(wǎng)絡(luò)常見(jiàn)面試題:
計(jì)算機(jī)網(wǎng)絡(luò)面試(一)
計(jì)算機(jī)網(wǎng)絡(luò)面試(二)
計(jì)算機(jī)網(wǎng)絡(luò)速成:
計(jì)算機(jī)網(wǎng)絡(luò)速成一
計(jì)算機(jī)網(wǎng)絡(luò)速成二
計(jì)算機(jī)網(wǎng)絡(luò)速成三
2. HTTP 1.0 和 2.0 的區(qū)別
-
連接復(fù)用:
- HTTP/1.0 使用短連接(默認(rèn)每個(gè)請(qǐng)求創(chuàng)建一個(gè) TCP 連接)。
- HTTP/2.0 支持多路復(fù)用,一個(gè) TCP 連接可以并發(fā)處理多個(gè)請(qǐng)求和響應(yīng)。
-
頭部壓縮:
- HTTP/1.0 沒(méi)有對(duì)請(qǐng)求頭壓縮。
- HTTP/2.0 使用 HPACK 算法對(duì)頭部信息進(jìn)行壓縮,減少網(wǎng)絡(luò)帶寬占用。
-
二進(jìn)制分幀:
- HTTP/1.0 使用純文本協(xié)議傳輸數(shù)據(jù)。
- HTTP/2.0 使用二進(jìn)制格式傳輸,數(shù)據(jù)分為幀(Frame),使傳輸更高效。
-
服務(wù)器推送:
- HTTP/1.0 不支持服務(wù)器推送。
- HTTP/2.0 允許服務(wù)器主動(dòng)推送資源到客戶端,減少等待時(shí)間。
3. TCP 連接是什么
TCP(傳輸控制協(xié)議,Transmission Control Protocol)是一種面向連接的、可靠的傳輸協(xié)議。TCP 連接是指通過(guò)三次握手建立的通信鏈路,用于保證數(shù)據(jù)的有序傳輸和完整性。
- 核心特點(diǎn):
- 可靠傳輸:確保數(shù)據(jù)包按序到達(dá)且無(wú)丟失。
- 雙向通信:通信雙方可以同時(shí)發(fā)送和接收數(shù)據(jù)。
- 面向連接:需要在通信開(kāi)始前建立連接(三次握手),并在結(jié)束時(shí)釋放連接(四次揮手)。
TCP 主要用于需要高可靠性的應(yīng)用場(chǎng)景,如文件傳輸、電子郵件、網(wǎng)頁(yè)瀏覽等。
4. HTTP 2.0 和 3.0 的區(qū)別
-
傳輸層協(xié)議:
- HTTP/2.0 基于 TCP。
- HTTP/3.0 基于 QUIC(一種基于 UDP 的協(xié)議),提高了傳輸速度和效率。
-
連接管理:
- HTTP/2.0 使用 TCP,多路復(fù)用解決了大部分隊(duì)頭阻塞問(wèn)題,但仍受 TCP 隊(duì)頭阻塞的影響。
- HTTP/3.0 通過(guò) QUIC 協(xié)議完全避免了隊(duì)頭阻塞問(wèn)題。
-
傳輸速度:
- HTTP/2.0 的建立連接過(guò)程包括 TCP 握手和 TLS 握手,延遲較高。
- HTTP/3.0 將加密(TLS)集成到 QUIC,減少了連接建立的延遲。
-
數(shù)據(jù)恢復(fù):
- HTTP/2.0 中丟失一個(gè)數(shù)據(jù)包會(huì)影響整個(gè) TCP 流。
- HTTP/3.0 的每個(gè)流獨(dú)立處理丟包問(wèn)題,不影響其他流。
5. HTTP 和 HTTPS 的區(qū)別
-
協(xié)議層次:
- HTTP 是超文本傳輸協(xié)議,默認(rèn)端口 80。
- HTTPS 是在 HTTP 之上加入了 SSL/TLS 協(xié)議,用于加密通信,默認(rèn)端口 443。
-
安全性:
- HTTP 的數(shù)據(jù)是明文傳輸,容易被竊聽(tīng)、篡改。
- HTTPS 對(duì)數(shù)據(jù)進(jìn)行加密,提供身份驗(yàn)證和完整性,防止竊聽(tīng)和篡改。
-
性能影響:
- HTTPS 需要進(jìn)行加密解密,會(huì)增加一些計(jì)算開(kāi)銷。
- 現(xiàn)代優(yōu)化手段(如 TLS 1.3)使得性能影響微乎其微。
6. TCP 是用來(lái)解決什么問(wèn)題
TCP 主要解決以下問(wèn)題:
- 數(shù)據(jù)可靠性:
- 保證數(shù)據(jù)包按順序到達(dá)。
- 丟失的數(shù)據(jù)包可以重傳。
- 流量控制:
- 避免發(fā)送方傳輸速度過(guò)快導(dǎo)致接收方無(wú)法處理。
- 擁塞控制:
- 防止網(wǎng)絡(luò)過(guò)載。
- 雙向通信:
- 提供面向連接的雙向可靠通信。
7. TCP 和 UDP 的區(qū)別
-
連接性:
- TCP 是面向連接的,需要建立連接(三次握手)。
- UDP 是無(wú)連接的,不需要握手,直接發(fā)送數(shù)據(jù)。
-
可靠性:
- TCP 提供可靠傳輸,數(shù)據(jù)丟失時(shí)可重傳。
- UDP 不提供保證,可能出現(xiàn)數(shù)據(jù)丟失。
-
速度:
- TCP 較慢,適合需要可靠傳輸?shù)膱?chǎng)景(如文件傳輸、網(wǎng)頁(yè))。
- UDP 較快,適合對(duì)時(shí)延敏感的場(chǎng)景(如實(shí)時(shí)視頻、游戲)。
-
數(shù)據(jù)傳輸:
- TCP 按序傳輸,保證數(shù)據(jù)完整性。
- UDP 不保證數(shù)據(jù)順序。
8. TCP 的粘包和拆包問(wèn)題
- 粘包:多條數(shù)據(jù)在傳輸過(guò)程中被接收方合并為一條。
- 拆包:一條數(shù)據(jù)在傳輸過(guò)程中被分成多條。
原因:
- 粘包:
- 發(fā)送方將多條數(shù)據(jù)連續(xù)發(fā)送,接收方一次性讀取了多條。
- 發(fā)送數(shù)據(jù)長(zhǎng)度小于發(fā)送緩沖區(qū)的大小。
- 拆包:
- 數(shù)據(jù)過(guò)大,超過(guò)了緩沖區(qū)大小,被拆分成多次發(fā)送。
解決方法:
3. 固定消息長(zhǎng)度:預(yù)設(shè)每條消息的固定長(zhǎng)度。
4. 分隔符:在每條消息后添加特殊的分隔符(如換行符)。
5. 消息頭:消息開(kāi)頭加上長(zhǎng)度字段,告知接收方本條消息的長(zhǎng)度。
1. TCP 的三次握手
TCP 的三次握手是建立連接的過(guò)程,用來(lái)確保通信雙方已經(jīng)準(zhǔn)備好,能可靠地進(jìn)行數(shù)據(jù)傳輸。
- 第一步:客戶端發(fā)送 SYN 報(bào)文,表示請(qǐng)求建立連接,同時(shí)初始序列號(hào)(Seq=x)。
- 第二步:服務(wù)器收到后,返回 SYN+ACK 報(bào)文,表示同意建立連接,同時(shí)發(fā)送自己的初始序列號(hào)(Seq=y),并確認(rèn)客戶端的序列號(hào)(Ack=x+1)。
- 第三步:客戶端收到后,再次發(fā)送 ACK 報(bào)文,確認(rèn)服務(wù)器的序列號(hào)(Ack=y+1),連接建立成功。
三次握手的目的:
- 確保雙方的發(fā)送能力和接收能力正常。
- 同步序列號(hào),初始化雙方的數(shù)據(jù)傳輸狀態(tài)。
2. TCP 的四次揮手
TCP 的四次揮手是斷開(kāi)連接的過(guò)程,確保雙方都能安全地釋放資源。
- 第一步:客戶端發(fā)送 FIN 報(bào)文,表示不再發(fā)送數(shù)據(jù),但還能接收數(shù)據(jù)。
- 第二步:服務(wù)器收到后,返回 ACK 報(bào)文,表示已接收到客戶端的 FIN。
- 第三步:服務(wù)器發(fā)送 FIN 報(bào)文,表示不再發(fā)送數(shù)據(jù)。
- 第四步:客戶端收到后,返回 ACK 報(bào)文,確認(rèn)斷開(kāi)連接。
斷開(kāi)連接比建立連接多兩次通信,因?yàn)?TCP 是全雙工通信,雙方需要分別確認(rèn)對(duì)方不再發(fā)送數(shù)據(jù)。
3. TCP 為什么需要 TIME WAIT 狀態(tài)
-
TIME WAIT 的作用:
- 確保最后的 ACK 報(bào)文被對(duì)方收到:如果服務(wù)器未收到 ACK,會(huì)重發(fā) FIN。TIME WAIT 確保客戶端能接收并處理這些重發(fā)的 FIN。
- 防止舊連接數(shù)據(jù)干擾新連接:等待足夠時(shí)間,讓網(wǎng)絡(luò)中可能殘留的舊數(shù)據(jù)包完全消失。
-
TIME WAIT 的持續(xù)時(shí)間:
通常是 2 倍的最大報(bào)文生存時(shí)間(2MSL)。
4. TCP 超時(shí)重傳機(jī)制
-
解決的問(wèn)題:
當(dāng)數(shù)據(jù)包在傳輸中丟失或未及時(shí)收到確認(rèn)時(shí),通過(guò)超時(shí)重傳機(jī)制重新發(fā)送,確保數(shù)據(jù)可靠傳輸。 -
機(jī)制流程:
- 發(fā)送數(shù)據(jù)包后啟動(dòng)計(jì)時(shí)器。
- 若在超時(shí)時(shí)間內(nèi)未收到 ACK,重新發(fā)送數(shù)據(jù)。
- 每次超時(shí)重傳會(huì)增大等待時(shí)間(指數(shù)退避算法)。
-
典型場(chǎng)景:
網(wǎng)絡(luò)擁塞、傳輸路徑中斷等導(dǎo)致的確認(rèn)丟失。
5. TCP 滑動(dòng)窗口的作用
TCP 滑動(dòng)窗口是一種流量控制機(jī)制,用于動(dòng)態(tài)調(diào)整發(fā)送方能發(fā)送的最大數(shù)據(jù)量,以避免接收方或網(wǎng)絡(luò)過(guò)載。
-
工作原理:
- 窗口大小由接收方設(shè)置,告知發(fā)送方當(dāng)前可接收的數(shù)據(jù)量。
- 窗口隨接收的確認(rèn)數(shù)據(jù)滑動(dòng),允許發(fā)送方發(fā)送更多數(shù)據(jù)。
-
作用:
- 提高傳輸效率:允許發(fā)送方在等待 ACK 的同時(shí)繼續(xù)發(fā)送數(shù)據(jù)。
- 避免擁塞:通過(guò)動(dòng)態(tài)調(diào)整窗口大小控制發(fā)送速率。
6. TCP/IP 四層模型
TCP/IP 是網(wǎng)絡(luò)通信協(xié)議的基礎(chǔ)模型,共分為四層:
- 應(yīng)用層:
- 提供應(yīng)用程序間的通信接口。
- 協(xié)議:HTTP、FTP、SMTP、DNS。
- 傳輸層:
- 提供端到端的可靠或非可靠傳輸。
- 協(xié)議:TCP、UDP。
- 網(wǎng)絡(luò)層:
- 負(fù)責(zé)路由和數(shù)據(jù)包的轉(zhuǎn)發(fā)。
- 協(xié)議:IP、ICMP。
- 鏈路層:
- 負(fù)責(zé)數(shù)據(jù)幀的封裝和物理傳輸。
- 包括以太網(wǎng)、Wi-Fi 等。
7. OSI 七層模型
OSI 是理論上的網(wǎng)絡(luò)通信模型,共分為七層:
- 物理層:
- 傳輸比特流,定義硬件接口。
- 如網(wǎng)線、光纖。
- 數(shù)據(jù)鏈路層:
- 負(fù)責(zé)幀的傳輸和差錯(cuò)檢測(cè)。
- 如以太網(wǎng)協(xié)議。
- 網(wǎng)絡(luò)層:
- 負(fù)責(zé)尋址和路由選擇。
- 如 IP 協(xié)議。
- 傳輸層:
- 提供端到端通信。
- 如 TCP、UDP。
- 會(huì)話層:
- 管理會(huì)話和數(shù)據(jù)同步。
- 表示層:
- 負(fù)責(zé)數(shù)據(jù)格式轉(zhuǎn)換和加密。
- 應(yīng)用層:
- 提供用戶接口。
- 如 HTTP、FTP。
8. Cookie、Session、Token 的區(qū)別
特性 | Cookie | Session | Token |
---|---|---|---|
存儲(chǔ)位置 | 瀏覽器(客戶端) | 服務(wù)器 | 客戶端,可能會(huì)臨時(shí)存儲(chǔ)在本地 |
狀態(tài)保持 | 無(wú)狀態(tài)(需要每次隨請(qǐng)求發(fā)送) | 有狀態(tài)(服務(wù)器存儲(chǔ)會(huì)話信息) | 無(wú)狀態(tài)(包含自身驗(yàn)證信息) |
生命周期 | 可持久(設(shè)定過(guò)期時(shí)間) | 短暫(默認(rèn)關(guān)閉瀏覽器即失效) | 取決于設(shè)計(jì),通常有過(guò)期時(shí)間 |
安全性 | 較低,容易被竊取和偽造 | 較高,數(shù)據(jù)存儲(chǔ)在服務(wù)器端 | 較高,加密且不依賴服務(wù)器狀態(tài) |
使用場(chǎng)景 | 簡(jiǎn)單用戶偏好、保持登錄狀態(tài) | 用戶認(rèn)證、狀態(tài)管理 | 分布式系統(tǒng)、API 調(diào)用 |
- Cookie:客戶端存儲(chǔ)數(shù)據(jù),常用于保存用戶偏好或會(huì)話信息。
- Session:服務(wù)器存儲(chǔ)會(huì)話狀態(tài),客戶端用 Cookie 或其他方式傳遞會(huì)話 ID。
- Token:自包含的加密數(shù)據(jù),客戶端攜帶 Token 即可完成身份驗(yàn)證,無(wú)需依賴服務(wù)器存儲(chǔ)會(huì)話狀態(tài)。