当前位置: 首页 > article >正文

TCP、HTTP以及RPC的梳理

TCP:一种面向连接的、可靠的、基于字节流的协议

  1. 原生 TCP 和粘包问题
    TCP 是一种面向连接的、可靠的传输层协议,负责在网络上发送字节流数据。它提供了流量控制、错误检测和重传等机制,但并不对应用层的数据进行分隔或解析。
    粘包问题:由于 TCP 是面向字节流的,它无法区分不同的数据包边界。这会导致多个数据包被“粘”在一起,接收端必须通过应用层协议来处理数据边界。
  2. 协议层次与数据分隔
    协议:为了处理 TCP 的粘包问题,各种应用层协议定义了数据的格式和分隔规则。例如,HTTP 和 RPC 都在 TCP 上运行,但它们使用不同的方式来定义和管理消息格式。
    Header 和 Body:许多协议(包括 HTTP 和 RPC)使用头部(Header)和主体(Body)来组织数据。头部通常包含元数据(如内容类型、长度、编码等),而主体包含实际的数据负载。
  3. HTTP 和 RPC
    HTTP:是一个应用层协议,用于在客户端和服务器之间传输数据。HTTP/1.1 和 HTTP/2 支持持久连接(即连接复用),可以提高性能。HTTP 定义了多种请求方法(如 GET、POST、PUT、DELETE)和数据格式(如 JSON、XML)。

HTTP/2 引入了二进制分帧、流量控制和头部压缩等改进,进一步优化了性能。
RPC (Remote Procedure Call):是一种通信协议,允许在网络上调用远程服务器上的函数或过程。RPC 的目标是使远程服务调用像本地服务调用一样方便。RPC 本身不是一个具体的协议,而是一种模式,可以使用多种底层协议来实现,如 HTTP、gRPC、Thrift 等。

HTTP 和 RPC 的关系:RPC 可以使用 HTTP 作为传输协议(例如,JSON-RPC 和 XML-RPC),或者使用其他协议(如 gRPC 使用 HTTP/2)。RPC 聚焦于简化远程调用,而 HTTP 聚焦于传输数据和资源。

参考链接:https://juejin.cn/post/7121882245605883934


http://www.kler.cn/a/282523.html

相关文章:

  • 一文详细深入总结服务器选型
  • 数仓建设之Oracle常见语法学习
  • 利用OpenAI进行测试需求分析——从电商网站需求到测试用例的生成
  • 解决部署RKE2或K3S-“docker.io/rancher/mirrored-pause:3.6\“: -无法拉取镜像办法
  • Android ART知多少?
  • DB-GPT系列(四):DB-GPT六大基础应用场景part1
  • Python将Word文档转为PDF
  • npm报错信息集合——基础积累
  • vue3如何监听reactive对象是哪个属性发生的变化
  • 东华医疗协同办公系统templateFile接口存在任意文件读取漏洞 附POC
  • 我的电脑/资源管理器里无法显示新硬盘?
  • Lua收集请求日志
  • 全栈程序员 | 精通安卓、鸿蒙,小程序,Java、Vue.js、SpringBoot及更多技术
  • Git之1.7版本重要特性及用法实例(五十五)
  • 今日算法:蓝桥杯基础题之“微生物增殖”
  • 网络安全面试经验80篇
  • C#命名空间(Namespace)
  • 如何本地搭建 Whisper 语音识别模型?一文解决
  • Vulkan入门系列16 - 生成多级纹理贴图( Mipmaps)
  • Git之1.6版本重要特性及用法实例(五十四)
  • 请你学习:前端布局3 - flex
  • 实训day36(8.26)
  • 概率论与高等数学、线性代数的联系及应用
  • 虚幻5|技能栏优化(1)---优化技能UI,并添加多个技能
  • 问:JAVA接口和抽象类有哪些差异?
  • 四十五、【人工智能】【机器学习】- Robust Regression(稳健回归)