基於Socket實現的主流網絡協議彙總
前言:最近在學websocket,本來想了解一下除了websocket還有其他的沒有,後面重新學了一下
一、核心概念澄清
首先需明確:Socket(套接字)並非一種協議,而是一套用於實現網絡通信的編程接口(API)/編程規範,是應用層與傳輸層(TCP/UDP)之間的橋樑。所有基於 TCP/IP 協議簇的應用層協議,本質上都是通過 Socket 接口實現數據傳輸的。
WebSocket 僅是基於 Socket 實現的應用層協議之一,以下按傳輸層依賴分類,詳細列舉其他主流協議。
二、基於 TCP 協議的應用層協議(TCP Socket 實現)
TCP 是面向連接、可靠的傳輸層協議,適用於需保證數據完整性的業務場景,對應的應用層協議均基於 TCP + Socket 實現。
2.1 HTTP/HTTPS
- 用途:網頁瀏覽、後端接口請求、第三方開放平台交互等
- 核心信息:HTTP 默認使用 80 端口,HTTPS(加密版)默認使用 443 端口;底層基於 TCP 協議,通過 TCP Socket 建立連接並傳輸數據(支持短連接/長連接)
- 與 WebSocket 區別:HTTP 是“請求-響應”模式(半雙工,僅客户端主動發起請求後服務端才響應),WebSocket 是全雙工通信(TCP 連接建立後,雙方可主動收發數據)
2.2 FTP(文件傳輸協議)
- 用途:跨主機文件上傳、下載,支持斷點續傳、權限驗證
- 核心信息:默認使用 21 端口(控制連接,傳輸指令)+ 20 端口(數據連接,傳輸文件數據),基於 TCP Socket 實現可靠傳輸
2.3 郵件相關協議(SMTP/POP3/IMAP)
- 用途:郵件的發送與接收
-
核心信息:
- SMTP:發送郵件,默認 25 端口(明文)/ 465 端口(加密)
- POP3:接收郵件,默認 110 端口(明文)/ 995 端口(加密)
- IMAP:靈活管理郵件(如同步文件夾、標記已讀),默認 143 端口(明文)/ 993 端口(加密)
- 關聯:三者均基於 TCP Socket 實現,保證郵件數據傳輸的完整性與順序性
2.4 遠程登錄協議(Telnet/SSH)
- 用途:遠程控制服務器/網絡設備
-
核心信息:
- Telnet:明文傳輸,默認 23 端口,安全性低,現已基本淘汰
- SSH:加密傳輸,默認 22 端口,支持遠程登錄、執行命令、文件傳輸(scp/sftp 基於 SSH)
- 關聯:均通過 TCP Socket 建立穩定連接,實現客户端與遠程主機的交互
2.5 數據庫通信協議
- 用途:應用程序與數據庫的交互(執行 SQL 指令、獲取查詢結果)
- 核心信息:
- MySQL 協議:默認 3306 端口,基於 TCP Socket 建立長連接傳輸數據
- PostgreSQL 協議:默認 5432 端口,TCP Socket 實現可靠交互
- Oracle 協議:默認 1521 端口,依賴 TCP Socket 完成連接與數據傳輸
2.6 Redis 協議(RESP)
- 用途:Redis 客户端與服務端的緩存操作(增刪改查、事務等)
- 核心信息:默認 6379 端口,基於 TCP Socket 實現長連接,RESP 是 Redis 自定義的輕量化應用層協議,底層依賴 TCP 保證數據可靠傳輸
2.7 MQTT(消息隊列遙測傳輸)
- 用途:物聯網(IoT)、低帶寬場景的消息推送(如智能設備通信、消息訂閲發佈)
- 核心信息:默認 1883 端口(明文)/ 8883 端口(加密),主流基於 TCP Socket 實現,保證消息傳輸的可靠性
三、基於 UDP 協議的應用層協議(UDP Socket 實現)
UDP 是無連接、不可靠的傳輸層協議,適用於實時性要求高於可靠性的場景,對應的協議基於 UDP Socket 實現。
3.1 DNS(域名系統協議)
- 用途:將域名(如 www.baidu.com)解析為 IP 地址,是互聯網訪問的基礎
- 核心信息:默認 53 端口,核心基於 UDP Socket 實現(解析請求數據量小,優先保證實時性);若解析失敗或請求數據過大,會降級為 TCP 傳輸
3.2 DHCP(動態主機配置協議)
- 用途:給局域網設備自動分配 IP 地址、子網掩碼、網關、DNS 等網絡參數
- 核心信息:客户端使用 68 端口,服務端使用 67 端口,基於 UDP Socket 實現,無需建立連接,快速完成參數分配
3.3 TFTP(簡單文件傳輸協議)
- 用途:小型設備、局域網內的簡單文件傳輸(如路由器固件升級、嵌入式設備數據同步)
- 核心信息:默認 69 端口,基於 UDP Socket 實現,協議簡單、傳輸速度快;無權限驗證,不可靠,適合小文件傳輸
3.4 SNMP(簡單網絡管理協議)
- 用途:監控網絡設備(路由器、交換機、服務器)的狀態(如流量、負載、故障告警)
- 核心信息:默認 161/162 端口,基於 UDP Socket 實現,輕量化、實時性高,適合頻繁採集設備狀態數據
3.5 NTP(網絡時間協議)
- 用途:實現網絡設備/服務器的時間同步,保證系統時間一致性
- 核心信息:默認 123 端口,基於 UDP Socket 實現,無需可靠傳輸,優先保證時間同步的實時性
3.6 QUIC(快速 UDP 互聯網連接)
- 用途:HTTP/3 的底層傳輸協議,替代 HTTP/2 的 TCP 傳輸
- 核心信息:基於 UDP Socket 實現,融合 TCP 的可靠性(重傳、有序)與 UDP 的實時性,解決 TCP 隊頭阻塞問題,適用於視頻直播、低延遲接口請求等場景
四、基於 Raw Socket(原始套接字)的協議
Raw Socket 允許應用程序直接訪問網絡層(IP 協議),無需經過傳輸層(TCP/UDP),對應的協議多為網絡層/數據鏈路層協議。
4.1 ICMP(互聯網控制報文協議)
- 用途:網絡故障診斷(如 ping 命令)、錯誤通知(如目標不可達、超時)
- 關聯:通過 Raw Socket 實現,不依賴 TCP/UDP,直接封裝在 IP 數據包中傳輸;ping 命令本質就是發送 ICMP 請求包並接收響應包
4.2 ARP(地址解析協議)
- 用途:將 IP 地址解析為局域網內的 MAC 地址,實現局域網設備之間的直接通信
- 關聯:通過 Raw Socket 實現,屬於數據鏈路層協議,無需 IP 協議封裝,直接在局域網內廣播傳輸
五、自定義協議
除標準協議外,很多業務場景會基於 TCP Socket/UDP Socket 自定義應用層協議,例如:
- 遊戲行業:遊戲服務端與客户端的實時交互協議(如王者榮耀、和平精英的玩家操作同步、場景數據推送)
- 即時通訊:即時通訊軟件的點對點傳輸協議(如微信的部分點對點消息、文件傳輸)
- 工業控制:工業設備的網絡控制協議(如 PLC 設備的遠程控制、數據採集)
六、總結
6.1 核心邏輯
Socket 是通信接口(工具),協議是通信規則(規範);各類網絡協議通過 Socket 接口實現數據在網絡中的傳輸,二者是“工具”與“使用規則”的關係。
6.2 主流協議分類彙總
| Socket 類型(傳輸層依賴) | 對應協議 | 核心特點 |
|---|---|---|
| TCP Socket | HTTP/HTTPS、FTP、SMTP/POP3/IMAP、SSH、數據庫協議、Redis 協議、MQTT | 可靠傳輸、面向連接,適合需保證數據完整性的場景 |
| UDP Socket | DNS、DHCP、TFTP、SNMP、NTP、QUIC | 實時性高、無連接,適合對可靠性要求低但需快速傳輸的場景 |
| Raw Socket | ICMP、ARP | 直接訪問底層網絡,適用於網絡診斷、局域網通信等場景 |
6.3 與 WebSocket 的關聯
WebSocket 是 TCP Socket 上的應用層協議,與 HTTP 同級;其核心優勢是建立 TCP 連接後實現全雙工通信,而其他 TCP 類協議(如 HTTP)多為半雙工或單工通信。