趣谈网络协议-笔记(4)

第二十二节 VPN
  • VPN经过隧道技术在公众网络上仿真一条点到点的专线,是使用一种协议传输另外一种协议的技术。涉及三种协议:乘客协议、隧道协议、承载协议。
  • IPsec VPN: 基于IP协议的安全隧道协议
    • 私密性:IKE(因特网密钥交换协议),对称加密,但要交换一个密钥。
    • 完整性:hash校验
    • 真实性:身份认证redis


      img_ef3a8be06099d83c443a26c783296374.jpe
  • MPLS VPN:多协议标签交换VPN。可以根据标签转发的路由器称为LSR(标签交换路由器)。主要解决的问题是:每次ip包都要从新寻路致使速度较慢
第二十三节 手机网络
  • 2G:不是ip网络,而是电话网络,走模拟信号。收发无线信号,与基站通讯。
  • 2.5G:加入分组交换业务,支持packet的转发,从而支持ip网络。
  • 3G:W-CDMA
  • 4G:eNodeB, MME, SGW, PGW
第二十四节 虚拟机技术
  • 虚拟网卡:网络包 -> 文件流 -> 网络包spring


    img_5a0809c7a6cd0d7e2e5eacb106dbd6ca.jpe
  • 虚拟网卡链接到云
    • 互通:brctl命令,建立虚拟交换机br0docker


      img_0dbc164d7de92b25ccd5610528bb0b7d.jpe
    • 共享
      • 桥接:将网络打平编程


        img_5c020d98b4b44b4373a1deec44c46001.jpe
      • NATjson


        img_141fe3e6add77f764df99f9e89073ab4.jpe
    • 隔离: 虚拟网桥支持vlan功能
    • 灵活
第二十五节 软件定义网络SDN

控制面和数据面分离。一种开源的虚拟交换机实现:OpenvSwitch。能够解耦物理网络和虚拟网络缓存


img_f820e3eda729dd9a42f06bdb7880e75f.jpe
第二十六节 云中网络安全
  • PREROUTING,INPUT,FORWARD,OUTPUT, POSTROUTING安全


    img_d21a08e0afff76800712bae1ba630c1c.jpe
  • 内核模块ip_tables(用户态即为iptables),在五个节点上埋下hook函数,按功能分四大类restful

    • 链接跟踪conntrack
    • 数据包过滤filter
    • 网络地址转换nat
    • 数据包修改mangle
  • 安全组markdown


    img_25b51296a1cb7ce47a97a57ad6d33a4b.jpe
第二十七节 流量控制技术QoS(Quality of Service)
  • 无类别排队规则
  • 基于类别的队列规则
第二十八节 云中网络隔离GRE、VXLAN
  • Underlay网络:底层的物理网络设备
  • Overlay:虚拟机和云中的这些技术组成的网络
  • GRE:generic routing encapsulation,是一种ip-over-ip(点对点)的隧道技术
    • 缺点:
    • 不支持组播
    • tunnel数量会随节点数爆炸增加
    • 一些防火墙和三层网络设备没法解析gre,进而没法作过滤和负载均衡
  • VXLAN网络


    img_38d7feaf110b51230515ed7230c1809d.jpe
第二十九节 容器网络
  • 看起来隔离的技术:namespace。每一个namespace中的应用看到的是不一样的IP地址,用户空间,进程号
  • 用起来隔离的技术:cgroup。一个应用只能使用整台机器的部分cpu、内存
  • 容器网络如何融入物理网络


    img_81d5613e28d0251f8c274c16c5baece4.jpe
  • docker端口映射实现方式:docker-proxy,DNAT

第三十节 容器网络之Flannel:每人一亩三分地

  • Flannel是跨节点网络容器之一,两种方式:
    • 使用UDP在用户态封装


      img_8af857a443a1f7917f3d42682d6b3a7a.jpe
    • VXLAN,内核态封装,性能更好

第三十一节 容器网络之Calico

  • Calico思路:不走Overlay网络(会引入性能损耗),将转发所有用三层网络的路由转发来实现。
  • 路由配置组件Felix: 容器加入或删除后,发出相关通知。使用BGP协议广播


    img_f0d555d82afac34079fc134fd1313b27.jpe
  • IPIP模式:隧道模式,点对点通讯,用于物理机跨网段的状况

第三十二节 RPC协议

基于socket编程
一篇论文:Implementing Remote Procedure Calls by Bruce Jay Nelson


img_04557b2c49389e55a18d08be18b84e1e.jpe
  • 协议约定问题

    • 问题一:如何规定远程调用的语法
    • 问题二:如何传递参数
    • 问题三:如何表示数据
  • 传输问题:出错、重传、丢包、性能等。使用队列、拥塞窗口等,异步机制。状态机。

  • 服务发现问题:注册中心

第三12、三十三节 SAOP协议,RESTful规范

  • SOAP:simple object access protocol,基于xml。主要解决原先二进制RPC格式过于严格、不面向对象的问题(服务端增删该任何一个字段,客户端都必须更新),是一种基于文本的调用方式
  • RESTful:基于json。是一种架构模式,面向资源,无状态,利于横向扩展

第三十四节 二进制rpc协议

  • 典型的大规模电商应用


    img_fe7438d48d368a1cd4b81c911d757a88.jpe
    • 缓存和持久化层:db,es,redis
    • 基础服务层:缓存和持久化层之上,一些原子化的接口
    • 组合层:组合调用基础服务,实现复杂的逻辑
    • controller层:对外restful接口
  • dubbo框架
    • 序列化协议:默认hessian2,自描述
    • 传输:netty


      img_0f227dfbc51aaa78e643a38ea3d7e973.jpe
  • 二进制框架缺点:可能循环依赖,必须共享jar,关系复杂时jar依赖难以维护
  • 解决方案:
    • 一:严格的项目管理流程:
      • 不容许循环调用、跨层调用
      • 接口兼容性
      • 升级时先升服务端,而后客户端
    • 二:使用spring cloud这种restful的rpc,大不了加机器

第三十五节 跨语言rpc

  • 对RPC的要求愈来愈多

    • 性能
    • 跨语言
    • 灵活
    • 服务治理,像dubbo和spring cloud那样
  • GRPC

    • 序列化协议是protocol buffers
    • 跨语言:经过工具生成各语言的stub程序
    • 网络传输:netty channel做为数据通道,每一个请求都被封装成http2.0的stream
    • Envoy:负载均衡器,高性能的Proxy转发器
  • service mesh:服务治理抽象到平台层解决,应用自己无感


    img_266fab54b15a8e7fd6203f28aa034f8d.jpe