《计算机网络》——数据链路层及以太网

文章目录

  • 《计算机网络》——第三章:数据链路层
      • 数据链路层的简单模型
      • 数据链路层的信道类型
        • 1.点对点信道
        • 2.点对点协议PPP
        • 3.广播信道
      • 传统以太网
        • 1.计算机如何连接到局域网——适配器
        • 2.CSMA/CD协议
        • 3.使用集线器的星形拓扑
        • 4.以太网的信道利用率
        • 5.以太网的MAC层

《计算机网络》——第三章:数据链路层

本章研究:在同一个局域网中,分组怎样从一台主机传送到另一台主机,但并不经由路由器转发,从整个互联网来看,局域网仍属于数据链路层的范围

数据链路层的简单模型

《计算机网络》——数据链路层及以太网_第1张图片

数据链路层的信道类型

1.点对点信道

  • 数据链路与帧
    • 链路(link)是从一个节点相邻结点的一段物理线路(有线或无线),而中间没有任何其他的交换结点
    • 数据链路(data link)=链路+实现这些协议(一些必要的通信协议来控制数据的传输)的硬件和软件
    • 帧:点对点信道的数据链路层的协议数据单元
    • IP数据报(数据报、分组或包):网络层协议数据单元
  • 点对点信道的数据链路层进行通信时的主要步骤:
    • 结点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧
    • 结点A把封装好的帧发送给结点B的数据链路层
    • 若结点B的数据链路层收到的帧无差错,则从收到的帧中提取出来IP数据报交给上面的网络层;否则丢弃这个帧
      《计算机网络》——数据链路层及以太网_第2张图片

数据链路层协议有许多种,但有三个基本问题是共同的:封装成帧、透明传输、差错检测

  • 三个基本问题之封装成帧
    • 封装成帧(framing):在一段数据的前后分别添加首部和尾部,这样就构成了一个帧
    • 为了提高帧的传输效率,应当使帧的数据部分长度尽可能的大于首部和尾部的长度,但是,每一种数据链路层协议都规定了所能传送的帧的数据部分长度上限——最大传送单元MTU(Maximum Transfer Unit)
    • 帧定界的方式(明确数据是哪一部分;检测帧传送是否完整
      • 当数据是由可打印的ASCLL码组成的文本文件时,帧定界可以使用特殊的帧定界符,如控制字符SOH(Start Of Header),16进制编码为01;EOT(End Of Transmission),16进制编码为04
        《计算机网络》——数据链路层及以太网_第3张图片
  • 三个基本问题之透明传输
    • 透明传输:无论什么样的比特组合的数据,都能够按照原样没有差错的通过数据链路层,即数据链路层对这些数据是透明的
    • 那么出现一个问题,如果数据中出现了控制字符SOH或EOT,那接收端不就混乱了吗?就不透明了吗?
      《计算机网络》——数据链路层及以太网_第4张图片
    • 所以,聪明的别人提出的方法是:发送端的数据链路层在数据中出现控制字符SOH或EOT的前面插入一个转义字符ESC(16进制编码为1B),而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转移字符。如果转移字符也出现在数据当中,那么解决方法就是在转义字符的前面插入一个转义字符
    • 上述方法称为字节填充(byte stuffing)字符填充(character stuffing)
      《计算机网络》——数据链路层及以太网_第5张图片
  • 三个基本问题之差错检测
    • 比特差错:比特在传输过程中可能会产生差错,1变成了0,0变成了1
    • 误码率BER(Bit Error Rate):在一段时间内,传输错误的比特占所传输比特总数的比率
    • 为了保证数据传输的可靠性,聪明的别人又提出了检错技术:循环冗余检验CRC(Cyclic Redundancy Check)(原理太多,篇幅巨大,只解释得到n位冗余码的原理)
      《计算机网络》——数据链路层及以太网_第6张图片

2.点对点协议PPP

  • PPP(Point-to-Point Protocol),这名字~~~回到正题,互联网用户通常都要连接到某个ISP才能接入到互联网,PPP协议就是用户计算机和ISP进行通信时所用到的数据链路层协议
  • PPP协议应满足的需求
    • 简单、封装成帧、透明性、对多种网络层协议支持(如IP和IPX等)、多种类型链路运行(同步或异步的、串行或并行的、电的或光的)、差错检测、检测连接状态、最大传送单元MTU、网络层地址协商、数据压缩协商
  • PPP协议的三个组成部分
    1. 一个将IP数据报封装到串行链路的方法
    2. 一个用来建立、配置和测试数据链路连接的链路控制协议LCP(Link Control Protocol)
    3. 一套网络控制协议NCP(Network Control Protocol)
  • PPP协议的帧格式
    《计算机网络》——数据链路层及以太网_第7张图片
    • 各字段意义:

      • 标志字段F表示一个帧的开始或结束
      • 地址字段A和控制字段C实际上并没有携带PPP帧的信息
      • PPP首部的第四个字段是2字节的协议字段,若为0x0021,PPP帧的信息字段就是IP数据报。若为0xC021,信息字段是PPP链路控制协议LCP的数据
      • 信息字段的长度是可变的,不超过1500字节
      • 尾部中的第一个字段(2字节)是使用CRC的帧检验序列FCS
    • 字节填充
      《计算机网络》——数据链路层及以太网_第8张图片

    • 零比特填充

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

      《计算机网络》——数据链路层及以太网_第9张图片

  • PPP协议的工作状态
    • 当用户拨号接入ISP后,就建立了一条从用户个人电脑到ISP的物理连接。这时,用户个人电脑向ISP发送一系列的链路控制协议LCP分组(封装成多个PPP帧),以便建立LCP连接。这些分组及其响应选择了将要使用的一些PPP参数。接着还要进行网络层配置,网络控制协议NCP给新接入的用户个人电脑分配一个临时的IP地址。这样,用户个人电脑就成为互联网上的一个有IP地址的主机了
    • 示意图如下:
      《计算机网络》——数据链路层及以太网_第10张图片

3.广播信道

广播信道可以进行一对多的通信,接下来讨论的局域网使用的就是广播信道

  • 局域网的数据链路层
    • 局域网最主要的特点:网络为一个单位所拥有,且地理范围和站点数目均有限
    • 局域网的一些主要优点:
      • 具有广播功能,从一个站点可很方便的访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源
      • 便于系统的扩展和逐渐演变,各设备的位置可灵活的调整和改变
      • 提高了系统的可靠性、可用性和生存性
    • 局域网的网络拓扑
      《计算机网络》——数据链路层及以太网_第11张图片
    • 共享信道
      • 静态划分信道:第二章介绍过的频分复用、时分复用等。代价较高,不适合局域网使用
      • 动态媒体接入控制,又称为多点接入(multiple access):其特点是信道并非在用户通信时固定分配给用户
        • 随机接入:其特点是所有的用户可随机的发送信息。但如果恰巧有两个或更多的用户在同一时刻发送信息,那么在共享媒体上就要产生碰撞(即发生了冲突),使这些用户的发送都失败。因此,必须有解决碰撞的网络协议
        • 受控接入:其特点是用户不能随机的发送信息而必须服从一定的控制

传统以太网

通常用"传统以太网"来表示最早流行的10Mbit/s速率的以太网。开始局域网有两个标准,但因为市场的一番"操作",90年代以太网在局域网市场中取得了垄断地位,并且几乎成为了局域网的代名词。故介绍以太网不在考虑LLC子层。

1.计算机如何连接到局域网——适配器

  • 以太网的适配器有过滤功能,它只接受单播帧、广播帧或多播帧
    《计算机网络》——数据链路层及以太网_第12张图片

2.CSMA/CD协议

最早的以太网是将许多计算机都连接到一根总线上,如上面的第三个网络拓扑

  • 总线的特点:当一台计算机发送数据时,总线上的所有计算机都能检测到这个数据。这就是广播通信的方式。
  • 为了在总线上实现一对一的通信,可以使每一台计算机的适配器拥有一个与其他适配器都不同的地址。在发送数据帧时,在帧的首部写明接收站的地址
  • 但是,总线上只要有一台计算机在发送数据,,总线的传输资源就被占用,因此在同一时间只能允许一台计算机发送数据,否则各计算机之间就会相互干扰,使得所发送数据被破坏
  • 所以,CSMA/CD协议出生了,即载波监听多点接入/碰撞检测(Carrier Sense Multiple Access with Collision Detection)
    • 多点接入:说明这是总线型网络,许多计算机以多点接入的方式连接在一根总线上

    • 载波监听:用电子技术检测总线上有没有其他计算机也在发送。不管在发送前,还是在发送中,每个站都必须不停地检测信道

    • 碰撞检测:边发送边监听,即适配器边发送边检测信道上的信号电压的变化情况,以便判断自己在发送数据时其他站是否也在发送数据

      • 当几个站同时在总线上发送数据时,总线上的信号电压变化幅度将会增大(互相叠加)。当适配器检测到的信号电压变化幅度超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞
      • 任何一个正在发送数据的站,一旦发现总线上出现了碰撞,其适配器就要立即停止发送,免得继续进行无效的发送,白白浪费网络资源,然后等待一段随机时间后再次发送

    • 既然每一个站在发送数据前已经监听到信道为空闲,那么为什么还会出现数据在总线上的碰撞呢?

      因为电磁波在总线上总是以有限的速率传播的

      • 举个例子,A和B检测到信道空闲,A和B之间的同轴电缆长1KM,电磁波在1KM电缆的传播时延约为5μs,因此,A向B发出的数据,在约5μs后才能传送到B,而在这5μs中B认为信道空闲所以自己可以发出数据,但一旦在这5μs内发送数据就会产生碰撞

    • 在局域网的分析中,常把总线上的单程端到端传播时延记为τ,取总线两端的两个站之间的传播时延(这两个站之间的距离最大)为端到端的传播时延,即为
      《计算机网络》——数据链路层及以太网_第13张图片

  • 显然,在使用CSMA/CD协议时,一个站不可能同时进行发送和接收(但必须边发送边监听信道),所以使用CAMA/CD协议的以太网不可能进行全双工通信而只能进行双向交替通信(半双工通信)
  • 以太网的端到端往返的时间2τ称为争用期(contention period),又称碰撞窗口(colisiion window)
    • 一个站在发送完数据后,只有通过争用期的考验,即经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞,这时就可以放心把这一帧数据顺利发送完毕

接下来讨论如何确定碰撞后的重传时机

  • 以太网使用 截断二进制指数退避(truncated binary exponential backoff) 算法:让发生碰撞的站在停止发送数据后,不是等待信道变为空闲后就立即再发送数据,而是 推迟(退避) 一个随机的时间

    • 具体的退避算法如下:
      《计算机网络》——数据链路层及以太网_第14张图片
  • 现考虑一种情况,某个站发送了一个很短的帧,但在发送完毕之前并没有检测出碰撞。假定这个帧在继续向前传播到达目的站之前和别的站发送的帧发生了碰撞,因而目的站将收到有差错的帧(当然会把它丢弃)可是发送站却不知道这个帧发生了碰撞,因而不会重传这个帧。

    • 为了避免发生这种情况,以太网规定了一个最短帧长64字节,即512bit。如果要发送的数据非常少,那么必须加入一些填充字节,使帧长不小于64字节(对于10Mbit/s以太网)

  • 以太网在发送数据时,如果在争用期(共发送了64字节)没有发生碰撞,那么后续发送的数据就一定不会发生冲突。换句话说,如果发生碰撞,就一定是在发送的前64字节之内。由于一检测到冲突就立即中止发送,这时已经发送出去的数据一定小于64字节,故凡长度小于64字节的帧都是由于冲突而异常中止的无效帧

  • 强化碰撞:当发送数据的站一旦发现发生了碰撞时,除了立即停止发送数据外,还要再继续发送32bit或48bit的人为干扰信号(jamming signal),以便让所有用户都知道现在已经发生了碰撞
    《计算机网络》——数据链路层及以太网_第15张图片

  • 以太网还规定帧间最小间隔为9.6μs,相当于96比特时间,这是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接受下一帧的准备

综上,可以把CSMA/CD协议的要点归纳如下:

  1. 准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部,组成以太网帧,放入适配器的缓存,但在发送之前,必须检测信道
  2. 检测信道:若检测信道忙,则应不停的检测,一直等到信道转为空闲。若检测到信道空闲,并在96比特时间内信道保持空闲(保证了帧间最小间隔),就发送这个帧
  3. 在发送过程中仍不停地检测信道,及网络适配器要边发送边监听:
    (1)发送成功:在争用期一直未检测到碰撞。这个帧一定能够发送成功,发送完毕后,其他的啥都不做,回到1
    (2) 发送失败:在争用期检测到碰撞,这时立即停止发送数据,并按规定发送人为干扰信号,适配器接着就执行指数退避算法,等待r倍512比特时间后,返回步骤2,继续检测信道。但若重传达16次仍不能成功,则停止重传而向上报错

3.使用集线器的星形拓扑

10BASE-T双绞线以太网的出现,是局域网发展史上的一个非常重要的里程碑,从此以太网的拓扑就从总线型变成更加方便的星形网络
《计算机网络》——数据链路层及以太网_第16张图片

  • 使双绞线能够传送高速数据的主要措施是把双绞线的绞合度做的非常精确,不仅可以使特性阻抗均匀减少失真,还大大减少了电磁波辐射和无线电频率的干扰

  • 集线器的特点:

    • 使用集线器的以太网在逻辑上仍是一个总线网,各站共享逻辑上的总线,使用的还是CSMA/CD协议(各站中的适配器执行CSMA/CD协议)网络中的各站必须竞争对传输媒体的控制,并且在同一时刻至多只允许一个站发送数据
    • 一个集线器有很多借口
    • 集线器工作在物理层,它的每个接口仅仅简单的转发比特,不进行碰撞检测
    • 集线器采用了专门的芯片,进行自适应串音回波抵消。这样就可使接口转发出来的较强信号不会对该接口接收的较弱信号产生干扰
      《计算机网络》——数据链路层及以太网_第17张图片

4.以太网的信道利用率

《计算机网络》——数据链路层及以太网_第18张图片

  • 在以太网中定义参数a,它是以太网单程端到端时延τ与帧的发送时间 T 0 T_0 T0之比: a = τ T 0 a=\frac{\tau}{T_0} a=T0τ a → 0 a\rightarrow 0 a0,表示只要一发生碰撞,就立即可以检测出来,并立即停止发送,因而信道资源被浪费的时间就非常少。反之,参数a越大,表明争用期所占的比例越大,这就使得每发生一次碰撞就浪费了不少的信道资源,使得信道利用率明显降低

5.以太网的MAC层

在局域网中,硬件地址又称为物理地址或MAC地址(因为这种地址用在MAC帧中);MAC地址就是适配器地址或适配器标识符(相当于世界上你独一无二的名字)

  • 以太网V2的MAC帧的格式
    《计算机网络》——数据链路层及以太网_第19张图片
    • 我们注意上述的帧格式中其首部没有一个帧长度(数据长度)字段,那MAC子层是如何知道从接收到的以太网帧中取出多少字节的数据交付上一层协议呢?

      • 注意,这是曼彻斯特编码,当发送方把一个以太网帧发送完毕后,就不再发送其他码元了。因此,发送方网络适配器的接口上的电压就不再变化。所以,接收方就可以很容易的找到以太网帧的结束位置,再向前推4个字节就能确定数据字段的结束位置

    • 我们又注意到,传输媒体上实际传送的要比MAC帧还多8个字节

      • 第一个字段是7个字节的前同步码,其作用是使接收端的适配器在接收MAC帧时能够迅速调整其时钟频率,使它和发送端的时钟同步,也就是实现"位同步"
      • 第二个字段是帧开始定界符,定义为10101011,它的前六位的作用和前同步码一样,最后两个连续的1就是告诉接收端适配器:“MAC帧的信息马上就要来了,请适配器注意接收”
      • 注意:MAC帧的FCS字段的检验范围不包括前同步码和帧开始定界符

你可能感兴趣的:(计算机网络)