Web協定
Posted on Mar 28, 2025
訊息傳遞協定
HTTP/HTTPS
- HTTP 方法:
- GET:獲取資源,不改變伺服器狀態
- POST:創建資源,提交資料
- PUT:完全替換資源
- PATCH:部分更新資源
- DELETE:刪除資源
- HEAD:僅獲取標頭資訊
- OPTIONS:查詢支援的方法
- 狀態碼分類:
- 1xx:資訊性回應 (100 Continue, 101 Switching Protocols)
- 2xx:成功(200 OK, 201 Created, 204 No Content)
- 3xx:重定向(301 Moved Permanently, 302 Found, 304 Not Modified)
- 4xx:客戶端錯誤(400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found)
- 5xx:伺服器錯誤(500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable)
- 標頭分類:
- 通用標頭:Date, Connection, Cache-Control
- 請求標頭:Host, User-Agent, Accept, Authorization
- 回應標頭:Server, Set-Cookie, Content-Type
- 實體標頭:Content-Length, Content-Encoding
- 常見 Content-Type:
- text/html:HTML 文檔
- application/json:JSON 資料
- application/xml:XML 資料
- multipart/form-data:檔案上傳
- application/x-www-form-urlencoded:表單資料
- HTTP 版本演進:
- HTTP/1.0:每次請求建立新連接
- HTTP/1.1:持久連接,管道化請求,Host 標頭
- HTTP/2:多路復用,標頭壓縮,伺服器推送,二進制分幀
- HTTP/3:基於 QUIC 協議,減少建立連接延遲,改善移動網路表現
- 快取控制機制:
- ETag:資源版本標識,強驗證器
- Cache-Control:max-age, no-cache, no-store, public, private
- Last-Modified:資源最後修改時間,弱驗證器
- If-Modified-Since:條件請求,配合 Last-Modified
- If-None-Match:條件請求,配合 ETag
- HTTPS 安全機制:
- TLS/SSL 加密:保護資料傳輸
- 證書驗證:確認伺服器身份
- HSTS:強制 HTTPS 連接
- 混合內容政策:防止 HTTP 資源洩露
- 安全與跨域:
- CORS (Cross-Origin Resource Sharing):跨來源資源共享
- Cookie 安全屬性:Secure, HttpOnly, SameSite
- CSP (Content Security Policy):內容安全政策
- CSRF 防護:跨站請求偽造防護
WebSocket
- 協議特性:
- URL 格式:ws:// (非加密) 和 wss:// (TLS 加密)
- 預設端口:80 (ws://) 和 443 (wss://)
- 基於 TCP:可靠的雙向通信
- 建立連接 (WebSocket Handshake):
- 客戶端發送帶
Upgrade: websocket
和 Sec-WebSocket-Key
的 HTTP 請求 - 伺服器回應 101 狀態碼和
Sec-WebSocket-Accept
標頭 - 連接升級完成,切換到 WebSocket 協議
- 全雙工通信:建立後可雙向即時傳輸資料,無需請求-回應模式
- 訊息框架類型:
- 文本框架:UTF-8 編碼的文本訊息
- 二進制框架:原始二進制資料
- 控制框架:Ping/Pong 心跳、連接關閉
- 連接管理:
- 心跳機制:Ping/Pong 檢測連接狀態
- 正常關閉:Close 框架協商關閉
- 異常斷開:網路中斷或應用錯誤
- 重連機制:自動重新建立連接
- 安全機制:
- Origin 檢查:防止跨站 WebSocket 劫持
- WSS 加密:TLS 保護資料傳輸
- 認證機制:透過 Cookie 或 Token 驗證
- 應用場景:
- 即時聊天應用
- 遊戲即時更新
- 實時監控系統
- 協作編輯工具
- 股票價格推送
- 直播彈幕系統
- 子協議與擴展:
- Sec-WebSocket-Protocol:指定應用層子協議
- 壓縮擴展:減少訊息大小
- 自定義協議:應用特定的通信格式
- 與其他技術比較:
- vs HTTP 長輪詢:更低延遲,減少伺服器負載
- vs Server-Sent Events:雙向 vs 單向通信
- vs Socket.IO:原生協議 vs 函式庫實作
WebRTC (Web Real-Time Communication)
- 核心 API 組件:
- MediaStream:獲取和管理音頻、視頻流
- RTCPeerConnection:建立點對點連接和媒體傳輸
- RTCDataChannel:傳輸任意資料(非媒體)
- 瀏覽器支援:
- 主流瀏覽器:Chrome, Firefox, Safari, Edge
- 移動端支援:Android Chrome, iOS Safari
- API 標準化:W3C 和 IETF 共同標準
- NAT 穿透技術:
- STUN (Session Traversal Utilities for NAT):發現公網 IP 和端口
- TURN (Traversal Using Relays around NAT):當 P2P 連接失敗時作為中繼服務器
- ICE (Interactive Connectivity Establishment):嘗試多種連接方式的框架
- 信令流程 (Signaling):
- Offer/Answer 模型:SDP (Session Description Protocol) 描述交換
- ICE Candidate 交換:網路路徑候選項協商
- 建立 P2P 連接:直接點對點通信
- 媒體協商與編解碼器:
- 視頻編解碼器:VP8, VP9, AV1, H.264
- 音頻編解碼器:Opus, G.711, G.722
- 編解碼器協商:SDP 中指定支援的格式
- 分辨率和頻寬:動態適應網路狀況
- 安全機制:
- DTLS (Datagram Transport Layer Security):資料通道加密
- SRTP (Secure Real-time Transport Protocol):媒體流加密
- 身份驗證:TURN 伺服器認證
- Origin 安全:同源政策保護
- 網路適應性:
- 頻寬偵測:動態調整媒體品質
- 錯誤恢復:封包遺失重傳
- Jitter Buffer:平滑播放延遲
- 回音消除:音頻處理
- 實際應用場景:
- 視訊會議:Zoom, Google Meet, Microsoft Teams
- 即時串流:直播平台
- 線上遊戲:低延遲多人遊戲
- 遠端桌面:螢幕共享
- IoT 通信:設備間直接通信
- 效能優化:
- 硬體加速:GPU 編解碼支援
- Simulcast:同時傳送多種解析度
- SVC (Scalable Video Coding):可擴展視頻編碼
- 連接品質監控:統計資料分析