网络七层模型与四层模型区别
作为一个 Web 程序员👨💻,对于网络模型你应该了解,知道网络到底是怎么进行通信的,进行工作的,为什么服务器能够接收到请求,做出响应。这里面的原理应该是每个 Web 程序员应该了解的。
网络模型历史及起源
网络模型不是一开始就有的,在网络刚发展时,网络协议是由各互联网公司自己定义的,比如那时的巨头网络公司 IBM、微软、苹果、思科等等,他们每家公司都有自己的网络协议,各家的协议也是不能互通的,那时候大家觉得这是可以的,但对消费者来说这实际上是技术垄断,因为你买了苹果的设备就不能用微软的设备,因为他们的协议不是一样的,没有统一的标准来规范网络协议,都是这些公司的私有协议。
这样大大的阻碍了互联网的发展,为了解决这个问题,国际标准化组织 1984 提出的模型标准,简称 OSI(Open Systems Interconnection Model),这是一个标准,并非实现。
TCP/IP 协议就是基于此模型设计。
OSI 模型
OSI 模型是从上往下的,越底层越接近硬件,越往上越接近软件,这七层模型分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
这种分层模型是我们计算机科学中常用的方法,分层直接通过规定好的接口进行交互,每一层其实对它的上层或下层都是一个黑盒,其实它的上层和下层也不关心它内部的实现,只关心它们之间进行交互的接口,接口是规定的信息,要给到什么都是规定好的。
这种分层模型的好处就是可以对任何一层进行独立升级、优化,只要保持接口不变那么这个模型整体就不会有问题,比如说物理层从以太网线到光纤,我们的网络速度大大提高,但是整个技术革新的时候,其他层是没有做更多工作的,工作只在物理层完成。这样做的好处也同时提高了我们技术的发展革新速度。
分层功能职责
- 物理层:底层数据传输,如网线;网卡标准。
- 数据链路层:定义数据的基本格式,如何传输,如何标识;如网卡MAC地址。
- 网络层:定义IP编址,定义路由功能;如不同设备的数据转发。
- 传输层:端到端传输数据的基本功能;如 TCP、UDP。
- 会话层:控制应用程序之间会话能力;如不同软件数据分发给不同软件。
- 标识层:数据格式标识,基本压缩加密功能。
- 应用层:各种应用软件,包括 Web 应用。
数据交互
我们简化模型,假设有 计算机 A 和 计算机 B 要进行信息交互,比如 A 上开发了一个网页,需要 B 去访问。B 发出一个请求给 A,那么请求数据从 B 的 应用层开始向下传到表示层、再从表示层传到会话层直到物理层,通过物理层传递到 A ,A 的物理层接到请求后将请求向上传递到自己的应用层,应用层再将要请求的数据向自己的物理层方向传递然后 B 接到数据传递数据到自己的应用层。这里简化理解,我们去除了三次握手四次挥手的逻辑。
数据就是这样在计算机和网络中进行传递的。这其中做的工作就是每层进行层层解包和附加自己所要传递的信息,术语叫做报头。
在四层,既传输层数据被称作段(Segments);三层网络层数据被称做包(Packages);二层数据链路层时数据被称为帧(Frames);一层物理层时数据被称为比特流(Bits)。
TCP/IP 模型将 OSI 模型由七层简化为四层,传输层和网络层被完整保留,因此网络中最核心的技术就是传输层和网络层技术。
TCP/IP 协议中每层技术举例:
网络访问层:ARP、RARP
互联网层:ICMP、IP
传输层:TCP、UDP
应用层:DNS、FTP、HTTP、SMTP、TELNET、IRC、WHOIS
总结
网络七层模型是一个标准,而非实现。
网络四层模型是一个实现的应用模型。
网络四层模型由七层模型简化合并而来。