admin管理员组

文章数量:1539136

数据链路层

已同步微信公众号:乐享Coding,期待你的关注!

链路(Link)就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。

数据链路(Date Link)是指把实现通信协议的硬件和软件加到链路上。

数据链路层以帧【frame】为单位传输和处理数据。

封装成帧

封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧。帧头帧尾包含重要的控制信息。帧头和帧尾的作用之一就是「帧定界」

差错检测

实际的通信链路都不是理想的,比特在传输过程中可能产生差错:1可能变成0,0可能变成1,这称为「比特差错」

在一段时间内,传输错误的比特占所传输总比特的比率称为误码率BER(Bit Error Rate)。

使用「差错检测码」来检测数据在传输过程中是否产生了比特差错,是数据链路层所解决的重要问题之一。

奇偶校验

在发送的数据后面添加1位奇偶校验位,使整个数据中1的个数位奇数(奇校验)或偶数(偶校验)。

上图可以看出当传输过程中产生「奇数位的误码」,可「检测出错误」,但是产生「偶数位的误码」,就「不能」检测出错误。

循环冗余检验(CRC)
  1. 收发双方约定一个生成多项式G(x)

  2. 发送方基于待传送和生成多项式计算出差错检测码(冗余码),将其添加到待传输的数据后面一起传输

  3. 接收方通过生成多项式来计算收到的数据是否产生了误码。

「发送方工作举例:」

「接收方工作举例:」

可靠传输

使用差错检测技术(如CRC),接收方的数据链路层就可检测出帧在传输过程中是否产生了误码(比特错误)。但是接下来该怎么处理呢,这取决于数据链路层向其上层提供的服务类型,

  • 「不可靠传输服务」:仅仅丢弃有误码的帧,其他啥都不做。
  • 「可靠传输服务」:想办法实现发送什么就接收什么。

值得一提的是,比特差错只是传输差错的一种,传输差错还包括分组丢失分组失序以及分组重复。但上述三种差错一般不会出现在数据链路层,而会出现在其上层。并且,可靠传输不仅局限于数据链路层,可以应用到计算机网络体系结构的各种协议如TCP。

实现机制

超时重传:接收方如果收不到数据分组,就不会发送ACK或NACK,导致发送方就会一直等待,为避免长时间等待,每发送完一个数据分组时,就会启动一个超时计时器,若发送方未收到任何ACK或NACK并且超过了重传时间就会重传原来的数据分组。

停止等待协议

发送方每发送一个分组,就进行停止,等待接收方的确认分组。当收到确认方的ACK确认分组后,才能发送下一个数据分组,如此反复进行。

如果接收方的ACK丢失,如何识别超时重传重复的DATA0呢?

只要保证每发送一个新的数据分组,其序号与上次发送的数据分组的序号不同就可以了。因此「用一个比特来编号」就够了,即序号0和1。这样根据数据分组的序号,接收方就可以判断出该数据分组是否重复的。接收方丢弃重复的数据分组。并给发送方针对数据分组的确认分组,以免发送方对该数据分组的再次超时重传。

如果确认分组迟到,发送方如何知道是接收方的重复确认呢?

对确认分组也进行编号就可以了。

回退N帧协议

该协议采用了「流水线传输」(下图),一次可发送多个分组,利用发送窗口来限制发送方可连续发送数据分组的个数。

假设采用3个比特给分组编序号,即序号0-7;发送方要维持一个窗口,序号落在发送窗口内的数据分组可被连续发送,而不必等收到接收方的相应确认分组后再发送。发送窗口的尺寸记为WT,在本例中,取值范围为1<WT<=(2^3)-1,如果WT的值取为1,就是停止等待协议,如果WT的值超过上限,则会造成「严重的错误」。接收窗口的尺寸记为WR,其取值只能为1,与停止等待协议相同。如图:

发送方将0-4号分组,依次连续发送出去,经过互联网的传输,正确到达了接收方,在没有出现乱序和误码,接收方按序接收他们,每接收1个,接收方就向前滑动一个位置,并给发送方发送针对所接收分组的确认分组,0-4号确认分组经互联网的传输正确达到了发送方,发送方每接收一个接收,就向前滑动一个位置,随后,发送方将收到确认的数据分组从缓存中删除了,接收方将确认的数据交给上层。

「累积确认」

接收方不一定要对收到的数据分组逐个发送确认,而是收到几个数据分组后,对按序到达的最后一个数据分组发送确认,ACKn表示序号为n及以前的所有数据分组都已正确接收。

「优点」

  • 即使确认部分分组丢失,发送方也可不必重传!
  • 减少接收方的开销。

「缺点」

  • 不能向发送方及时反映出接收方已正确接收的数据分组信息。

「出差错情况」

在本例中尽管序号为1076的数据分组正确到达接收方,由于5号分组出现了误码不被接收,他们也会受到牵连不被接收,发送方还要重传这些数据分组,这就是回退n帧(Go-back-N)。

在本例中,当发送方窗口尺寸超过7时也会出现问题(接收方无法分辨新旧分组),在此不做解释!

选择性重传协议

进一步改善回退n帧,可设法只重传出现误码的数据分组。因此,接收窗口的尺寸WR不应该等于1(而应该大于1),以便接收方先收下失序到达但无误码并且序号落在接收窗口内的那些数据分组,等到所缺分组收齐后在一并交给上层。

还以3个比特作为编号为例,发送窗口WT取值为1<WT<=2^(3-1),本例取4,接收窗口尺寸WR的取值等于发送窗口。

在本例中,当发送方窗口尺寸超过4时也会出现问题(接收方无法分辨新旧分组),在此不做解释!

数据通信方式

单播(unicast):一对一的通信。

广播(broadcast):一对所有的通信。

多播(multicast):一对一个组的通信。

媒体接入控制MAC

为降低成本,采用共享传输介质进行通信,但会造成问题,可能多个主机同时请求占用这跟共享信道。当共享信道需要考虑如何协调多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制MAC(Medium Access Control)

分类

随着技术的发展,交换技术的成熟和成本的降低,具有更高性能的使用点对点链路和链路层交换机的交换式局域网在有限领域已完全取代共享式局域网,但由于无限信道的广播天性,无线局域网仍然使用的是共享媒体技术。

静态划分信道

复用(Multiplexing)就是通过一条物理线同时传输多路用户的信号。

「频分复用FDM」

「时分复用TDM」

时分复用技术将时间划分成了一段段等长的时分复用帧,每一个时分复用的用户在每一个时分复用帧中占固定序号的间隙,复用的所有用户频率相同。

总结:TDM和FDM不能做到按需分配,因此会造成资源浪费效率低(信道利用率低)。

「码分复用CDM」

每一个用户可以在同样的时间使用同样的频带进行通信。由于各用户使用经过特殊挑选的不同码型(比较复杂),动态临时的分配给不同的用户,因此各用户之间不会造成干扰。

动态接入控制

「随机访问协议」:用户来争用信道,可能出现用户争抢的情况,就会出现冲突。

  • ALOHA协议

    • 纯ALOHA协议

      立即发送不关心其他用户会也在发送,一旦产生冲突,就重发。(想发就发)信道利用率18.4%

    • 分隙ALOHA协议

      把时间分成一个个的时间片,时间片的长度对应一帧的传输时间,新帧的产生是随机,但发送帧必须在时隙的起点,所以冲突只发生在时隙的起点。信道利用率36.8%

  • CSMA协议

    特点:先听后发

    经过监听,如果介质空闲,就发送,如果介质忙,则等待一个随机分配的时间,然后重复监听。

  • CSMA/CD协议(以太网采用此协议)

    特点:先听后发,边发边听。

    经监听,如果介质空闲,就发送,如果介质忙,持续监听,一旦空闲,立即发送。如果冲突发生,等待一个随机分布的时间在重复开始的步骤。

  • CSMA/CA协议是802.11局域网采用的无线信道访问控制协议,802.11局域网在使用CSMA/CA的同时,还使用停止等待协议。这是因为无线信道的通信质量远不如有线信道,因此无线站点每发送完一个数据帧后,要收到对方的确认帧后才能继续发送下一帧。

**受控访问协议:**站点明确的被分配占用信道(每个用户拥有控制权),不会产生冲突。

ARP协议

MAC地址:
  • 网卡上标记的地址,由48比特的16进制的数字组成,一定是全球唯一的。

「单播情况」:封装成帧时,目的地址填入目的主机的MAC地址,其他链路上主机匹配后拒收丢弃。

「多播情况」:封装成帧时,目的地址填入多播MAC地址(处于同一组内的主机维护一个多播MAC地址的缓存表),该链路中处于同一组的主机缓存表中匹配,其余主机丢弃。

「广播情况」:封装成帧时,目的地址填入广播MAC地址,链路上全部主机都会匹配接收。

IP地址:
  • 网络层使用的地址
ARP协议:
  • 「根据已知设备所分配到的IP地址获取到设备的MAC地址。」

    • 源主机在得知目的主机的IP地址后,在自己的ARP高速缓存表中查找目的主机IP地址所对应的MAC地址,找到了就封装成帧【单播】,

    • 如果没找到,就以广播MAC地址为目的地址,封装成帧,在链路中发送APR请求【广播】(包含自己的IP地址,目的IP地址和自己的MAC地址,与广播MAC地址)

    • 该链路的所有主机收到该请求后,目的主机收到后,发现其IP地址与自己的IP地址对应,将源主机的IP地址与MAC地址缓存到自己的ARP高速缓存表中,然后给源主机发送ARP响应【单播】(包含自己的IP地址,源主机IP地址和自己的MAC地址,源主机MAC地址)

    • 源主机收到ARP响应之后就可以将目的IP地址和MAC地址缓存到自己的高速ARP缓存表中,之后可以封装成帧【单播】。

  • 作用范围:逐段链路或逐个网络(不能跨网络使用!!!

「数据报转发过程中,源IP地址和目的IP地址始终不变,源MAC地址和目的MAC地址一直改变!」

集线器与交换机的区别

  • 工作层次
    • 「集线器」在物理层。
    • 「交换机」在数据链路层。
  • 转发方式
    • 「集线器」采用广播形式,无论哪个端口收到数据之后,都要广播到所有的端口。
    • 「交换机」根据MAC地址转发数据,收到数据包之后,检查报文的目的MAC地址,找到对应的端口进行转发,而不是广播到所有的端口。
  • 传输模式
    • 「集线器」内部采用了总线型拓扑,各个节点共用一条总线进行通信,数据包的发送和接收采用了CSMA/CD协议,在同一时间内必须是单向的,只能维持在半双工模式下。两个端口不能同时收发数据,并且当两个端口通信时,其他端口不能工作。因此,集线器的效率低。
    • 「交换机」上的两个端口通信时,它们之间的通道是相互独立的,可以实现全双工通信。两个端口同时收发数据。

「总结:交换机的性能要远远优于集线器。目前,交换机的成本已经降低,集线器逐步退出了市场。」

交换机

以太网交换机工作在数据链路层(也包括物理层)。

两个功能:转发(forwarding)和泛洪(flooding)

交换机收到帧后,在帧交换表中查找帧的目的MAC地址所对应的接口号,然后通过该接口转发帧。它是一种即插即用的设备,启动时内部的帧交换表是空的,随着网络各主机间的通信,通过自学习算法逐渐建立起帧交换表。

上图中,为简单起见,将A,B,C等字母作为各主机的MAC地址,假设主机A给主机B发送帧,该帧从交换机的接口1进入交换机,交换机1首先进行登记的工作,将该帧的源MAC地址A记录到自己的帧交换表中,将该帧进入自己的接口1,相应地记录到帧交换表中,这就是自学习。

之后交换机1对该帧进行转发,该帧的目的MAC地址是B,在帧交换表中查找MAC地址B,找不到,于是对该帧进行盲目地转发,即链路上所有的主机及其他交换机都会收到该帧【广播】,这称为泛洪

主机B的网卡收到该帧后,就知道这是发送给自己的帧,于是就接收该帧,主机C的网卡收到该帧后,发现不是发送给自己的帧丢弃。

交换机1转发的帧从交换机2的接口2进入交换机2,交换机首先进行登记的工作,将该帧的源MAC地址A记录到自己的帧交换表中,记录进入的接口2,之后对该帧进行转发,查表发现找不到,于是就泛洪除了自己以外的所有接口,主机D,E,F均收到该帧后发现目的MAC地址不匹配,就丢弃该帧。

「总结」

交换机收到帧后,先进行登记(自学习),然后查表转发,没有就泛洪,有就定向转发!

注意:每条登记的记录不是永久的,有效时间一过就自动删除!

虚拟局域网VLAN

广播域:网络中可以收到广播帧的范围。

网络中会频繁出现广播信息,如地址解析协议(ARP)路由信息协议(RIP),动态主机配置协议(DHCP),由于交换机会扩大以太网的规模,并且扩大广播域,极易造成广播风暴(交换机无限发送广播帧,导致网络资源大量占用),使用路由器可以隔离广播域,因为默认情况下,不会对数据包进行转发,但路由器成本较高,因此采用了VLAN技术。

「VLAN是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑具有某些共同的需求。」

简单理解VLAN就是将局域网进行分组,不同的组的广播域相互隔离!

VLAN的实现机制

对以太网的MAC帧格式进行扩展,「加入了4字节的VLAN标记」。也称【打标签】,VLAN标记的最后12比特VLAN标识符VID,唯一的标记了以太网帧属于哪一个VLAN。

添加4字节的VLAN标记是交换机实现(交换机打标签),当交换机转发该帧时,对于同一个VLAN组的主机,会去掉4字节的标签,(交换机找组去标签)。

交换机端口类型:

  • Access端口

    • 用于用户与交换机的接口,只能属于1个VLAN,交换机的每个端口有且仅有一个PVID值,只接受未打标签的MAC帧,根据PVID进行打标签(字段中的VID值与PVID值相同)。

  • Trunk端口

    • 用于交换机之间(下图接口5)或交换机与路由器之间

  • Hybrid端口

    • 上述两者的结合,实现机制为维护一个列表,查看VID是否在端口的去标签列表中,若存在就去标签再转发,不存在就直接转发。

本文标签: 最全链路层笔记数据ARP