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

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.mrgr.cn/news/24790.html

相关文章:

  • MyBatis快速入门
  • numpy(基于Numpy外文文档的学习)
  • 品读 Java 经典巨著《Effective Java》90条编程法则,第2条:遇到多个构造器参数时要考虑使用构建器
  • 1,修改图片后缀名 2,重新按顺序重命名图片 python实测有效
  • 基于SpringBoot+Vue+MySQL的实训管理系统
  • C++ 互斥锁、条件变量的基础使用
  • 初始Linux 和 各种常见指令
  • 杀毒软件 | Malware Hunter v1.189.0.816 绿色版
  • 算法知识点————背包问题【动态规划】【打家劫舍】
  • 文件IO编程
  • 鸿蒙交互事件开发04——手势事件
  • 从头开始嵌入式第三十八天(数据结构 双向链表)
  • C:字符函数与字符串函数-学习笔记
  • 继图书管理项目遗留的问题修改
  • 谷歌账号登录的时候需要手机验证,但是验证的手机号码已经注销了怎么办?
  • 思维导图神器!四款高效工具助你职场逆袭
  • 【c++】类和对象详解
  • 网络编程day05(循环服务器、并发服务器)
  • Vue3+TS项目pinia使用优化在stores目录下新建index.ts
  • GEE 将本地 GeoJSON 文件上传到谷歌资产