OSI七层网络分层模型: 参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。
为什么网络进行网络层次划分?
开闭原则。
其实,大部分事实的道理都存在共性,随着人们对网络传输过程认知不断提升,人们发现网络传输实在是太复杂了,既要确定传输的信号是什么,还要确定给谁传输,还有各种中传输过程中的控制逻辑,容错逻辑等等。
在软件工程OOD思想中,最顶层的原则就是开闭原则,网络分层的原因,有何尝不是如此,控制了层层之间的边界,每一层承担的职责也比较清晰,既能使得不同的层次能去完成特定的功能,又能实现层与层之间的改动而互不影响。
为什么网络分层有了5层,还有七层?
其实TCP/IP的五层网络模型先于OSI模型,发明于1970年代。国际标准组织ISO,基于当时的网络模型分层混乱(还有其他分层标准),在这样的背景下,进行了统一网络分层模型,但是也非强制性标准模型,所以叫开放式系统互联通信参考模型。
TCP/IP四层模型和TCP/IP五层模型(实际通用说法是四层模型):
上图中,阐述了5层分层模型和7层分层模型之间的对应关系。
除了这些关系后,作为研发同学,其实更多的是关注各个层次中所涉及到一些网络协议。
在日常的java web开发中,接触到最多的是应用层协议,诸如HTTP、FTP等,另外还有传输层TCP、UDP协议,网络层的IP协议。
另外,网络各个层次和设备之间的关系如下图:
关联信息:
所谓的七层负载均衡指工作在应用层上,看到的HTTP协议,解析HTTP协议报文里面的URL、主机名、资源类型等数据,再用适当的策略转发给后端服务器。
所谓四层负载均衡是在指工作在传输层上,基于TCP/IP协议的特性,例如IP地址、端口号等实现对后端服务器的负载均衡。
TCP/IP分层模型中的协议栈是如何工作的呢?
以HTTP协议的数据传输过程来说明,HTTP协议在传输的过程中,是通过协议栈逐层向下,每一层都添加本层的专有数据,层层打包,然后通过下层发送出去。
接受数据则是恰恰相反的操作,从下往上传过协议栈,逐层拆包,每层去掉本层的专有头,上层就会拿到数据。
从上图中,我们可以看出,大多情况下,我们说TCP、IP协议族中,我们一般说TCP/IP四层网络模型。
对比一下就可以看出,TCP/IP 是一个纯软件的栈,没有网络应有的最根基的电缆、网卡等物理设备的位置。而 OSI 则补足了这个缺失,在理论层面上描述网络更加完整。