一、TCP/IP協(xié)議(傳輸控制協(xié)議)
1. 核心特性
- 面向連接:通信前需通過"三次握手"建立連接,結(jié)束時通過"四次揮手"斷開。
- 可靠傳輸:通過確認應(yīng)答(ACK)、超時重傳、流量控制(滑動窗口)、擁塞控制(慢啟動、擁塞避免)確保數(shù)據(jù)不丟失、不重復(fù)、按序到達。
- 全雙工通信:支持雙向數(shù)據(jù)傳輸。
- 字節(jié)流傳輸:數(shù)據(jù)被看作無結(jié)構(gòu)的字節(jié)流,需應(yīng)用層處理消息邊界。
2. 協(xié)議棧層級
graph LR
A[應(yīng)用層 HTTP/FTP] --> B[傳輸層 TCP]
B --> C[網(wǎng)絡(luò)層 IP]
C --> D[鏈路層 Ethernet]
3. 典型應(yīng)用場景
- 網(wǎng)頁瀏覽(HTTP)、文件傳輸(FTP)、電子郵件(SMTP)、數(shù)據(jù)庫連接等需要高可靠性的場景。
4. 關(guān)鍵參數(shù)
- 端口號(21/22/80等)、序列號(Seq)、確認號(Ack)、窗口大小(Window Size)。
二、UDP/IP協(xié)議(用戶數(shù)據(jù)報協(xié)議)
1. 核心特性
- 無連接:無需建立連接,直接發(fā)送數(shù)據(jù)包。
- 不可靠傳輸:不保證數(shù)據(jù)到達、不保證順序、無重傳機制。
- 高效性:頭部僅8字節(jié)(TCP至少20字節(jié)),無連接管理開銷。
- 支持廣播/多播:可同時向多個主機發(fā)送數(shù)據(jù)。
2. 與TCP對比
| 特性 | TCP | UDP |
|---|---|---|
| 連接方式 | 面向連接 | 無連接 |
| 可靠性 | 可靠 | 不可靠 |
| 傳輸效率 | 較低(約60-70%) | 高(接近100%) |
| 適用場景 | 網(wǎng)頁、文件傳輸 | 視頻流、DNS查詢 |
3. 典型應(yīng)用場景
- 實時視頻/音頻(Zoom、抖音)、DNS查詢、在線游戲(王者榮耀)、物聯(lián)網(wǎng)傳感器數(shù)據(jù)。
三、HTTP協(xié)議(超文本傳輸協(xié)議)
1. 核心特性
- 無狀態(tài):服務(wù)器不記錄客戶端狀態(tài)(依賴Cookie/Session彌補)。
- 明文傳輸:請求/響應(yīng)頭和數(shù)據(jù)均未加密。
- 基于TCP:默認端口80,需先建立TCP連接。
- 請求-響應(yīng)模型:客戶端發(fā)起請求,服務(wù)器返回響應(yīng)。
2. 工作流程
sequenceDiagram
Client->>Server: GET /index.html HTTP/1.1
Server->>Client: HTTP/1.1 200 OK + 網(wǎng)頁數(shù)據(jù)
3. 版本演進
- HTTP/1.1:持久連接(Keep-Alive)、管道化(Pipelining)。
- HTTP/2:二進制分幀、多路復(fù)用、頭部壓縮。
- HTTP/3:基于QUIC(UDP實現(xiàn)),解決隊頭阻塞。
四、HTTPS協(xié)議(安全超文本傳輸協(xié)議)
1. 核心改進
- 加密傳輸:通過SSL/TLS加密數(shù)據(jù),防竊聽、篡改。
- 身份認證:CA證書驗證服務(wù)器身份,防中間人攻擊。
- 默認端口443,兼容HTTP協(xié)議。
2. TLS握手流程
sequenceDiagram
Client->>Server: ClientHello(支持加密套件)
Server->>Client: ServerHello(選定加密套件)+ 證書
Client->>Server: 預(yù)主密鑰(用證書公鑰加密)
Server->>Client: 切換加密通信
3. 加密技術(shù)
- 對稱加密(AES):加密通信內(nèi)容。
- 非對稱加密(RSA/ECC):交換對稱密鑰。
- 哈希算法(SHA-256):驗證數(shù)據(jù)完整性。
五、協(xié)議對比總結(jié)
| 協(xié)議 | 傳輸層 | 可靠性 | 加密性 | 典型應(yīng)用 |
|---|---|---|---|---|
| TCP/IP | TCP | 可靠 | 無 | 網(wǎng)頁、郵件、SSH |
| UDP/IP | UDP | 不可靠 | 無 | 直播、游戲、VoIP |
| HTTP | TCP | 可靠 | 無 | 普通網(wǎng)頁瀏覽 |
| HTTPS | TCP | 可靠 | 有 | 支付、登錄等安全場景 |
六、iOS開發(fā)中的實際應(yīng)用
-
TCP使用場景:
- 即時通訊消息收發(fā)(如微信文字消息)。
- 需要可靠傳輸?shù)腁PI請求(如銀行交易)。
-
UDP使用場景:
- 音視頻通話(集成聲網(wǎng)SDK)。
- 實時游戲狀態(tài)同步(如王者榮耀位置同步)。
-
HTTPS強制要求:
- App Transport Security (ATS) 要求iOS應(yīng)用默認使用HTTPS。
- 例外域名需在
Info.plist中配置NSExceptionDomains。
通過理解這些協(xié)議的特性,開發(fā)者可以更合理地選擇網(wǎng)絡(luò)方案(如直播用UDP+QUIC,支付用HTTPS+TCP),并優(yōu)化App的網(wǎng)絡(luò)性能與安全性。