概述
当今越来越多的系统采用微服务架构,或者最近很火的服务网格(ServiceMesh),无论是哪种形式,从根本上说,其实都是分布式架构。在信息爆炸的年代,单体应用往往在这个时候就会捉襟见肘,而分布式架构也就有了他的用武之地,将消息协同到不同的单体,只要保证了有足够的机器,用户的访问量不再是问题。
但是这些美好的想法,都是建立在我们有个稳定且高效的网络的前提下,所以如果能搞定网络,那么就为上层应用打下了无比结实的地基。下面我们从网络协议层面来了解开网络这个神奇的面纱吧。
OSI网络分层
首先就是要说的肯定是老生常谈的OSI网络分层
从图上可以清晰的看到,OSI一共可以分为7层,分别为应用层,表示层,会话层,传输层,网络层,链路层和物理层。
应用层
应用层应该是大家最熟知的一层,他为应用程序提供了服务并规定了应用程序中通讯的细节,其中包括着HTTP, HTTPS, DNS, DHCP, P2P等协议。
表示层
表示层主要负责数据格式的转化,加密以及压缩的工作。
如果表示层负责着加密,那么SSL协议应该属于表示层吗?
这个问题就很有意思了。SSL协议分为两个层面的协议,一种是SSL记录协议,另外一种是SSL握手协议。
SSL记录协议为高层协议提供数据封装、压缩、加密等基本功能的支持;而SSL握手协议在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
也就是说SSL记录协议是属于表示层,而SSL握手协议属于马上要提到的会话层。
会话层
会话层主要负责建立和断开通信连接,以及数据的分割等数据传输相关的管理。其中值得一提的是,会话层提供了检查点(Checkpoint) 机制,支持了断点续传的功能,比如说有个100MB的文件传输,而检查点是每5MB进行检察,那么如果传输在52MB失败的情况下,下次重传无需从头开始,而是从50MB开始。
传输层
传输层负责建立可靠的传输。处理只在通信双方的节点上,而不需要在路由器上处理。当然,这层包括了我们很熟悉的TCP,UDP协议。
网络层
网络层负责将数据传输到目标地址,其中目标地址可以是多个网络通过路由器连接而成的某个地址。这层包括的协议有IP,ICMP,BGP,IPSec,GRE等。相应的物理设备主要是路由器。
数据链接层
数据链接层负责物理层面的互联通信传输。这层包含的协议有ARP,VLAN等。相应的物理设备主要是网桥或者交换机。
物理层
物理层负责机械、电子、定时接口通信信道的原始比特流的传输。主要对应的物理设备包括网卡,网线,调制解调器(俗称猫),集线器。
参考文章
- https://www.cloudflare.com/learning/ddos/glossary/open-systems-interconnection-model-osi/
- https://blog.csdn.net/m0_37925202/article/details/80293925
- 图解TCP/IP
- 趣谈网络协议