網(wǎng)絡(luò)協(xié)議是互聯(lián)網(wǎng)通信的基礎(chǔ),不同協(xié)議在數(shù)據(jù)傳輸中承擔(dān)不同角色。以下將用一個(gè)動(dòng)圖來詳細(xì)解析 HTTP、HTTP/3(QUIC)、HTTPS、WebSocket、TCP、UDP、SMTP、FTP 的工作流程及核心特點(diǎn)。

1. HTTP(超文本傳輸協(xié)議)
作用:客戶端與服務(wù)器之間的無狀態(tài)應(yīng)用層通信協(xié)議,用于傳輸超文本(如網(wǎng)頁)。
工作流程:
建立TCP連接:客戶端通過TCP三次握手與服務(wù)器建立連接(默認(rèn)端口80)。
發(fā)送HTTP請(qǐng)求:客戶端發(fā)送請(qǐng)求報(bào)文,格式為:GET /index.html HTTP/1.1 Host: example.com
服務(wù)器處理請(qǐng)求:服務(wù)器解析請(qǐng)求,返回響應(yīng)(狀態(tài)碼+內(nèi)容),例如:HTTP/1.1 200 OK Content-Type: text/html <html>...</html>
關(guān)閉連接:默認(rèn)關(guān)閉TCP連接(非持久連接),或通過 Connection: Keep-Alive 復(fù)用連接。
特點(diǎn):
無狀態(tài):每次請(qǐng)求獨(dú)立,需依賴Cookie/Session維護(hù)狀態(tài)。
明文傳輸:數(shù)據(jù)未加密,易被竊聽。
2. HTTP/3(基于QUIC協(xié)議)
作用:解決HTTP/2的隊(duì)頭阻塞問題,提升傳輸效率,基于UDP實(shí)現(xiàn)。
工作流程:
QUIC連接建立:首次連接:客戶端發(fā)送初始包(含TLS密鑰協(xié)商信息),服務(wù)器回復(fù)配置,完成1-RTT握手。后續(xù)連接:支持0-RTT,復(fù)用之前會(huì)話密鑰,直接發(fā)送加密數(shù)據(jù)。
多路復(fù)用:數(shù)據(jù)通過獨(dú)立“流(Stream)”傳輸,每個(gè)流內(nèi)數(shù)據(jù)有序,流間互不影響。避免TCP隊(duì)頭阻塞,丟包時(shí)僅重傳丟失的流。
加密與傳輸合并:默認(rèn)集成TLS 1.3,握手與數(shù)據(jù)傳輸合并,減少延遲。
特點(diǎn):
基于UDP:繞過操作系統(tǒng)內(nèi)核限制,減少延遲。
抗丟包:前向糾錯(cuò)(FEC)技術(shù)提升弱網(wǎng)環(huán)境性能。
3. HTTPS(HTTP Secure)
作用:通過TLS/SSL加密的HTTP通信,保護(hù)數(shù)據(jù)隱私與完整性。
工作流程:
TCP連接建立:客戶端與服務(wù)器三次握手(默認(rèn)端口443)。
TLS握手:客戶端發(fā)送 ClientHello(支持的TLS版本、加密套件、隨機(jī)數(shù))。服務(wù)器回復(fù) ServerHello(選定加密套件、隨機(jī)數(shù))和數(shù)字證書??蛻舳蓑?yàn)證證書合法性,生成預(yù)主密鑰,用證書公鑰加密后發(fā)送。雙方通過隨機(jī)數(shù)和預(yù)主密鑰生成會(huì)話密鑰,后續(xù)通信對(duì)稱加密。
加密數(shù)據(jù)傳輸:HTTP報(bào)文通過TLS加密后傳輸,格式為:TLS Record → Encrypted HTTP Data。
特點(diǎn):
身份驗(yàn)證:通過CA證書驗(yàn)證服務(wù)器身份。
數(shù)據(jù)加密:防止中間人攻擊、篡改和竊聽。
4. WebSocket
作用:全雙工實(shí)時(shí)通信協(xié)議,允許服務(wù)器主動(dòng)推送數(shù)據(jù)。
工作流程:
HTTP升級(jí)協(xié)商:客戶端發(fā)送HTTP請(qǐng)求,頭部包含:Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: [隨機(jī)密鑰] 服務(wù)器返回 101 Switching Protocols 響應(yīng),包含 Sec-WebSocket-Accept 驗(yàn)證通過后,升級(jí)為WebSocket連接。
數(shù)據(jù)幀傳輸:數(shù)據(jù)以幀(Frame)形式傳輸,支持文本、二進(jìn)制、Ping/Pong(?;睿┑阮愋汀?蛻舳伺c服務(wù)器可隨時(shí)主動(dòng)發(fā)送數(shù)據(jù),無需輪詢。
連接關(guān)閉:任一方發(fā)送關(guān)閉幀(Opcode 0x8)終止連接。
特點(diǎn):
低延遲:避免HTTP輪詢開銷。
持久連接:單次握手后長期保持連接。
5. TCP(傳輸控制協(xié)議)
作用:提供可靠的、面向連接的字節(jié)流傳輸。
工作流程:
三次握手建立連接:客戶端 → 服務(wù)器:SYN(序列號(hào)x)。服務(wù)器 → 客戶端:SYN-ACK(序列號(hào)y,確認(rèn)號(hào)x+1)。客戶端 → 服務(wù)器:ACK(確認(rèn)號(hào)y+1)。
數(shù)據(jù)傳輸:數(shù)據(jù)分塊為TCP段,通過滑動(dòng)窗口控制流量和擁塞。接收方對(duì)每個(gè)段發(fā)送 ACK 確認(rèn),超時(shí)未確認(rèn)則重傳。
四次揮手釋放連接:主動(dòng)方發(fā)送 FIN,被動(dòng)方回復(fù) ACK。被動(dòng)方發(fā)送 FIN,主動(dòng)方回復(fù) ACK,等待2MSL后關(guān)閉。
特點(diǎn):
可靠性:數(shù)據(jù)有序、不丟失、不重復(fù)。
高開銷:適合文件傳輸、網(wǎng)頁加載等場景。
6. UDP(用戶數(shù)據(jù)報(bào)協(xié)議)
作用:無連接的簡單傳輸協(xié)議,盡最大努力交付數(shù)據(jù)。
工作流程:
構(gòu)造數(shù)據(jù)報(bào):發(fā)送方封裝數(shù)據(jù),添加UDP頭部(源端口、目標(biāo)端口、長度、校驗(yàn)和)。
直接發(fā)送:通過IP層發(fā)送,無需建立連接。
接收處理:接收方檢查校驗(yàn)和,丟棄錯(cuò)誤包,不保證順序和完整性。
特點(diǎn):
低延遲:無握手、無重傳,適合實(shí)時(shí)應(yīng)用(如視頻通話)。
不可靠:可能丟包、亂序,需應(yīng)用層處理可靠性。
7. SMTP(簡單郵件傳輸協(xié)議)
作用:發(fā)送電子郵件,基于文本命令的客戶端-服務(wù)器協(xié)議。
工作流程:
建立TCP連接:客戶端連接服務(wù)器25端口。
命令交互:HELO:客戶端聲明身份(如 HELO example.com)。MAIL FROM:指定發(fā)件人地址。RCPT TO:指定收件人地址(可多次使用)。DATA:傳輸郵件內(nèi)容(頭部+正文,以 . 結(jié)束)。
結(jié)束傳輸:QUIT 命令關(guān)閉連接。
特點(diǎn):
純文本協(xié)議:易調(diào)試但需擴(kuò)展(如SMTPS)支持加密。
僅負(fù)責(zé)發(fā)送:需配合POP3/IMAP接收郵件。
8. FTP(文件傳輸協(xié)議)
作用:在客戶端與服務(wù)器間傳輸文件,支持目錄操作。
工作流程:
控制連接建立:客戶端連接服務(wù)器21端口,發(fā)送認(rèn)證命令(USER、PASS)。
數(shù)據(jù)連接協(xié)商:主動(dòng)模式:服務(wù)器從20端口主動(dòng)連接客戶端指定端口。被動(dòng)模式:服務(wù)器開放隨機(jī)端口,客戶端主動(dòng)連接。
文件傳輸:使用 STOR(上傳)、RETR(下載)等命令傳輸文件。支持ASCII(文本)和Binary(二進(jìn)制)模式。
關(guān)閉連接:QUIT 命令終止會(huì)話。
特點(diǎn):
雙通道設(shè)計(jì):控制命令與數(shù)據(jù)分離。
安全性低:默認(rèn)明文傳輸,需使用FTPS(FTP over SSL)加密。
總結(jié)對(duì)比
技術(shù)演進(jìn)趨勢(shì):
從明文到加密:HTTP→HTTPS,F(xiàn)TP→FTPS,SMTP→SMTPS。
性能優(yōu)化:HTTP/1.1隊(duì)頭阻塞 → HTTP/2多路復(fù)用 → HTTP/3基于UDP。
實(shí)時(shí)性提升:WebSocket替代HTTP輪詢,QUIC減少握手延遲。
理解協(xié)議的工作流程,有助于根據(jù)場景選擇合適的技術(shù)方案,平衡性能、安全性與開發(fā)成本。




