常见网络协议:基本概念、工作方式与应用场景
本文介绍 TCP、UDP、HTTP、HTTPS、FTP、SMTP、WebSocket 和 MQTT 等常见网络协议
打开网页、发送邮件、下载文件、实时聊天,背后都是设备之间在交换数据。不同的需求要求不同的规则:数据怎么发、对方怎么解读、丢了怎么办、谁可以先开口。
常见网络协议的层次与作用
| 协议 | 层次 | 解决的问题 | 通信方式 | 通常基于 |
|---|---|---|---|---|
TCP | 传输层 | 可靠、有序地传输数据 | 字节流 | IP |
UDP | 传输层 | 以最小开销发送独立数据 | 数据报 | IP |
HTTP | 应用层 | 请求资源并返回结果 | 请求/响应 | TCP |
HTTPS | 应用层 | 给 HTTP 加上加密与身份认证 | 请求/响应 | HTTP + TLS + TCP |
FTP | 应用层 | 上传、下载和管理远程文件 | 命令 + 数据,双连接 | TCP |
SMTP | 应用层 | 提交和转发邮件 | 命令/回复 | TCP |
WebSocket | 应用层 | 在长连接上双向推送消息 | 双向消息 | HTTP 握手 + TCP |
MQTT | 应用层 | 按主题分发消息 | 发布/订阅 | 通常是 TCP |
这些协议处于不同的层次,承担的职责也不同。
TCP 和 UDP 属于传输层,主要负责数据怎样在通信双方之间传输。
HTTP、HTTPS、FTP、SMTP、WebSocket 和 MQTT 属于应用层,主要规定具体应用怎样交换信息。
HTTPS 则是经过安全保护的 HTTP,放在应用层一起介绍。
不同层次的协议通常会配合使用。例如,FTP 约定怎样上传和下载文件,TCP 为这个过程提供可靠、有序的数据传输。
TCP:可靠、有序的数据传输
TCP(Transmission Control Protocol,传输控制协议)为应用提供可靠、有序的字节流传输,即按发送顺序交付连续的字节。
以下载图片为例:
请求下载:
下载程序与服务器建立 TCP 连接,然后请求图片。
你的电脑 → 图片服务器:请求图片
接收与保存:
服务器发送图片数据。如果中间一段丢失,接收端会暂存后续数据。发送方补传、填补缺口后,数据继续按序交付,由下载程序保存。
图片服务器 → 你的电脑:图片数据常用于文件下载、邮件传输等需要完整、有序接收数据的场景。
UDP:以数据报方式发送信息
UDP(User Datagram Protocol,用户数据报协议)发送独立的数据报,无需先建立连接,也不自行保证送达、顺序或去重。
以实时语音为例:
发送声音:
语音程序采集、编码声音,通过 UDP 发给对方。
你的设备 → 对方设备:声音数据
接收与播放:
一段声音丢失时,后面收到的数据仍可交给语音程序。程序可以补偿缺失片段,或跳过过期内容继续播放。
对方设备内:语音程序 → 扬声器适用于实时音视频和部分游戏状态更新,因为迟到的旧数据可能已经失去价值。
与 TCP 不同,UDP 不自行补齐缺失数据;应用如果需要可靠交付,可以实现确认、重传和排序。
HTTP:通过请求与响应交换内容
HTTP(Hypertext Transfer Protocol,超文本传输协议)约定客户端怎样请求资源或提交数据,以及服务器怎样返回结果。
以网站登录的请求与响应为例:
提交请求:
浏览器向登录接口提交账号和密码。
浏览器 → 网站服务器:登录请求
返回结果:
服务器验证后返回成功或失败的结果,浏览器据此显示页面或提示。
网站服务器 → 浏览器:登录结果适用于网页访问、接口调用和文件传输。它规定的是请求与响应的规则,通信中的加密保护由下一节的 HTTPS 说明。
同一连接可以被多个请求复用,一次请求与响应不必新建一次连接。
HTTPS:为 HTTP 通信提供安全保护
HTTPS 是使用 TLS 保护的 HTTP,在传输过程中提供加密、完整性保护和身份认证。
同样以网站登录为例:
建立安全连接:
浏览器验证服务器证书,并与网站完成 TLS 安全握手。
浏览器 ⇄ 网站服务器:验证身份、协商安全参数
提交与返回:
浏览器通过受保护的连接提交账号和密码,服务器返回登录结果。
浏览器 → 网站服务器:受保护的登录请求
网站服务器 → 浏览器:受保护的响应适用于日常网站、接口访问,以及登录、支付等操作。与 HTTP 相比,增加的是通信安全保护,请求与响应的业务规则仍然延续。
FTP:上传、下载和管理文件
FTP(File Transfer Protocol,文件传输协议)约定文件上传、下载及远程目录操作。
以上传图片为例:
请求上传:
客户端连接服务器并登录,通过控制连接选择目录、发起上传。
你的电脑 ⇄ FTP 服务器:命令与回复(控制连接)
传输与确认:
图片通过数据连接上传。服务器保存文件后,通过控制连接返回结果。
你的电脑 → FTP 服务器:图片内容(数据连接)
FTP 服务器 → 你的电脑:操作结果(控制连接)适用于文件交换和远程文件管理。HTTP 也能传输文件,FTP 的典型结构则是将控制命令与文件数据分开传输。
普通 FTP 本身不提供加密保护。
SMTP:提交和转发邮件
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)负责邮件提交,以及邮件服务器之间的转发。
以小明给小红发邮件为例:
提交邮件:
客户端连接发件服务器,完成所需认证并提交邮件。
小明的邮件客户端 → 发件邮件服务器:提交邮件
转发与投递:
发件服务器向相应的收件服务器转发邮件,再由对方邮件系统投递到邮箱。
发件邮件服务器 → 收件邮件服务器:转发邮件
收件服务器内:邮件投递程序 → 小红的邮箱常用于发送个人邮件,以及包含验证码、订单信息或系统告警的通知邮件。
WebSocket:持续连接上的双向消息通信
WebSocket 在客户端与服务器之间建立持续的消息通道,双方都可以主动发送消息。
以查看订单状态为例:
建立连接:
浏览器连接订单服务器,并发送要关注的订单编号。
浏览器 ⇄ 订单服务器:建立 WebSocket 连接
浏览器 → 订单服务器:关注指定订单
接收更新:
订单出库后,服务器通过已有连接发送新状态,浏览器更新页面。
订单服务器 → 浏览器:订单已出库适用于实时聊天、状态更新和协同编辑。
如果使用普通 HTTP 接口查询订单,客户端需要发起请求获取新状态;WebSocket 则允许服务器在状态变化后主动发送消息。
MQTT:按主题发布和订阅消息
MQTT 采用发布与订阅模式,由消息服务器(Broker)将消息转发给订阅相应主题的客户端。
以手机查看客厅温度为例:
建立订阅:
传感器和手机连接 Broker,手机订阅客厅温度主题。
手机应用 → Broker:订阅客厅温度
发布与接收:
传感器向该主题发布 26.5℃,Broker 将消息转发给手机。
温度传感器 → Broker:发布温度
Broker → 手机应用:转发温度适用于智能家居、设备上报和消息分发。
多个设备可以订阅同一个温度主题。传感器只需向该主题发布消息,由 Broker 分别转发给订阅者,无需逐个联系接收设备。
总结
这些协议解决的问题不同:TCP 提供可靠、有序的传输,UDP 将所需的可靠性处理留给应用;HTTP 组织请求与响应,WebSocket 支持双方主动发送消息,MQTT 则通过主题组织消息分发。
不同职责的协议可以配合使用。例如,FTP、SMTP 规定文件和邮件怎样交换,TCP 提供底层传输;HTTPS 保留 HTTP 的请求与响应规则,通过 TLS 增加安全保护。
从业务需求理解协议的用途,从职责分工理解协议的配合,就能看清为什么采用某个协议,以及一次通信为什么会涉及多个协议。
版权所有
版权归属:念宇
