第3章-数据链路层
数据链路层属于计算机网络的底层,使用的信道主要有以下两种类型:
-
点对点信道:这种信道使用一对一的点对点通信方式;
-
广播信道:这种信道使用一对多的广播通信方式。
数据链路层的作用:
【补】物理层的作用:
- 在向上传输的时候尽可能地屏蔽掉种类繁多的硬件设备和传输媒体通信手段的差异,使物理层上面的数据链路层感觉不到这些差异,这样就可以使数据链路层只需要考虑如何完成本层的协议和服务,而不必考虑网络具体的传输媒体和通信手段是什么。
本章重点
- 数据链路层的点对点信道 和 广播信道的特点,以及这两种信道所使用的协议(PPP协议 以及 CSMA/CD协议)的特点;
- 数据链路层的三个基本问题:封装成帧、透明传输 和 差错检测;
- 以太网 MAC层的硬件地址;
- 适配器、转发器、集线器、网桥、以太网交换机的作用以及使用场合。
3.1-使用点对点信道的数据链路层
3.1.1-数据链路 和 帧
【注】数据链路(data link) 和 链路(link) 不是一回事。
- 链路:从一个结点到相邻结点的一段物理线路(有线或无线,比如一根网线就是),而中间没有任何其他交换结点。链路只是一条路径的组成部分。
- 数据链路:在线路上传输数据时,除了必须有一条物理线路外,还需要有一些必要的通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。(最常用的有网络适配器,既有硬件、也包括软件)
帧——数据链路层的协议数据单元
- 接受数据时:数据链路层把网络层交下来的数据构成帧发送到链路上
- 传输数据时:把在物理层接收到的帧中的数据取出并上交给网络层。
在互联网中,网络层协议数据单元就是 IP 数据报(或简称为 数据报、分组 和 包)。
点对点信道的数据链路层在进行通信时的主要步骤(如上图a):
- 节点A的数据链路层把网络层交下来的 IP数据报添加首部和尾部封装成帧;
- 节点A把封装好的帧发送给结点B的数据链路层;
- 若结点B的数据链路层收到的帧无差错,则从收到的帧中提取出 IP数据报交给上面的网络层;否则丢弃这个帧。
数据链路层不必考虑物理层如何实现比特数据流传输的细节。我们甚至可以简化为上图b。
3.1.2-三个基本问题(功能)
数据链路层协议有很多种,但大致为:
1.封装成帧
就是在一段数据的前后分别添加 首部 和 尾部,这样就构成了一个帧。接收端在收到的物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
一个帧的帧长=帧的数据部分长度 + 帧的首部长度 + 帧的尾部长度。
首部和尾部的一个重要的作用就是帧定界(即确定帧的界限),此外首部和尾部包括一些重要的控制信息。在帧中 最大传输单元MTU(Maximum Transfer Unit)限制了数据部分长度上限。
数据链路层是如何判断 帧完整(传送)or不完整(丢弃)呢?
帧定界使用了特殊的帧定界符,帧的首尾分别有控制符 SOH(Start Of Header)和 EOT(End Of Transmission)。因此就可以很好的判断了。
2.透明传输
由于帧的开始和结束的标记使用专门指明的控制字符,因此,所传输的数据中的任何8比特的组合一定不允许 和 用作帧定界的控制字符的比特编码一样,不然容易产生误判。
“透明传输”中的“透明”指的是某一个实际存在的事物看起来却好像不存在一样,这样就算在帧中错误的输入了 SOH 或 EOT,也能把它忽略掉。
具体做法:(利用字符填充法)
- 发送端的数据链路层在数据中出现控制字符 “SOH” 或 “EOT”的前面插入一个转义字符“ESC”。
- 在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。这种方法称为“字节填充(byte stuffing)” 或 “字符填充(character stuffing)”
3.差错检测
实际的通信链路并非是理想的,它不可能使误码率下降到零。因此,为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用差错检测措施。目前在数据链路层广泛使用了 循环冗余检测CRC(Cyclic Redundancy Check)。
步骤很简单:由P可以得到 n=P-1,然后(M+n个0)/P,余数为R(冗余码)。
这种为了进行检错而添加的冗余码常称为 帧检验序列FCS(Frame Check Sequence)。
【注】CRC是一种检验方法,FCS是添加在数据后面的冗余码。
出现传输差错:帧丢失、帧重复、帧失序。
3.2-点对点协议 PPP
PPP(点对点协议,Point-to-Point Protocol)是目前使用最广泛的数据链路层协议。
互联网用户通常都需要连接到某个ISP(互联网服务提供商,Internet Service Provider)才能接入到互联网。PPP协议就是计算机和ISP进行通信时所用的数据链路层协议。
3.2.1-PPP的特点
1.PPP协议应满足的需求
- 简单:接收方每收到一个帧,就进行CRC(循环冗余检测)检验。如果CRC检验正确,就收下这个帧;否则就丢弃这个帧。其它(操作)都不做。
- 封装成帧:PPP协议必须规定特殊的字符作为帧定界符(SOH、EOT),以便使接收端从收到的比特流中能准确的找到帧的开始和结束位置。
- 透明性:保证数据传输的透明性。如果数据中碰巧出现了和帧定界符一样的比特组合的时候,就要采取有效的措施来解决这个问题。
- 多种网络层协议:PPP协议必须能够在同一条物理链路上同时支持多种网络层协议(IP、IPX等)运行。
- 多种类型链路:PPP协议必须能够在多类型链路上运行,例如串行、并行、同步、异步、低速、高速等。
- 差错检测(error detection):PPP协议必须能够对接收端收到帧进行检测,并立即丢弃都差错的帧,以免浪费不必要的资源。(简单原则)
- 检测连接状态:PPP协议必须具有一种机制能够及时(短时间内)自动监测出链路是否处于正常工作状态。(当出现故障的链路隔了一段时间后又重新恢复正常工作时,就需要这种及时功能)。
- 最大传输单元:确保帧长不超过最大传输单元 MTU的标准默认值(不是总长度,是帧数据部分长度)。
- 网络层地址协商:使通信的两个网络层(例.两个IP层)的实体能够通过协商知道或能够配置彼此的网络层地址。
- 数据压缩协商:PPP协议必须提供一种方法来协商使用数据压缩算法。(但它没有绝对的标准化)。PPP协议不支持多点线路(毕竟是点对点嘛),只支持点对点的链路通信。此外PPP协议只支持全双工链路。(这里没懂)
2.PPP协议的组成
- 一个将从网络层来的IP数据报封装到串行链路的方法。
- 一个用来建立、配置和测试数据链路连接的链路控制协议LCP(Link Control Protocol)。
- 一套网络控制协议NCP(Network Control Protocol),其中的每一个协议支持不同的网络层协议(如 IP、OSI的网络层、DECnet、Apple Talk等)。
3.2.2-PPP协议的帧格式
1.各字段的意义
- F为flag是标志字段,表示帧的开始 or 结束。
- A C 暂时没用,未携带PPP帧信息。
- 协议字段:2字节;当协议字段为 0x0021时就是IP数据报;0xC021就是PPP链路控制协议LCP的数据;0x8021表示网络层的控制数据。
- 信息部分:由MTU所限制的;
- FCS:是使用CRC的帧检验序列FCS。
2.字节填充
- 当帧信息部分出现和标志字段一样的比特(0x7E) 组合时,把该信息部分1字节的 7E 变成2字节的 7D 5E。
- 把 0x03(“传输结束”ETX)变成 0x7D,0x23。
- 然后在接收端进行反变换就可以恢复过来。
3.零比特填充
因为“标志字段”F 十六进制是7E、二进制是01111110,所以在信息部分要避免出现这种情况:只要发现有5个连续1,则立即添入一个0。在接收端恢复的时候发现连续5个1就把后面的0删除就行。
3.2.3-PPP协议的工作状态
3.3-使用广播信道的数据链路层
广播信道可以进行一对多的通信。
3.3.1-局域网的数据链路层
局域网最主要的特点是:网络为一个单位所拥有,且地理范围和站点数目均有限。它的特点:
局域网工作的层次跨越了物理层和数据链路层。现在以太网已经在局域网中占据了绝对优势,也成了局域网的代名词。共享信道要着重考虑的一个问题就是如何使众多用户能够合理而方便地共享通信媒体资源,目前有两种方法:
- 静态划分信道,如unit-2-2.4中的频分复用、时分复用等。用户只要分配到了信道就不会和其他用户发生冲突。但这种划分信道的方法代价比较高,不适合于局域网使用。
- 动态媒体接入控制:它又称 多点接入(multiple access),其特点是信道并非在用户通信时固定分配给用户。分为以下两类:
- 随机接入:所有用户可随机地发送信息,但是当两个用户同时发送的时候就会产生“碰撞(冲突)”,使得这次信息发送失败。因此,必须有解决碰撞的网络协议。
- 受控接入:用户不能随机地发送信息,而必须服从一定的控制。
1.以太网的两个标准
以太网是一种基带总线局域网。
起初,IEEE 802委员会把局域网的数字链路层拆成两个子层: 逻辑链路控制 LLC子层(Logical Link Control),媒体接入控制MAC子层(Medium Access Control)。与接入到传输媒体有关的内容放在MAC子层。而LLC的作用日渐式微。
2.适配器的作用
计算机与外界局域网的链接是通过通信适配器(adapter)进行的。适配器也称为网卡(network card)。在这种通信适配器上装有处理器和存储器(包括 RAM 和 ROM)。
适配器的一个重要功能就是要进行数据串行传输和并行传输的转换。
适配器和局域网之间的通信是通过电缆或双胶线以串行传输方式进行的,而适配器和计算机之间的通信则是通过计算机主板上的 I/O总线以并行传输方式进行的。
- 接收阶段:当适配器接收到正确的帧时,它就使用中断来通知该计算机,并交付协议栈中的网络层;
- 发送阶段:当计算机要发送IP数据报时,计算机就由协议栈把IP数据报向下交给适配器,组装成帧后发送到局域网。
3.3.2-CSMA/CD协议
为了通信的简便,以太网采取了两种措施:
- 以太网采用较灵活的无连接工作方式,即不必先建立连接就可以直接发送数据。适配器对发送的数据帧不进行编号,也不要求对方发回确认。对有差错的帧是否需要重传则由高层来决定。以太网虽然采用最简单的随机接入,但是有很好的协议来减少冲突发生的概率,那就是 CSMA/AD协议(载波监听多点接入/碰撞检测,Carrier Sense Multiple Access with Collision Detection)。
- 以太网发送的数据都使用 曼彻斯特编码的信号。
CSMA/CD(载波监听多点接入/碰撞检测)协议的要点归纳:
- 准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部,组成以太网帧,放入适配器的缓存中。但在发送前,必须先检测信道。
- 检测信道:若检测到信道忙,则应不停地检测,一直等待信道转为空闲。若检测到空闲信道,并在96比特时间内信道保持空闲(保证了帧间最小间隔),就发送这个帧。
- 在发送过程中仍不停地检测信道,即网络适配器要边发送边监听。有以下两种可能:
- 发送成功:在争用期内一直未检测到碰撞。这个帧肯定能发送成功。再回到1.
- 发送失败:在争用期内检测到碰撞。这时立即停止发送数据。适配器执行指数退避算法,等待r倍512比特时间后返回到步骤2。若重传达16次仍不能成功,则停止重传而向上报错。
以太网每发送完一帧,一定要把已发送的帧暂时保留一下。
3.3.3-使用集线器的星形拓扑
集线器(hub)的特点:
- 使用集线器的以太网在逻辑上仍是一个总线网,各站共享逻辑上的总线,使用的还是 CSMA/CD协议。
- 一个集线器有许多接口,集线器更像是一个多接口的转发器。
- 集线器工作在物理层,它的每个接口仅仅简单地转发比特,并不进行碰撞检测。
- 集线器采用专门的芯片,具有少量的容错能力和网络管理功能。
3.3.4-以太网的信道利用率
当发生碰撞时,信道资源实际上是被浪费了,信道利用率也会下降。
3.3.5-以太网的MAC层
1.MAC层的硬件地址
在局域网中,硬件地址又称为物理地址或 MAC地址(因为这种地址用在 MAC帧中)。
在讨论地址的时候有以下名言:“名字指出我们要寻找的那个资源,地址指出那个资源在何处,路由告诉我们如何到达该处”。
2.MAC帧格式
常用的以太网MAC帧格式有两种标准,一种是 DIX Ethernet V2标准(即以太网V2标准),另一种是 IEEE的802.3标准。
- 类型字段:用来标志上一层使用的是什么协议,以便把收到的MAC帧的数据上交给上一层的这个协议。
- 帧检测序列FCS:使用的是CRC检验。
- 前同步码:使接收端的适配器在接受MAC帧时能够迅速调整其时钟频率,使它和发送端的时钟同步。
3.4-扩展的以太网
3.4.1-在物理层扩展以太网
现在,扩展主机和集线器之间的距离的一种简单方法就是使用光纤(通常是一对光纤)和一对光纤调制解调器。
3.4.2-在数据链路层扩展以太网
扩展以太网更常用的方法是在数据链路层进行。最初人们使用的是网桥(bridge),后来被“交换式集线器(switching hub)”所取代。也可称为“以太网交换机。”
1.以太网交换机的特点
以太网交换机实质上就是一个多接口的网桥,相互通信的主机都是独占传输媒体,无碰撞地传输数据。
以太网交换机是一种即插即用设备,其内部的帧交换表(又称地址表)是通过自学习算法自动地逐渐建立起来的。
以太网交换机的性能远远超过了普通的集线器,而且价格并不贵,这就使工作在物理层的集线器逐渐退出了市场。
2.以太网交换机的自学习功能
3.从总线以太网到星形以太网
采用以太网交换机的星形结构是以太网的首选结构。
3.4.3-虚拟以太网
利用以太网交换机可以很方便地实现 虚拟局域网VLAN(Virtual LAN)。它可以按照需要将有关设备和资源非常方便地重新组合,使用户从不同的服务器或数据库中存取所需的资源。
虚拟局域网VLAN是有一些局域网段构成的与物理位置无关的逻辑组,而这些段具有某些共同的需求。
本章重点
- 链路是从一个结点到相邻结点的一段物理线路,数据链路则是在链路的基础上增加了一些必要的硬件(如网络适配器)和软件(如协议的实现)。
- 数据链路层使用的信道主要有点对点信道和广播信道两种。
- 数据链路层传送的协议数据单元是帧。数据链路层的三个基本问题则是:封装成帧、透明传输和差错检测。
- 循环冗余检验CRC是一种检错方法,而帧检验序列FCS是添加在数据后面的冗余码。
- 点对点协议 PPP是数据链路层使用最多的一种协议,它的特点是:简单;只检测差错而不是纠正差错;不使用序号,也不进行流量控制;可同时支持多种网络层协议。
- PPPoE是为宽带上网的主机使用的链路层协议。
- 局域网的优点是:具有广播功能,从一个站点可很方便地访问全网;便于系统的扩展和逐渐演变;提高了系统的可靠性、可用性和生存性。
- 共享通信媒体资源的方法有二:一是静态划分信道(各种复用技术),二是动态媒体接入控制,又称为多点接入(随机接入或受控接入)。
- IEEE 802委员会曾把局域网的数据链路层拆成两个子层,即逻辑链路控制(LLC)子层(与传输媒体无关)和媒体接入控制(MAC)子层(与传输媒体有关)。但现在LLC子层已成为历史。
- 计算机与外界局域网的通信要通过通信适配器(或网络适配器),它又称为网络接口卡或网卡。计算机的硬件地址就在适配器的ROM中。
- 以太网采用无连接的工作方式,对发送的数据帧不进行编号,也不要求对方发回确认。目的站收到有差错帧就把它丢弃,其他什么也不做。
- 以太网采用的协议是具有冲突检测的载波监听多点接入CSMA/CD。协议的要点是:发送前先监听,边发送边监听,一旦发现总线上出现了碰撞,就立即停止发送。然后按照退避算法等待一段随机事件后再次发送。因此,每一个站在自己发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。以太网上各站点都平等地争用以太网信道。
- 传统的总线以太网基本上都是使用集线器的双胶线以太网。这种以太网在物理上是星形网,但在逻辑上则是总线形网。集线器工作在物理层,它的每个接口仅仅简单地转发比特,不进行碰撞检测。
- 以太网的硬件地址,即MAC地址实际上就是适配器地址或适配器地址标识符,与主机所在的地点无关。源地址和目的地址都是48位长。
- 以太网的适配器有过滤功能,它只接收单播帧、广播帧或多播帧。
- 使用集线器可以在物理层扩展以太网(扩展后的以太网仍然是一个网络)。
- 交换式集线器常称为以太网交换机或第二层交换机(工作在数据链路层)。它就是一个多接口的网桥,而每个接口都直接与某台单主机或另一个集线器相连,且工作在全双工方式。以太网交换机能同时连通许多对的接口,使每一对相互通信的主机都能像独占通信媒体那样,无碰撞地传输数据。
- 告诉以太网有 100Mbit/s的快速以太网、吉比特以太网和10Gbit/s的10吉比特以太网。最近还发展到100吉比特以太网。在宽带接入技术中,也常使用高速以太网进行接入。