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

tcp、http和rpc

  1. tcp是传输层协议,http和rpc是应用层协议。
  2. http和rpc的底层都是tcp。
  3. tcp三大特点:面向连接、可靠、基于字节流。
  4. 纯tcp发送的消息是基于字节流,无边界的,接收方不知道哪些字节是一条完整的消息。所以,tcp不能直接使用。可以制定一些规则(消息格式)用于区分消息边界,根据规则把每条发送的数据都包装一下。根据这些规则的不同,衍生出各种协议,例如http和rpc。
  5. 既然tcp无边界,那直接将一个消息设置为一个数据包发送不行吗?不行。为了提高数据包传输效率,网络设备会将数据包进行合并和拆分,也就是粘包和拆包。粘包是将多个小数据包合并成一个,拆包是将一个大数据包拆分成多个。例如,在路由器中使用MTU定义一个数据包的大小。
  6. 区别消息边界的规则有3种:
    • 定长消息,消息的长度固定
    • 特殊分隔符分割消息
    • TLV:在消息头部存储消息长度
  7. 服务发现:要获取某个服务,首先需要知道该服务的ip地址和端口。在http中,知道服务的域名,就可以使用dns解析域名得到ip和端口,所以dns是服务发现的一种。在rpc中,一般有专门的中间服务保存服务名和ip,例如etcd。

参考视频:
https://www.bilibili.com/video/BV1Qv4y127B4
https://www.bilibili.com/video/BV1jh4y1D7Gh


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

相关文章:

  • React中 修改 html字符串 中某些元素的属性
  • docker更改数据目录
  • 时序论文20|ICLR20 可解释时间序列预测N-BEATS
  • (六)Spark大数据开发实战:豆瓣电影数据处理与分析(scala版)
  • 阿里云centos7.9服务器磁盘挂载,切换服务路径
  • redis bind 127.0.0.1和bind 10.34.56.78的区别
  • WebSocket详细介绍
  • OPEN AI o1已经像人类一样思考了。。。
  • 【iOS】present和push
  • 【AcWing】快速排序的Go实现
  • yolo训练出现Could not load library libcudnn_cnn_train.so.8问题及解决方法
  • 从大脑图谱/ROI中提取BOLD信号
  • 简单易懂的方式来解释机器学习(ML)和深度学习(DL)的区别与联系
  • 通信工程学习:什么是DWDM密集波分复用
  • 小众语言ruby在苹果中的初步应用
  • self-play RL学习笔记
  • 【开源免费】基于SpringBoot+Vue.JS购物商城网站(JAVA毕业设计)
  • ImDisk Toolkit将一部分RAM模拟成硬盘分区
  • 更新20240915机器视觉海康Visionmaster学习步骤
  • 解决tiktoken库调用get_encoding时SSL超时
  • Redis 与数据库数据一致性保证详解
  • MySQL——数据库的高级操作(二)用户管理(5)如何解决 root 用户密码丢失
  • 【QT】自制一个简单的时钟(跟随系统时间)
  • 9.15javaweb项目总结
  • vs code: pnpm : 无法加载文件 C:\Program Files\nodejs\pnpm.ps1,因为在此系统上禁止运行脚本
  • 【计网】从零开始使用UDP进行socket编程 --- 服务端业务实现