网络通信及RPC框架 | 青训营笔记

107 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第 8 天 。

一、知识点介绍

本节课重点为网络通信相关问题以及RPC框架的内部原理,并从编码层、传输协议层和网络通信层分析其分层设计

二、详细知识点-网络

1)网络接入-ARP协议

  • 逻辑同网段才能发送ARP
  • ARP请求广播,ARP应答单播
  • 免费ARP:当新增主机或主机新增一个ip时会发送免费ARP告知其他主机
  • ARP本质上是查找下一跳的Mac地址

2)网络传输-数据包

image.png

3)网络稳定-网络故障排查常用指令

  • dig 查询DNS问题
  • ping/telnet/nmap 查询三层/四层连通性
  • Traceroute 排查中间链路
  • iptabels 客户端防火墙
  • tcpdump

4)DNS

  • DNS记录类型 image.png
  • 常见开源DNS:bind、nsd、knot、coredns

5)加密算法

  • 对称加密:一份密钥 image.png
  • 非对称加密:公钥和私钥

image.png

三、远程函数调用RPC - Remote Procedure Calls

1.概念

  • RPC需要解决的问题:
    • 函数映射
    • 数据转换成字节流
    • 网络传输
  • 一次RPC的完整过程 image.png
  • 分层设计

image.png

2.编解码层

以Thrify的BinaryProtocol二进制编码为例子,使用TLV编码

  • Tag:标签,可以理解为类型
  • Length:长度
  • Value:值,Value也可以是个TLV结构
  • 以下为描述在IDL文件的结构体
struct Person {
    1: required string       userName,
    2: optional i64          favouriteNumber,
    3: optional list<string> interest
}

3.协议层

1)概念

  • 特殊结束符
    • 一个特殊字符作为每个协议单元结束的标识,如message body + "\r\n"
  • 变长协议
    • 以定长加不定长的部分组成,其中定长的部分需要描述不定长的内容长度,如length + message body + length + message body

2)协议构造

image.png

4.网络通信层

  • Sockets API image.png

具体的东西等后面有时间学了Kitex再来补充

一个乱入------ image.png