跳到主要内容

网络各层

学习了这么多网络协议,却没有具体的探究过,这个分层是以什么维度去分的,各层的职责具体是什么?作为一个网络工程的学生,直到今天才去整理,实属不应该。

下面直接转载 《一本书读懂 TCP/IP》 这本书对分层的介绍(写的非常棒啊!!!)

为什么需要分层?

首先第一个问题是为什么要分层,分层主要是为了让整个网络结构变得更加的清晰易懂,也更方便去管理。例如一家公司,如果管理混乱最先出现的是什么情况?就是员工 “越界”:员工不经过部门经理直接向其它部门的经理汇报情况,导致各部门的职责胡乱不清。而解决这种状况最重要的举措就是分层。

分层可以让各层次的权责清晰明了,对外业务接口统一,沟通渠道通畅,业务流程规范。所以基于此,国际标准化组织就制定了一套抽象的分层结构:OSI(开放系统互联架构),与其说这是一个通信标准,不如说是一种管理哲学,任何事物之间的联系都可以使用这个 OSI 表示出来。

为了更好的让通信实体保持基本的沟通,专家们又在这个 “层” 的概念上指定了 “协议”、“标准”

OSI 的七层协议

物理层

物理层就像人与人沟通中的能够互相听懂的“发音”。物理层解决最基础的传送通道,涉及问题主要是建立、维护和释放物理链路所需的机械的、电气的/光学的、功能的和规程的特性,如光缆如何抗衰耗,无线设备如何提高发射功率,为什么双绞线要有屏蔽层等。

例如学校学的那些东西,什么双绞线的衰减距离之类的东西

数据链路层

有了发音,才能有“字”或者“词”,对于说错的话,要尽快予以纠正;如果不能很好地纠正,就要重新把话再说一遍。

接下来,我们开始考虑在物理层提供的按“位”服务的基础上,在相邻的网络节点之间提供简单的、传输以帧为单位的数据,同时它还负责数据链路的流量控制、差错控制。首先,数据链路层为网络层提供 “简单” 的通信链路,通信实体所在的系统必须经过物理介质直接相连——当然,这物理介质可以是有线的铜缆或者光缆,也可以是无线的微波。

数据链路层将物理层提供的比特流组成 “帧”,也就是说,把发送方发出来的若干 “位” 的数据组成一组,加上“开始”“结束”标志和与检错有关的代码等,形成有固定格式的数据帧——这有点像把货物放入标准集装箱中,正因为集装箱的体积、尺寸都是标准的,最后所有的集装箱看起来非常整齐,搬运和船载过程也会变得有序和规范。

本层要提供一定的差错检验和纠正机制。信号会因机械、电气等原因,出现错误,如将 “0”“1” 颠倒,丢失一个“0”或“1”,或者因为外界干扰而多出一位数字。接收者根据检错代码就可以判断收到的数据帧是否有错误,并在可能的情况下纠正错误。不能纠正的错误可以选择重传。

这里面很有学问。发送的信息,接收方是不清楚的。但是如何让接收方知道发送过来的信息有错误呢?对付这种问题,数据链路层有应对策略。

假如我们运送的不是数据信息而是货物,运送工具不是帧而是车。这个问题怎么处理?

发货方出货前,将附带一张“装箱单”,单子上标明了这车货物的相关参数,比如重量、体积、品质,接收方只需要称重量、测体积以及检验品质,并和装箱单上的数据做对比,即可判断运送过程中是否出现错误或者失误。

所以学习计组时用到的循环冗余校验校验码和海明码那些工具就派上用场了

数据帧传送也有类似装箱单一样的信息,存储在“纠错字节”中。当数据帧到达目的地,它会对自身进行计算,计算结果和纠错字节中的内容进行对比。如果一致,进行下一步操作。如果不一致呢?这个类似“装箱单”的纠错字节就能够很快将错误检测出来并进行相应处理(比如进行重传)。

以太网就属于这一层。所以你会经常听到“以太网帧”这一术语。

网络层

我们继续分析日常说话的方式。说话应该有目标、内容和语速,向谁说,通过谁转述,说什么,以多快的速度说。网络层所干的工作,就是进行路由选择、拥塞控制和网络互联。

网络层对自己的上级——传输层,可以提供两种服务,一种叫作“面向连接”的网络服务,一种叫作“无连接”的网络服务——这有点像有轨交通和无轨交通。

  • 有轨交通的特点是,车辆沿着特定轨道行驶,自出发点到目的地,路线、速度基本确定。面向连接的服务也有类似特点。
  • 无轨交通的特点是,车辆走一站看一站,线路、速度均不确定。无连接的服务与此惊人一致。

传统 IP 技术就是无连接服务,而改造为 MPLS(多协议标签交换)网络后,就属于面向连接的服务了。

网络层担负着的四大任务如下:

1、路由选择:任何数据包都不可能在网络上像无头的苍蝇乱跑乱撞,而网络层的关键任务是发现路由、选择路径,有时,也负责地址转换。它就像一个警察,在网络节点这样的“十字路口”管理来来往往的数据包,数据包的路径选择就是我们经常提到的“路由选择”。各种路由协议、MPLS 的流量工程都与路由选择有关。

2、拥塞控制:网络层可以采用拥塞控制机制,尽量避免拥塞的发生,如果真的发生拥塞,也要通过多种途径缓解拥塞状况(比如丢弃一些数据,或者进行缓存)。

3、局域网间互联:数据包在局域网间穿梭,会面临诸如包大小、网络速度,甚至协议的差异,这些都是网络层要解决的,就是通过一定的调整,让两个网络之间的数据包成功的传递。

4、统计和控制:如统计哪些用户需要的网络流量比较多,访问哪些站点比较频繁,或者禁止或控制用户访问某些站点;记账功能一般也在网络层解决。

传输层

传输层的任务是向用户提供可靠的、透明的端到端的数据传输,以及差错控制和流量控制机制。大名鼎鼎的 TCP 和 UDP 就属于传输层。

由于它的存在,网络硬件技术的任何变化对高层都是不可见的,也就是说会话层、表示层、应用层的设计不必考虑低层细节,因此传输层起到“承上启下”的作用。

所谓“端到端”是相对链接而言的。OSI 参考模型的四层到七层属于端到端的方式,而一到三层属于链接的方式。

在传输层,通信双方的两机器之间的应用程序或进程它们并不关心低层的实现细节。

而低层的链接方式就不一样,它要负责处理通信链路中的任何相邻机器之间的通信;假如两台计算机 A 和 B 要通信,那么 A 和 B 之间可以进行直接的传输层的通信,而在 A 和 B 之间如果有若干网络节点,如路由器X、Y、Z,那么 A与X、X与Y、Y与Z、Z与B 之间都要进行低三层的通信。

传输层通过逻辑接口向高层提供服务。服务的类型是在连接建立时确定的,最重要的服务是端到端的、可靠的、面向连接的字节流服务——这里已经不是“位流”(也称“比特流”)了。

一般情况下,传输层为每一条传输连接生成一条第三层的网络链接,但也有例外:需要高吞吐率的传输连接可以同时占用多条网络链接。

传输层有一项很有趣的工作——流量控制,通过技术手段,使字节流均匀、稳定,当然,这不是必需的。

会话层

说话要有开始、过程和终止。在不同的机器之间提供会话进程的通信,如建立、管理和拆除会话进程。你可能要考虑这个话是在大庭广众之下说还是专门对某个人说,或者是说一句等对方答复后再说下一句。

会话层还提供了许多增值服务,如交互式对话管理,允许一路交互、两路交换和两路同时会话;管理用户登录远程分时系统;在两机器之间传输文件,进行同步控制等。

表示层

有些话要以悄悄话的形式,避免第三者听到;有些话,要简单明了,不要拖泥带水。表示层就处理通信进程之间交换数据的表示方法,包括语法转换、数据格式的转换、加密与解密、压缩与解压缩等。

应用层

应用层是OSI参考模型的最高层,低层所有协议的最终目的都是为应用层提供可靠的传送手段,低层协议并没有直接满足用户的任何实际需求。我们日常使用的收发电子邮件、传送文件、浏览网页、交互即时信息、播放网络视频等都属于应用层的范畴,这是用户体验最直观的服务。

OSI 与 TCP/IP 协议簇的关系

OSI 由于体系比较复杂,不太方便计算机软件实现,逐渐退出人们关注的视野,TCP/IP得到了广泛的应用。

TCP/IP 是 Internet 的核心技术,是由 IETF 定义的。所有的系统、终端、线路、用户、开发者,都必须遵守TCP/IP协议族所规定的法则,否则,将不被IP世界所接受。如下 OSI与TCP/IP参考模型对照图

在TCP/IP分层结构中,没有表示层和会话层,也就是说 OSI 规定的这两层,在TCP/IP中并不是必需的。

它们包含的协议如下:

References

《一本书读懂 TCP/IP》 《Linux 高性能服务器编程》