网络体系结构与分层

网络体系结构与分层

软件世界中,“分层”的思想绝对是经典中的经典。在计算机网络的领域,同样离不开分层,不同分层构成整个网络体系结构让网络世界能够更高效稳定的运行~ 每一层只处理本层的工作,对上屏蔽细节,对下进行包装,“分层”将庞大复杂的问题细化成局部小问题,再逐一进行研究和处理。本篇文章介绍网络中经典的分层体系结构。


一、OSI七层协议 和 TCP/IP四层协议

分层的思想在早起ARPANET设计中就已经体现出来了。 国际标准化组织在分层思想下,制定了一个OSI模型。OSI是一个十分理想的模型,理想是丰满的,但是现实是骨感的。整套的OSI模型制定出来后,TCP/IP模型已经成功的在世界很大范围运行。

市场的第一名如果没有致命明显的漏洞的话,第二名其实是很难有翻身机会的。

TCP/IP成了事实上的国际标准,而 OSI 却停留在了理想中。OSI制定的专家们可能过于理论派,整个OSI失败要归咎于其复杂、庞大和过长制定周期。

二、分层思想

无论是 OSI 还是 TCP/IP 亦或是五层结构,分层的思想都是贯彻其中的。

分层是软件设计亦或其他领域分解问题通用和有效的方案。我们现在主流的后端程序都会分 Controller层、业务逻辑层、缓存层和数据存储层等。但是要注意分层从上到下,有上层肯定就有下层

TCP/IP四层协议将整个体系结构分为四层,很大程度简化了OSI七层协议。很多时候,网络接口层也可以细分成数据链路层和物理层。

那分层的好处是什么呢?

各层独立,单一职责,通过简单接口进行连接。

灵活可复用,每一层内部是可以变化升级的,对上一层来说只需要接口层保持稳定。越底层可以越好的被复用。

易维护,划分好了层级,单层单层的维护比维护整套肯定要轻松不少。

分层中一个最大的问题,就是层与层的划分。每一层负责哪些事情呢?

三、TCP/IP四层协议各层职责

1、应用层 application layer

应用层处于整个体系的最上层,也是直接与我们进行打交道的一层。应用层协议的职责就是应用进程之间通信的规则。不同的应用依据自己的特点需要不同的协议,所以这一层的协议应该是最多变和源源不断增加的。

常见的应用层协议有很多,比如浏览器上网要用到HTTP协议、通过域名找IP的DNS协议、使用电子邮件 SMTP协议等。

应用层的交互的数据单元成为报文(message)。

2、运输层 transport layer

应用层定义了进程的交流规则,数据如何传输到另一个进程呢?这就需要运输层(也叫传输层)。运输层提供的是通用数据传输服务,将应用层的报文,从一台机器的某个进行传输到另一台机器的进程。当然多种不同的应用层协议是可以复用同一种运输层协议的。

运输层主要使用 TCP 和 UDP 协议。

  • 传输控制协议 TCP(Transmission Control Protocol)—— 提供面向连接的可靠的数据传输,传输的是报文段(segment)。

  • 用户数据报协议UDP(User Datagram Protocol)—— 提供无连接、尽最大努力交付的数据传输协议,传输的是数据报。

3、网络层 netword layer

两个不同网络直接的主机通信,就需要让数据在不同的分组交换网中传输,这就是网络层的作用。运输层负责运输,网络层负责找方向,就像马路和地图一样。

网络层核心的协议就是 IP 协议,TCP/IP协议族最重要的一个协议之一。IP 协议里有目的地址和源地址。IP数据报从原始地址 A 到目标地址 D,中间经过两个中转站 A->B->C->D,是通过路由转发的。

4、网际接口层

这一层一般分层数据链路层和物理层。

数据链路层拿到的是IP层下发下来的数据包,其工作就是对将 IP 数据包组成的帧(frame)在链路上进行传输。

物理层比较好理解。所有的数据都是要转化成比特流(二进制的01串)在物理线路(比如光纤)上传输的,物理层用来进行比特流和电器特性(例如不同电压表示0和1)之间的转化。物理层要解决的是如何在各种连接计算机的传输媒体中传输数据(比特流, 0 和 1)。

四、数据传递过程

假设两台主机通过一台路由器连接起来,数据是怎么传输的呢?

1、传输过程

假定主机1的应用进程AP1向主机2的应用进程AP2传送数据。

AP1先将其数据交给本主机的第5层(应用层)。第5层加上必要的控制信息出就变成了下一层的数据单元。第4层(运输层)收到这个数据单元后,加上本层的控制信息 H4 再交给第3层(网络层),成 为第3层的数据单元。依此类推。不过到了第2层(数据链路层)后,控制信息被分成两部 分,分别加到本层数据单元的首部(H2)和尾部(T2);而第1层(物理层)由于是比特流的传 送,所以不再加上控制信息。请注意,传送比特流时应从首部开始传送。

当这一串的比特流离开主机1经网络的物理媒体传送到路由器时,就从路由器的第1层依次上升到第3层。每一层都根据控制信息进行必要的操作,然后将控制信息剥去,将该层剩下的数据单元上交给更高的一层。当分组上升到了第3层时,就根据首部中的目的地址查找路由器中的转发表,找出转发分组的接口,然后往下传送到第2层,加上新的首部和尾部后,再到最下面的第1层,然后在物理媒体上把每-个比特发送出去。

当这一串的比特流离开路由器到达目的站主机2时,就从主机2的第1层按照上面讲过的方式,依次上升到第5层。最后,把应用进程AP1发送的数据交给目的站的应用进程AP2。

2、以信封比喻

可以用一个简单例子来比喻上述过程。有一封信从最高层向下传。每经过一层就包上一个新的信封,写上必要的地址信息。包有多个信封的信件传送到目的站后,从第1层起,每层拆开一个信封后就把信封中的信交给它的上一层。传到最高层后,取出发信人所发的信交给收信人。

3、对等通信

整个过程中,对进程AP1 和AP2来说,好像是两个进行再直接进行对等的交流。因为对它们来说,底层的实现细节都被屏蔽了,同样其他两个相等的层次,也像是直接在交流,而屏蔽了下层的细节。这叫对等层的通信。

(本部分大部分直接来自计算机网络书本《计算机网络》谢希仁)

五、其他

1、参考文档

计算机网络(第7版) – 谢希仁

极客时间 -趣谈网络协议

TCP/IP详解 卷1:协议

One thought on “网络体系结构与分层

发表评论

电子邮件地址不会被公开。 必填项已用*标注