计算机网络 | 数据链路层

 

目录

前言

一.数据链路和帧

二.数据链路层的三个基本问题

三.点对点协议PPP

四.局域网的数据链路层

五.以太网的MAC地址

六.扩展的以太网

七.虚拟局域网


前言

数据链路层使用的信道主要有以下两种类型:

  • 点对点信道:这种信道使用一对一的点对点通信方式。
  • 广播信道:这种信道使用一对多的广播通信方式。

在本章中我们研究的是在同一个局域网中,分组怎样从一台主机传送到另一台主机,但并不经过路由器转发。本章首先介绍点对点信道和在这种信道上最常用的点对点协议PPP。然后再用较大的篇幅讨论共享信道的局域网和有关的协议。

本章的重要内容是:

  • 数据链路层的点对点信道和广播信道的特点,以及这两种信道所使用的协议(PPP协议以及 CSMA/CD协议)的特点。
  • 数据链路层的三个基本问题:封装成帧、透明传输和差错检测。
  • 以太网MAC层的硬件地址。
  • 适配器、转发器、集线器、网桥、以太网交换机的作用以及使用场合。

一.数据链路和帧

1.链路和数据链路的区别

链路:所谓链路就是从一个结点到相邻结点的一段物理线路(有线或无线),而中间没有任何其他的交换结点。在进行数据通信时,两台计算机之间的通信路径往往要经过许多段这样的链路。可见链路只是一条路径的组成部分

数据链路:数据链路则是另一个概念。这是因为当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。现在最常用的方法是使用网络适配器(既有硬件,也包括软件)来实现这些协议。

2.帧是什么

帧:数据链路层把网络层交下来的数据加上帧头和帧尾后构成帧,然后发送发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。在互联网中,网络层协议数据单元就是IP数据报(或简称为数据报、分组或包)。

二.数据链路层的三个基本问题

数据链路层协议有许多种,但有三个基本问题则是共同的。这三个基本问题是:

  1. 封装成帧
  2. 透明传输
  3. 差错检测

1.封装成帧

封装成帧就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。下图表示用帧首部和帧尾部封装成帧的一般概念。

所有在互联网上传送的数据都以分组(即IP数据报)为传送单位。网络层的IP数据报传送到数据链路层就成为帧的数据部分。在帧的数据部分的前面和后面分别添加上首部和尾部,构成了一个完整的帧。这样的帧就是数据链路层的数据传送单元。一个帧的帧长等于帧的数据部分长度加上帧首部和帧尾部的长度。首部和尾部的一个重要作用就是进行帧定界(即确定帧的界限)。此外,首部和尾部还包括许多必要的控制信息。在发送帧时,是从帧首部开始发送的。各种数据链路层协议都对帧首部和帧尾部的格式有明确的规定。我们可以简记为“帧的开始,真的结束”。

当数据是由可打印的ASCⅡ码组成的文本文件时,帧定界可以使用特殊的帧定界符。下图的例子可说明帧定界的概念。

控制字符SOH( Start Of Header)放在一帧的最前面,表示帧的首部开始。另一个控制字符EOT( End of Transmission)表示帧的结束。请注意,SOH和EOT都是控制字符的名称。它们的十六进制编码分别是01(二进制是0000001)和04(二进制是00000100).SOH(或EOT)并不是S,O,H(或E,O,T)三个字符。

当数据在传输中出现差错时,帧定界符的作用更加明显。假定发送端在尚未发送完个帧时突然出故障,中断了发送。但随后很快又恢复正常,于是重新从头开始发送刚才未发送完的帧。由于使用了帧定界符,接收端就知道前面收到的数据是个不完整的帧(只有首部
开始符SOH而没有传输结束符EOT),必须丢弃。而后面收到的数据有明确的帧定界符(SOH和EOT),因此这是一个完整的帧,应当收下。

2.透明传输

由于帧的开始和结束的标记使用专门指明的控制字符,因此,所传输的数据中的任何8比特的组合一定不允许和用作帧定界的控制字符的比特编码一样,否则就会出现帧定界的错误。当传送的帧是用文本文件组成的帧时(文本文件中的字符都是从键盘上输入的),其数据部分显然不会出现像SOH或EOT这样的帧定界控制字符。可见不管从键盘上输入什么字符都可以放在这样的帧中传输过去。虽然我们此时在帧头和帧尾加上了专门指明的控制字符,数据链路层可以通过这些字符判断边界,而且不会影响传输过程和数据,就像什么都没有加一样,因此这样的传输就是透明传输。

但当数据部分是非ASCⅡ码的文本文件时(如二进制代码的计算机程序或图像等),情况就不同了。如果数据中的某个字节的二进制代码恰好和SOH或EOT这种控制字符一样。见下图,数据链路层就会错误地“找到帧的边界”,把部分帧收下(误认为是个完整的
帧),而把剩下的那部分数据丢弃(这部分找不到帧定界控制字符SOH)。

像上图3所示的帧的传输显然就不是“透明传输”,因为当遇到数据中碰巧出现字符“EOT”时就传不过去了。数据中的“EOT”将被接收端错误地解释为“传输结束”的控制字符,而在其后面的数据因找不到“SOH”被接收端当作无效帧而丢弃。但实际上在数据中出现的字符“EOT”并非控制字符而仅仅是二进制数据00000100。

前面提到的“透明”是一个很重要的术语。它表示:某一个实际存在的事物看起来却好像不存在一样(例如,你看不见在你前面有块100%透明的玻璃的存在)。“在数据链路层透明传送数据”表示无论什么样的比特组合的数据,都能够按照原样没有差错地通过这个数据链路层。因此,对所传送的数据来说,这些数据就“看不见”数据链路层有什么妨碍数据传输的东西。或者说,数据链路层对这些数据来说是透明的 。

为了解决透明传输问题,就必须设法使数据中可能出现的控制字符“SOH”和“EOT”在接收端不被解释为控制字符。具体的方法是:发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是1B,二进制是0001011)。而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。这种方法称为字节填充或字符填充。如果转义字符也出现在数据当中,那么解决方法仍然是在转义字符的前面插入一个转义字符。因此,当接收端收到连续的两个转义字符时,就删除其中前面的一个。下图表示用字节填充法解决透明传输的问题。

3.差错检测(未实现)

现实的通信链路都不会是理想的。这就是说,比特在传输过程中可能会产生差错:1可能会变成0,而0也可能变成1.这就叫做比特差错。比特差错是传输差错中的一种。为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。目前在数据链路层广泛使用了循环冗余检验CRC( Cyclic Redundancy Check)的检错技术。

(1)循环冗余检验的原理

假设现在给定要发送的数据M=101001,以及以收发双方事先商定的长度为(n)位的除数P=1101。

  1. 发送端,在数据M的后面添加供差错检测用的n-1位冗余码(即在M后面加上n-1个0),构成(k+n-1)位的新帧。
  2. 用这(k+n-1)位数据即101001000作为被除数,与除数P=1101之间做模2除法运算(其实就是异或运算),得到商Q=110101和余数001,注意这个商其实并没有什么用处。
  3. 余数R=001作为冗余码拼接在数据M的后面发送出去,所以最后真正发送的帧是101001001。
  4. 接收端把接收到的数据除以同样的除数P=1101(模2运算即异或运算),得到余数R。
  5. 接收端验证余数R是否为0,如果为0,则说明数据帧没有出错。

(2)除数p的生成多项式表示方法:

在上述例子中,除数p=1101,我们注意到除数p中,下标0,2,3的数据为1,只有下标为1的数据才是0,因此我们也可以用以下方法表达除数p,即,其中X^3,X^2,1(即X^0)分别代表下标0,2,3的数据为1。P(X)就被称为除数p的生成多项式。

三.点对点协议PPP

1.什么是点对点协议PPP

我们知道,互联网用户通常都要连接到某个ISP才能接入到互联网。PPP协议就是用户计算机和ISP进行通信时所使用的数据链路层协议。

2.PPP协议应满足的需求

  1. 简单
  2. 封装成帧
  3. 透明性
  4. 多种网路层协议:多种网络层协议PPP协议必须能够在在同一条物理链路上同时支持多种网络层协议(如IP和Iⅹ等)的运行。当点对点链路所连接的是局域网或路由器时,PPP协议必须同时支持在链路所连接的局域网或路由器上运行的各种网络层协议。
  5. 多种类型链路:多种类型链路除了要支持多种网络层的协议外,PPP还必须能够在多种类型的链路上运行
  6. 差错检测:PPP协议必须能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。
  7. 检测连接状态:检测连接状态PPP协议必须具有一种机制能够及时(不超过几分钟)自动检测出链路是否处于正常工作状态。
  8. 最大传输单元:最大传送单元PPP协议必须对每一种类型的点对点链路设置最大传送单元MTU的标准默认值。
  9. 网络层地址协商:网络层地址协商PPP协议必须提供一种机制使通信的两个网络层(例如,两个IP层)的实体能够通过协商知道或能够配置彼此的网络层地址。
  10. 数据压缩协商

3.ppp协议的帧格式

PPP的帧格式如上图所示。PPP帧的首部和尾部分别为四个字段和两个字段。

首部的第一个字段和尾部的第二个字段都是标志字段F(Flag),规定为0x7E(十六进制的7E的二进制表示是01111110)。标志字段表示一个帧的开始或结束。因此标志字段就是PPP帧的定界符。连续两帧之间只需要用一个标志字段。如果出现连续两个标志字段,就表示这是一个空帧,应当丢弃。

首部中的地址字段A规定为0xFF,控制字段C规定为0x03。最初曾考虑以后再对这两个字段的值进行其他定义,但至今也没有给出。可见这两个字段实际上并没有携带PPP帧的信息。PPP首部的第四个字段是2字节的协议字段。

信息字段的长度是可变的,不超过1500字节。尾部中的第一个字段(2字节)是使用CRC的帧检验序列FCS。

4.字节填充

当信息字段中出现和标志字段一样的比特(0x7E)组合时,就必须采取一些措施使这种形式上和标志字段一样的比特组合不出现在信息字段中。

当PPP使用异步传输时,它把转义符定义为0x7D,并使用字节填充,RFC1662规定了如下所述的填充方法

  • 把信息字段中出现的每一个0x7E字节转变成为2字节序列(0x7D,0x5E)。
  • 若信息字段中出现一个0x7D的字节(即出现了和转义字符一样的比特组合),则把0x7D转变成为2字节序列(0x7D,0x5D)
  • 若信息字段中出现ASCⅡ码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如,出现0x03(在控制字符中是“传输结束”ETX)就要把它转变为2字节序列(0x7D,0x23)。

由于在发送端进行了字节填充,所以接收端在收到数据后再进行与发送端字节填充相反的变换,就可以正确地恢复出原来的信息。

5.零比特填充

PPP协议用在 SONET/SDH链路时,使用同步传输(一连串的比特连续传送)而不是异步传输(逐个字符地传送)。在这种情况下,PPP协议采用零比特填充方法来实现透明传输。

零比特填充的具体做法是:在发送端,先扫描整个信息字段。只要发现有5个连续1,则立即填入一个0。因此经过这种零比特填充后的数据,就可以保证在信息字段中不会出现6个连续1(因为二进制中6个连续的1代表十六进制的0x7E,也就是我们上面讲到过的标志字段F)。接收端在收到一个帧时,先找到标志字段F以确定一个帧的边界,接着再用硬件对其中的比特流进行扫描。每当发现5个连续1时,就把这5个连续1后的一个0删除,以还原成原来的信息比特流。这样就保证了透明传输:在所传送的数据比特流中可以传送任意组合的比特流,而不会引起对帧边界的错误判断。

6.ppp协议的工作状态

前面我们讲过PPP协议就是用户计算机和ISP进行通信时所使用的数据链路层协议,那么用户和ISP之间具体怎么连接呢?

  1. 首先,PPP链路的起始和终止状态永远是“链路静止”状态,这时在用户个人电脑和ISP的路由器之间并不存在物理层的连接。
  2. 当用户拨号接入ISP后,就建立了一条从用户个人电脑到ISP的物理连接。在双方建立了物理层连接后,PPP就进入“链路建立”状态,其目的是建立链路层的LCP连接。
  3. 接着用户个人电脑向ISP发送一系列的链路控制协议LCP分组(封装成多个PPP帧),以便建立LCP连接。这些分组及其响应选择了将要使用的一些PPP参数。协商结束后双方就建立了LCP链路。
  4. 接着就进入“鉴别”状态。若鉴别成功,则进入“网络层协议”。若鉴别身份失败,则转到“链路终止”状态。
  5. 网络控制协议NCP给新接入的用户个人电脑分配一个临时的IP地址。

当网络层配置完毕后,链路就进入可进行数据通信的“链路打开”状态。链路的两个PPP端点可以彼此向对方发送分组。数据传输结束后,可以由链路的一端发出终止请求LCP分组请求终止链路连接,在收到对方发来的终止确认LCP分组后,转到“链路终止”状态。如果链路出现故障,也会从“链路打开”状态转到“链路终止”状态。

由此可见,PPP协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容。 

四.局域网的数据链路层

1.以太网

局域网最主要的特点是:网络为一个单位所拥有,且地理范围和站点数目均有限。

局域网的分类:

  • 星形网
  • 环形网
  • 总线网

现在以太网几乎成为了局域网的同义词,因此从后文开始都是讨论以太网技术。(即 以太网=局域网)

2.适配器的作用

计算机与外界局域网的连接是通过通信适配器进行的。适配器本来是在主机箱内插入的一块网络接口板。这种接口板又称为网络接口卡或简称为“网卡”。但现在计算机主板上都已经嵌入了这种适配器,不再使用单独的网卡了。在这种通信适配器上面装有处理器和存储器(包括RAM和ROM)。适配器和局域网之间的通信是通过电缆或双绞线以串行传输方式进行的而适配器和计算机之间的通信则是通过计算机主板上的IO总线以并行传输方式进行的。

适配器的工作原理:

适配器在接收和发送各种帧时,不使用计算机的CPU.这时计算机中的CPU可以处理其他任务。当适配器收到有差错的帧时,就把这个帧直接丢弃而不必通知计算机。当适配器收到正确的帧时,它就使用中断来通知该计算机,并交付协议栈中的网络层。当计算机要
发送IP数据报时,就由协议栈把IP数据报向下交给适配器,组装成帧后发送到局域网。

具有广播特性的以太网如何实现一对一通信:

早期的以太网都是总线网类型,即将许多计算机都连接到一根总线上。总线的特点是:当一台计算机发送数据时,总线上的所有计算机都能检测到这个数据。这种就是广播通信方式。但我们并不总是要在局域网上进行一对多的广播通信。为了在总线上实现一对一的通信,可以使每一台计算机的适配器拥有一个唯一的地址。在发送数据帧时,在帧的首部写明接收站的地址。仅当数据帧中的目的地址与适配器ROM中存放的硬件地址一致时,该适配器才能接收这个数据帧。适配器对不是发送给自己的数据帧就丢弃。这样,具有广播特性的总线上就实现了一对一的通信。

3.CSMA/CD协议

CSMA/CD协议的工作原理:

我们知道,总线上只要有一台计算机在发送数据,总线的传输资源就被占用。因此,在同一时间只能允许一台计算机发送数据,否则各计算机之间就会互相干扰,使得所发送数据被破坏。以太网采用最简单的随机接入。这好比有一屋子的人在开讨论会,没有会议主持人控制发言。想发言的随时可发言,不需要举手示意。但我们还必须有个协议来协调大家的发言。这就是:如果你听见有人在发言,那么你就必须等别人讲完了才能发言(否则就干扰了别人的发言).但有时碰巧两个或更多的人同时发言了,那么旦发现冲突,大家都必须立即停止发言,等听到没有人发言了你再发言。以太网采用的协调方法和上面的办法非常像,它使用的协议是 CSMA/CD,意思是载波监听多点接入/碰撞检测。

CSMA/CD协议的要点:

  • “多点接入”:就是说明这是总线型网络,许多计算机以多点接入的方式连接在一根总线上。
  • “载波监听”:就是检测总线上有没有其他计算机也在发送。载波监听就是检测信道,这是个很重要的措施。不管在发送前,还是在发送中,每个站都必须不停地检测信道。在发送前检测信道,是为了获得发送权。如果检测出已经有其他站在发送,则自己就暂时不许发送数据,必须要等到信道变为空闲时才能发送。在发送中检测信道,是为了及时发现有没有其他站的发送和本站发送的碰撞。这就称为碰撞检测。
  • 碰撞:总线上至少有两个站同时在发送数据,表明产生了碰撞。所谓“碰撞”就是发生了冲突。任何一个正在发送数据的站,一旦发现总线上出现了碰撞,其适配器就要立即停止发送,免得继续进行无效的发送,白白浪费网络资源,然后等待一段随机时间后再次发送。
  • “碰撞检测”:也就是“边发送边监听”,即适配器边发送数据边检测信道上的的变化情况,以便判断自己在发送数据时其他站是否也在发送数据。

显然,在使用 CSMA/CD协议时,一个站不可能同时进行发送和接收(但必须边发送边监听信道)。因此使用 CSMA/CD协议的以太网不可能进行全双工通信而只能进行半双工通信。

五.以太网的MAC地址

1.什么是MAC地址

在局域网中,硬件地址又称为物理地址或MAC地址。MAC地址也叫做硬件地址 或物理地址。可见“MAC地址”实际上就是适配器地址。当这块适配器插入(或嵌入)到某台计算机后,适配器上的标识符EUI-48就成为这台计算机的MAC地址了

IP地址和MAC地址的区别:

名字指出我们所要寻找的那个资源,地址指出那个资源在何处,路由告诉我们如何到达该处。这里的名字指的就是IP地址,地址指的就是MAC地址。

2.MAC帧的格式

以太网V2的MAC帧较为简单,由五个字段组成。前两个字段分别为6字节长的目的地址和源地址字段。第三个字段是2字节的类型字段,用来标志上一层使用的是什么协议,以便把收到的MAC帧的数据上交给上一层的这个协议。第四个字段是数据字段,其长度在46到1500字节之间。最后一个字段是4字节的帧检验序列FCS(使用CRC检验)。

还需注意,在以太网上传送数据时是以帧为单位传送的。以太网在传送帧时,各帧之间还必须有一定的间隙。因此,接收端只要找到帧开始定界符,其后面的连续到达的比特流就都属于同一个MAC帧。可见以太网不需要使用帧结束定界符,也不需要使用字节插入来
保证透明传输。

六.扩展的以太网

扩展以太网更常用的方法是在数据链路层使用交换机进行。最初人们使用的是网桥。网桥对收到的帧根据其MAC帧的目的地址进行转发和过滤。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是根据此帧的目的MAC地址,查找网桥中的地址表,然后确定将该帧转发到哪一个接口,或者是把它丢弃(即过滤)。1990年问世的交换式集线器,很快就淘汰了网桥。。

1.以太网交换机的特点

(1)以太网交换机实质上就是一个多接口的网桥,通常都有十几个或更多的接口,以太网交换机的每个接口都直接与一个单台主机
或另一个以太网交换机相连,并且一般都工作在全双工方式。以太网交换机还具有并行性,即能同时连通多对接口,使多对主机能同时通信(而网桥只能一次分析和转发一个帧)。相互通信的主机都是独占传输媒体,无碰撞地传输数据。

(2)以太网交换机的接口还有存储器,能在输岀端口繁忙时把到来的帧进行缓存。因此,如果连接在以太网交换机上的两台主机,同时向另一台主机发送帧,那么当这台主机的接口繁忙时,发送帧的这两台主机的接口会把收到的帧暂存一下,以后再发送出去。

(3)以太网交换机是一种即插即用设备,其内部的帧交换表(又称为地址表)是通过自学习算法自动地逐渐建立起来的。

(4)以太网交换机的性能远远超过普通的集线器,而且价格并不贵。

2.以太网交换机的自学习功能

我们用一个简单例子来说明以太网交换机是怎样进行自学习的。假定在下图中的以太网交换机有4个接口,各连接一台计算机,其MAC地址分别是A,B,C和D。在一开始,以太网交换机里面的交换表是空的。

A先向B发送一帧,从接口1进入到交换机。交换机收到帧后,先查找交换表,没有查到应从哪个接口转发这个帧。接着,交换机把这个帧的源地址A和接口1写入交换表中,并向除接口1以外的所有接口播这个帧。C和D将丢弃这个帧,因为目的地址不对。只B才收下这个目的地址正确的帧。

假定接下来B通过接口3向A发送一帧。交换机查找交换表,发现交换表中的MAC地址有A。表明要发送给A的帧应从接口1转发。于是就把这个帧传送到接口1转发给A。显然,现在已经没有必要再广播收到的帧。交换表这时新增加的项目(B,3),表明今后如有发送给B的帧,就应当从接口3转发出去。

从新写入交换表的项目(A,1)可以看出,以后不管从哪一个接口收到帧,只要其目的地址是A,就应当把收到的帧从接口1转发出去。这样做的依据是:既然A发出的帧是从接口1进入到交换机的,那么从交换机的接口1转发出的帧也应当可以到达A。

C和D也和上面的情况类似。

考虑到有时可能要在交换机的接口更换主机,或者主机要更换其网络适配器,这就需要更改交换表中的项目。为此,在交换表中每个项目都设有一定的有效时间。过期的项目就自动被删除。用这样的方法保证交换表中的数据都符合当前网络的实际状况。

七.虚拟局域网

虚拟局域网(VLAN)是由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有某些共冋的需求。虚拟局域网其实只是局域网给用户提供的一种服务,而并不是一种新型局域网。例如:

设有10台计算机分配在三个楼层中,构成了三个局域网,即:

  1. LAN1:(A1,A2,B1,C1)
  2. LAN2:(A3,B2,C2)
  3. LAN3:(A4,B3,C3)

但这10个用户划分为三个工作组,也就是说划分为三个虚拟局域网VLAN。即:

  1. VLAN1:(Al, A2, A3, A4)
  2. VLAN2: (B1, B2, B3)
  3. VLAN3: (Cl, C2, C3)

从图可看出,每一个VLAN的计算机可处在不同的局域网中,也可以不在同一层楼中 。

在虚拟局域网上的每一个站都可以收到同一个虚拟局域网上的其他成员所发出的广播。例如,计算机B1~B3同属于虚拟局域VLAN2。当B1向工作组内成员发送数据时,计算机B2和B3将会收到广播的信息,虽然它们没有和B1连在同一个以太网交换机上。相反,B1向工作组内成员发送数据时,计算机A1,A2和C1都不会收到B1发出的广播信息,虽然它们都与B1连接在同一个以太网交换机上。

 

 

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值