常见通信协议详解:TCP、UDP、HTTP/HTTPS、WebSocket 与 RPC

在现代网络通信中,各种协议扮演着至关重要的角色,它们决定了数据如何在网络中传输、控制其可靠性、实时性与适用场景。对于开发者而言,理解这些常见的通信协议,不仅有助于更好地设计系统架构,还能在面对不同业务需求时选择最合适的技术方案。

本文将详细介绍五种常见的通信协议:​TCP、UDP、HTTP/HTTPS、WebSocket 以及 RPC(如 gRPC、Dubbo)​,从基本概念、工作原理、优缺点到典型应用场景,帮助你全面掌握这些协议的核心知识。

一、TCP(Transmission Control Protocol,传输控制协议)

  1. 基本概念
    TCP 是一种面向连接的、可靠的、基于字节流的传输层协议。它为应用层提供了一种可靠的数据传输服务,确保数据能够准确无误、按序到达接收方。

  2. 工作原理
    TCP 通过以下机制保证可靠性:

•​三次握手建立连接​:确保通信双方都具备发送和接收能力。
•​数据分片与重组​:将应用层数据分成多个报文段进行传输。
•​确认应答(ACK)机制​:接收方收到数据后会发送确认消息。
•​超时重传​:如果发送方在一定时间内未收到 ACK,将重新发送数据。
•​流量控制​:通过滑动窗口机制防止接收方被淹没。
•​拥塞控制​:根据网络状况动态调整发送速率,避免网络过载。
3. 特点
•​可靠传输​:确保数据完整、有序到达。
•​面向连接​:通信前需先建立连接(三次握手)。
•​基于字节流​:不保留消息边界,需要应用层自行处理粘包/拆包。
•​速度相对较慢​:由于需要保证可靠性,增加了控制开销。
4. 常见应用场景
•​HTTP / HTTPS​:Web 页面浏览、API 调用。
•​RPC(远程过程调用)​​:如 Dubbo、gRPC 底层通常基于 TCP。
•​数据库连接​:如 MySQL、PostgreSQL 等都通过 TCP 连接。
•​文件传输​:如 FTP、自定义文件上传服务等。
二、UDP(User Datagram Protocol,用户数据报协议)

  1. 基本概念
    UDP 是一种无连接的、不可靠的、基于数据报的传输层协议。与 TCP 不同,它不保证数据的可靠传输,但具有更低的延迟和更高的传输效率。

  2. 工作原理
    •​无连接​:通信前不需要建立连接,直接发送数据。
    •​无确认机制​:发送后不关心是否到达,也没有重传机制。
    •​无拥塞控制​:可以以任意速率发送数据,适合实时性要求高的场景。

  3. 特点
    •​不可靠传输​:不保证数据一定能到达,也不保证顺序。
    •​无连接​:不需要三次握手,开销小,连接建立快。
    •​传输速度快​:没有重传、确认等控制机制,延迟低。
    •​基于数据报​:每个数据包是独立的,保留了消息边界。

  4. 常见应用场景
    •​实时音视频传输​:如 VoIP、视频会议,允许少量丢包。
    •​在线游戏​:对实时性要求高,可以容忍部分数据丢失。
    •​DNS 查询​:快速解析域名,不需要复杂连接。
    •​直播流媒体​:如 HLS 或某些 RTP/RTSP 协议底层使用 UDP。
    •​物联网(IoT)​​:某些传感器数据传输,允许偶尔丢包。
    三、HTTP / HTTPS(HyperText Transfer Protocol / Secure)

  5. 基本概念
    HTTP 是一种应用层协议,用于在客户端(如浏览器)和服务器之间传输超文本(如 HTML 页面)。HTTPS 则是在 HTTP 基础上增加了 ​SSL/TLS 加密层,用于保障通信的安全性。

  6. 工作原理
    •​HTTP​ 基于 ​请求-响应模型,客户端发起请求,服务器返回响应。
    •​HTTPS = HTTP + SSL/TLS,通过加密保证数据传输的机密性、完整性和身份认证。

  7. 特点
    特性 HTTP HTTPS
    是否加密 否 是(SSL/TLS)
    端口 80 443
    安全性 低,易被窃听、篡改 高,防窃听、防篡改、防中间人攻击
    传输内容 明文 密文
    SEO 友好性 较低(现代搜索引擎已优化) 更高,搜索引擎优先收录 HTTPS 站点

  8. 特点总结
    •​应用层协议,常用于 Web 页面、API 接口交互。
    •​无状态协议​:每个请求独立,不记录上下文(通常通过 Cookie/Session 补充)。
    •​支持多种数据格式​:如 JSON、XML、HTML、二进制流等。
    •​HTTPS 是当前 Web 的标准,几乎所有网站都应启用 HTTPS。

  9. 常见应用场景
    •​网页浏览​:所有浏览器与 Web 服务器的交互。
    •​RESTful API​:前后端分离架构中的接口通信。
    •​移动应用后端接口​:App 与服务器的数据交互。
    •​微服务间调用(部分场景)​​:如内部管理后台调用服务接口。
    四、WebSocket

  10. 基本概念
    WebSocket 是一种在 ​单个 TCP 连接上进行全双工通信​ 的协议,属于 ​应用层协议。它使得客户端和服务器之间可以建立长连接,并实现实时双向数据传输。

  11. 工作原理
    •基于 HTTP 协议进行握手升级​(HTTP Upgrade),然后切换为 WebSocket 协议通信。
    •建立连接后,​客户端和服务器可随时主动发送数据,不再需要客户端轮询。

  12. 特点
    •​长连接​:一次握手后保持连接,避免重复建立连接的开销。
    •​全双工通信​:客户端和服务器可以同时发送数据。
    •​低延迟​:相比 HTTP 轮询,实时性更高。
    •​基于 TCP​:可靠性由 TCP 保证。

  13. 常见应用场景
    •​实时聊天系统​:如在线客服、社交软件中的即时消息。
    •​实时通知​:如订单状态变更、系统告警推送。
    •​在线协作工具​:如协同编辑文档、白板工具。
    •​实时数据展示​:如股票行情、物联网设备监控面板。
    五、RPC(Remote Procedure Call,远程过程调用)

  14. 基本概念
    RPC 是一种跨网络调用远程服务方法的技术,让开发者可以像调用本地函数一样调用远程服务,​隐藏了底层网络通信的复杂性。

常见的 RPC 框架包括:

•​gRPC​:由 Google 开发,基于 HTTP/2 和 Protocol Buffers,支持多语言,性能高。
•​Dubbo​:阿里巴巴开源的 Java RPC 框架,广泛用于微服务架构。
•​Thrift​:Facebook 开源,支持多语言,常用于跨语言服务调用。
•​Hessian、JSON-RPC​ 等轻量级 RPC 方案。
2. 工作原理
•客户端调用本地代理(Stub/Proxy),代理将调用信息序列化后通过网络发送到服务端。
•服务端接收请求,反序列化后调用实际方法,再将结果返回给客户端。
3. 特点
•​透明调用​:开发者无需关心底层网络通信细节。
•​高性能​:通常采用二进制协议(如 Protobuf),序列化效率高。
•​支持服务治理​:如 Dubbo 提供服务注册与发现、负载均衡、熔断等能力。
•​多语言支持​:主流 RPC 框架支持跨语言调用(如 gRPC)。
4. 常见应用场景
•​微服务架构中的服务间通信​:服务 A 调用服务 B 的接口。
•​分布式系统​:如大数据平台、后台管理系统等模块间交互。
•​高并发、低延迟需求场景​:如实时计算、风控系统等。
六、协议对比总结
协议 类型 可靠性 连接方式 传输层/应用层 主要特点 典型应用场景
​TCP​ 传输层协议 高 面向连接 传输层 可靠、有序、基于字节流 HTTP、RPC、数据库
​UDP​ 传输层协议 低 无连接 传输层 快速、低延迟、允许丢包 视频、游戏、直播
​HTTP​ 应用层协议 中 无状态、短连接 应用层 明文传输、简单通用 网页浏览、API 调用
​HTTPS 应用层协议 高 无状态、短连接 应用层 + SSL/TLS 加密传输、安全可靠 安全 Web 服务、API
​WebSocket​ 应用层协议 中高 长连接、全双工 应用层(基于 TCP) 实时双向通信 实时聊天、推送
​RPC​ 通信机制/框架 高 通常基于 TCP 应用层(封装) 跨网络透明调用、高性能 微服务、分布式系统
七、结语
不同的通信协议适用于不同的业务场景。在实际系统设计与开发中,开发者应根据具体需求(如可靠性、实时性、安全性、性能等)选择最合适的协议:

•需要可靠传输与顺序保证​ → 选择 ​TCP​
•需要低延迟和实时性​ → 选择 ​UDP​
•想要安全地传输网页或 API 数据​ → 使用 ​HTTPS​
•需要长连接与实时双向通信​ → 采用 ​WebSocket​
•希望像调用本地方法一样调用远程服务​ → 使用 ​RPC 框架(如 gRPC、Dubbo)​​
理解这些协议的特点与适用场景,是构建高性能、高可用、可扩展系统的基础。希望本文能帮助你深入理解这些常见协议,在实际工作中做出更合理的技术选型与架构设计。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/92931.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/92931.shtml
英文地址,请注明出处:http://en.pswp.cn/web/92931.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

部署一个自己的音乐播放器教程

以下以部署 YesPlayMusic 为例,介绍两种常见的部署方法,一种是通过 Node.js 和 Git 在 Windows 系统上部署,另一种是通过 Docker 在 Linux 系统上部署。具体步骤如下:Windows 系统部署(基于 Node.js 和 Git&#xff09…

FFMPEG将H264转HEVC时,码率缩小多少好,以及如何通过SSIM(Structural Similarity Index结构相似性指数)衡量转码损失

最近整理一些视频,我发现太多了,就想把一些本来就需要转码的视频缩小一下。因为转码的时候为了弥补损失,我将码率增大了 10-20%,但是如果将 H264 转 HEVC(当然也可以是其他格式),那么或许不用增…

前端,route路由

路由定义与导航动态路由匹配&#xff1a;参数传递&#xff08;/user/:id&#xff09;嵌套路由配置与 <router-view> 层级渲染编程式导航&#xff1a;router.push、router.replace 和 router.go路由守卫与权限控制全局守卫&#xff1a;beforeEach、beforeResolve、afterEa…

Kubernetes网络原理深度解析

Kubernetes网络原理深度解析 1 Kubernetes网络模型 Kubernetes 网络模型是其实现容器化应用高效通信的基础框架。它致力于解决容器编排环境中复杂的网络连通性、服务发现与负载均衡等问题&#xff0c;追求让容器、Pod 等网络端点像传统主机网络一样简洁、可预测地通信 。其核心…

Python3.10 + Firecrawl 下载 Markdown 文档:构建高效通用文章爬虫

在信息爆炸的时代&#xff0c;从各种网站收集和整理文章内容已成为许多开发者和研究人员的常见需求。无论是为了内容聚合、数据分析还是知识管理&#xff0c;一个高效、稳定的通用文章爬虫都是不可或缺的工具。 本文将详细介绍如何使用 Python 3.10 结合 Firecrawl API 构建一个…

国产3D大型装配设计新突破②:装配约束智能推断 | 中望3D 2026

本文为CAD芯智库整理&#xff0c;未经允许请勿复制、转载&#xff01;→ www.xwzsoft.com/h-nd-605.html中望3D2026亮点速递之【装配篇】已经介绍了设计效率的提升&#xff0c;今天将分享的是中望3D2026【装配约束智能推断】&#xff0c;也预告一下第三篇是讲解【组件复用效率提…

深入浅出设计模式——行为型模式之观察者模式 Observer

文章目录1.观察者模式简介2.观察者模式结构3.观察者模式代码实例3.0.公共头文件3.1.观察者3.1.1.抽象观察者Observer3.1.2.具体观察者Player3.2.目标类3.2.1.抽象目标AllyCenter3.2.2.具体目标AllyCenterController循环包含错误示例“前向声明什么时候不够、必须 #include 对方…

CA证书、SSL加速器、HTTPS、HTTP和域名之间的关系

理解CA证书、SSL加速器、HTTPS、HTTP和域名之间的关系对于构建安全、高效的网站至关重要。它们共同构成了现代安全网络通信的基础。下面是它们各自的概念以及它们之间的关系&#xff1a;域名 概念&#xff1a; 人类可读的网站地址&#xff08;如 www.example.com&#xff09;。…

3D感知多模态(图像、雷达感知)

一.BEVFusion1.简要介绍BEV是一个俯视空间&#xff0c;Fusion做的就是融合&#xff0c;这里指的就是图像和点云的融合。那如何把图像和点云融合在一起&#xff1f;认为融合方法有三种&#xff1a;a.point level fusion:点集的融合&#xff0c;从点云中采样一些点,再根据相机的内…

STM32 HAL库驱动W25QXX Flash

STM32 HAL库驱动W25QXX Flash 1. 概述 W25QXX系列是一种SPI接口的Flash存储器&#xff0c;广泛应用于嵌入式系统中作为数据存储设备。本文档详细介绍了基于STM32 HAL库的W25QXX Flash驱动实现&#xff0c;包括硬件连接、驱动函数实现以及使用示例。 项目源码仓库&#xff1a…

Vivado自定义IP核学习笔记

文章目录【1】创建一个新的IP核【2】实现功能【3】编辑IP核【4】IP封装【5】创建Vivado工程【1】创建一个新的IP核 1.1 打开Vivado->点击【Tasks->Manage IP->New IP Location】->弹出窗口1.2 【Next】->设置IP属性->【Finish】->【OK】 【IP Location】…

【面试】高级开发面试场景题

1、如何保证MySql到ES的数据一致性? 答:ES是一个开元分布式搜索和分析引擎、它提供了全文搜索、结构化搜索分析以及这些组合的能力。 全文搜索能力:ES支持复杂的搜索能力,包括模糊匹配、短语查询、布尔查询等,并且可以快速的返回结果 实时数据分析:实时数据分析,支持对…

《 慢 SQL 分析与 SQL 优化实战指南》

&#x1f50d; 慢 SQL 分析与 SQL 优化实战指南、 &#x1f9e0;前言 在数据库性能调优中&#xff0c;慢 SQL 是性能瓶颈的常见元凶。 一次慢查询可能会拖垮整个业务线程池&#xff0c;甚至引发锁等待、雪崩效应。 对后端开发与 DBA 而言&#xff0c;快速定位并优化慢 SQL&am…

C#中如何运用JWT用户认证

一、JWT概述JSON Web Token&#xff08;JWT&#xff09;是一种轻量级的身份认证机制&#xff0c;广泛应用于分布式系统中的用户认证。它通过紧凑的JSON格式存储用户身份信息&#xff0c;并使用数字签名确保信息的完整性和真实性。与传统的基于Session的认证相比&#xff0c;JWT…

Hibernate 使用详解

在现代的Java开发中&#xff0c;数据持久化是一个至关重要的环节。而在众多持久化框架中&#xff0c;Hibernate以其强大的功能和灵活性&#xff0c;成为了开发者们的首选工具。本文将详细介绍Hibernate的原理、实现过程以及其使用方法&#xff0c;希望能为广大开发者提供一些有…

【图像算法 - 13】基于 YOLO12 与 OpenCV 的实时目标点击跟踪系统(系统介绍 + 源码详细)

基于 YOLO12 与 OpenCV 的实时点击目标跟踪系统 在计算机视觉领域&#xff0c;目标检测与跟踪是两个核心任务。本文将介绍一个结合 YOLO 目标检测模型与 OpenCV 跟踪算法的实时目标跟踪系统&#xff0c;该系统允许用户通过鼠标交互选择特定目标进行持续跟踪&#xff0c;支持多…

【数据库】 MySQL 表的操作详解

在 MySQL 数据库的日常开发与维护中&#xff0c;表的操作是最基础且最常用的部分。本文将从 创建表、查看表结构、修改表 以及 删除表 等方面进行详细讲解&#xff0c;并附上对应的 SQL 语句示例&#xff0c;方便在实际项目中直接应用。一、创建表 1.1 创建表语法 CREATE TABLE…

DiT: Transformer上的扩散模型

论文&#xff08;ICCV 2023&#xff09;&#xff1a;Scalable Diffusion Models with Transformers 代码和工程网页&#xff1a;https://www.wpeebles.com/DiT.html DiTs&#xff08;Diffusion Transformers&#xff09;是首个基于Transformer架构的扩散模型&#xff01;它在…

MySQL 索引:索引为什么使用 B+树?(详解B树、B+树)

文章目录一、二叉查找树(BST)&#xff1a;不平衡二、平衡二叉树(AVL)&#xff1a;旋转耗时三、红黑树&#xff1a;树太高由一个例子总结索引的特点基于哈希表实现的哈希索引高效的查找方式&#xff1a;二分查找基于二分查找思想的二叉查找树升级版的BST树&#xff1a;AVL 树四、…

ESP32入门开发·VScode空白项目搭建·点亮一颗LED灯

目录 1. 环境搭建 2. 创建项目 3. 调试相关介绍 4. 代码编写 4.1 包含头文件 4.2 引脚配置 4.3 设置输出电平 4.4 延时函数 4.5 调试 1. 环境搭建 默认已经搭建好环境&#xff0c;如果未搭建好可参考&#xff1a; ESP32入门开发Windows平台下开发环境的搭建…