目录

  • 访问浏览器的一次行为
  • 网络协议栈
  • 各自解决的问题
  • 关于生产与拓展
  • HTTP协议的性能
  • RPC框架
  • "第四点五层" service mesh


访问浏览器的一次行为

bios网络协议栈要开吗 bios网络协议栈用处_bios网络协议栈要开吗

  • 上图大致回答了一个经典问题:用户从浏览器地址栏输入一个网站首页后,系统和网络中发生了什么。
  • 其中无论是DNS解析,TCP连接建立还是HTTP请求,都要经过复杂的网络拓扑。
  • 网络协议栈就是对复杂的网络通信进行抽象,每层协议职责分明解决其需要应对的具体问题。层与层之间以服务的方式屏蔽底层复杂度。

网络协议栈

bios网络协议栈要开吗 bios网络协议栈用处_bios网络协议栈要开吗_02

各自解决的问题

7层?5层?4层? 怎么划分不重要。关注下层次解决的问题就好了。以五层网络协议栈为例:

  • 物理层:屏蔽物理介质的机械、电气、过程、功能差异。作用范围在物理介质两端。
    比如:
  • 用双绞线还是铜线,光纤还是无线。电压电流代表什么意思。物理信道如何复用(波分、码分、频分)等问题
  • 数据链路:取上层数据封装成帧,提供差错校验,透明传输的功能。简单理解就是作用范围在局域网(以太网)的服务协议。
    其提供服务:
  • 差错校验:避免底层码失真,添加FCS序列,用CRC校验(算法:n位fcs码,被除数就补n个0,除商定除数P,得出余数就是FCS,接收方只要再进行这种算法,余数是0就OK)确保无比特差错
  • 透明传输:避免传输内容出现帧定界等关键字,字节填充转义,传输前后无感知。
  • 封装成帧:取IP数据报头尾补充帧定界

提一下其协议与关键字:PPP,广播通信与CSMA/CD,MAC地址

  • 网络(IP):路由寻址,网络定位,找到目的主机。作用范围在因特网。
    相关协议:
  • IP地址相关概念:ABC三类地址以及无分类编址,子网掩码。
  • ARP地址解析:IP转MAC
  • 路由
  • 内部网关:RIP/OSPF (距离向量与开放最短路径)
  • 外部网关BGP
  • ICMP:网际控制协议->路由或者终端是否可达
  • 传输层 (举例TCP):保障进程间跨网络通信,上述基层仅做到差错校验,尽最大可能交付。而一次TCP会话的语义可靠没法保障的,比如路由丢数据报,丢帧,本层网络拥塞等问题都会导致通讯不完整。SO?怎么控制传输呢。
  • 抽象出可靠与否的核心问题:能否保障传输信道无差错,速度不受限。显然不可能,网络拓扑那么复杂,硬件软件各不相同,还要考虑成本和效率。。需要依赖传输控制来确保传输信道的可靠。
  • TCP提供的服务
  • 流量控制:滑动窗口
  • 拥塞控制:慢开始,拥塞避免,快重传,快恢复
  • 连接建立:三握四挥
  • 应用层(举例HTTP)
  • 上面的一次用户访问浏览器输入首页地址例子,就是通过HTTP请求万维网资源。HTTP协议定义了浏览器(万维网客户端进程)如何和WEB服务器交互的。
  • 应用层为相同类型的应用,端与端的不同进程定义了数据规范,交互规范。

关于生产与拓展

HTTP协议的性能

  • 上文提过,为了万维网传输超文本内容,应用层HTTP孕育而生。
  • 而随着互联网行业发展,服务器压力越来越大,服务接口数据传输如果依旧采取HTTP协议,那么将浪费大量的网络带宽
  • 传输数据冗余:HTTP沉重的请求响应头行结构
  • 序列化性能差:流/字符/对象的转换消耗性能

RPC框架

RPC(远程接口调用)横跨tcp层与应用层。可以对数据交互的格式进行重新定义,减少冗余传输数据,甚至定制序列化方案。

  • dubbo:
  • 默认dubbo网络协议,也支持、rmi、hessian、http、webservice、thrift、redis等多种协议
  • 默认序列化:dubbo序列化,也支持其他的。
  • 我司osp:网络协议栈基于netty开发,序列化基于thrift

当然:这里的rpc相对宏观,除了rpc调用过程,还涵盖服务治理等一系列功能。上述两家都是如此。

“第四点五层” service mesh

  • 当企业组织架构越来越复杂,开发团队越来越多,线上的服务拓扑逐步复杂。对服务进行治理成了刚需。
  • 在微服务盛行的当下,service mesh概念孕育而生。它就是两两服务网格之间的互连代理,使得了接口服务调用方和提供方的编码难度。
  • 提供的帮助
  • 服务注册发现
  • 负载均衡
  • 熔断
  • 路由
  • 流量控制
  • 安全
  • 监控/日志

FCS mori.wang