基于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)多为半双工或单工通信。