数据链路层

概述

数据链路层的地位

image-20231025103310175

  1. 链路

    从一个结点到另一个相邻结点,中间没有其他的交换结点

  2. 数据链路

    在链路上添加了协议和软件,就跟构成了数据链路

  3. 数据链路层通过来传递数据

数据链路层的三个重要问题

封装成帧

需要在来自网络层的数据添加,帧头和帧尾,这个过程就是封装成帧的过程

image-20231025103913366

差错检测

每一个帧具有帧检验字段

通过算法查看是否有出错

image-20231025104213045

可靠传输

如果传输的过程中出现了错误,就会被丢弃

如果发送方提供的是不可靠服务,丢弃就丢弃了。如果是可靠服务,就需要保证上层能过接收到真正确的副本

image-20231025104521813

封装成帧

添加帧头和帧尾的过程

帧头和帧尾的作用之一是帧定界

image-20231025105011257

通过帧的标志位来划分

但是不是所有的帧都包含标志位

比如像mac帧,就存在标志位,那是怎么定位的呢?

  1. 通过前导码

    前导码里面包含了8字节,前7个字节是前同步码,是接收方的时钟同步

    后一个字节是帧开始定界符

  2. 规定了96比特的发送时间,所有mac帧不需要帧结束定位符

image-20231025105610036

透明传输

  1. 数据链路层对上层传输的数据没有任何限制

    问题:如果上层传输的数据中存在flag的值,那就不能正常传输

    image-20231025110036815

    因此存在各种数据链路层协议,为解决这个问题

    可以这样,当上层数据传入数据链路层的时候,数据链路层会扫描发送的数据,如果存在数据定位符,我们就对非flag转义

    image-20231025110406127

    但是现在有一个新的问题:

    如果存在转移字符,怎么解决?

    image-20231025110519536

    将改转义字符也转义变成普通的字符

    image-20231025110611230

  2. 数据部分的长度

    考虑到差错控制等多种因素,每一种数据链路层的协议都规定了最大传送单元MTU

差错检验

奇偶校验

在待发送的数据后面添加一位奇偶校验位,使得整个数据当中’1’的个数为奇数或者偶数

采取这样的检测会出现问题,当发生一位误码的时候可以检测出。但是当产生两位误码的时候就可能会误认为没有发生改变

冗余码检验

主要使用

可靠传输

传输差错

  1. 比特差错
  2. 分组丢失
  3. 分组失序
  4. 分组重复
  5. 分组丢失,分组失序,分组重复不会存在于数据链路层,只会出现在上层

可靠传输的协议

停止等待协议

基本实现:

发送方发发送数据然后接收方检测,如果没有误码就给发送方发送ACK,发送方就可以继续发送数据。如果存在误码就会发送NAK,然后发送方就会重新发送数据

image-20231025115733560

超时重传

还有一种情况,假设现在传数据,但是丢失了,也就是说接收方完全没有接收到,这种情况下,就需要超时重传

发送方设定了一个超时时间,从发送方发送开始计时,如果超过了这个时间接收方还没有发来ACK或者NAK就需要重发数据

image-20231030141158181

确认丢失

当ack丢失的时候,我们采取对数据编号的方法,这这种情况下我们只需要一比特(0,1)的方法做标记。当ack丢失的时候,发送方会再次发送这个包。接收方会通过序号检查发现是重复的包,就只会发一个确认,并将此包丢弃

确认迟到

当ack迟到的时候,接收方会误认为此包丢失了,所以这个是发送方有重新发送此包。但是发送完毕之后,接收到了ack,发送方又会发送一下包,这个时候接收方收到了发送方发来的第一个包,所以会发送ack。当ack传入到接收方的时候会误认为是第二个包的。这样就会出现冲突,所以我们需要对ack也进行编号

虽然此协议可以有效的防止数据丢失,但是信道利用率会非常的低

image-20231030143347874

回退N帧协议的GBN(滑动窗口协议)

image-20231030144135604

重点:

  1. 取帧的大小要根据约定
  2. 如果网络信号不好,信道利用率也很低

选择重传协议

点对点协议(ppp协议)

image-20231030150735902

透明传输

  1. 当在帧的数据部分遇到了标识符的时候有两种做法

    • 面向字节的异步链路
    • 面向比特的同步链路

    image-20231030150932832

    image-20231030151024198

工作状态

image-20231030151024198

媒体接入控制的基本概念

共享信道

  1. 当使用总线传输的时候,需要协调多个发送和接受使用同一个共享媒体的占用,即媒体控制mac

image-20231030151944904

信道复用

频分复用

所有的用户占用不同的频段资源并行通信

image-20231030152207282

时分复用

所有的用户通过时间间隙复用

image-20231030152337706

波分复用

可以理解为光的频分复用

image-20231030152509687

码分复用

image-20231030152628597

动态接入-随机接入(CSMA/CD协议)

发送流程图

image-20231101104026847

接受流程图

image-20231101104115688多址接入

多个站点接入到一个总线上

image-20231101103050893

载波监听

每一个站点在发送帧之前先检查一下总线上是否存在空闲的96比特的时间,如果是忙的话就继续监听

image-20231101103222579

碰撞检测

image-20231101103239455

争用期

image-20231101103520069

CSMA/CA协议

信道预约

虚拟载波监听

image-20231101110820915

MAC地址,IP地址,ARP协议

MAC地址是数据链路层的协议

IP地址,ARP地址是网际层的协议

MAC地址

  1. 存储在eeprom中,所以也称MAC地址为硬件地址

    image-20231101112241231

    但是MAC地址不是物理层的地址,而是数据链路层

  2. 分类

    根据第一位字节的b1位和第一字节的b0位,一共有4种MAC地址

    image-20231101113002463

  3. 发送顺序

    字节的发送是顺序

    字节内的发送时逆序

    image-20231101113121633

  4. 多播MAC地址

    image-20231101113410095

    判断是否是多播地址,根据第一个字节的十六进制是否能整除2,不能则为多播。能就是单播地址

IP地址

image-20231101113837171

image-20231101113959921

在网络层首部中右源IP地址和目标IP地址

在数据链路层的首部中有源MAC地址和目标IP地址

ARP协议

就是用于使用Ip地址发现mac地址

用于使用IP发现mac地址

通过广播查询,然后ip匹配的地址就会记录到arp高速缓存表

arp只能在一个链路和一个网络之间只用,不能跨网络使用

存在arp欺骗的问题

集线器和交换机

image-20231106141538494

交换机和集线器的区别

交换机可以指定一个主机交流

集线器会使用一种类似广播的形式也就是说每一个用户都会接受到信息

image-20231106142039698

image-20231106142310810

交换机会扩大广播域但是不会扩展碰撞域

集线器会扩展广播域同时也会扩展碰撞域

交换机工作在主要数据链路层,集线器工作在物理层

以太网交换机自学习和转发帧的流程

  1. 交换机插上网线就能使用,最开始的时候帧转发表是空的,但是要能连上网,就会自己存储转发表

  2. 帧交换表不会永久存放,到一定的时间之后就会消除

    image-20231106143323621

    因为mac地址也交换机接口的对应关系不是永久性的

  3. image-20231106143642085

    mac地址就是物理地址工作在数据链路层

生成树协议

  1. 用于防止添加冗余,生成的网络环

虚拟局域网(VLAN)

  1. 随着交换机的增多,广播域也变大,就会造成很多问题

    image-20231106144543701

    • 当某一个主机获取mac地址,使用arp协议的时候就会广播所有的域
  2. 网络上大量使用广播

    image-20231106144739764

  3. 同一个VLAN可以广播通信,不同的VLAN不能广播通信

image-20231106145924298

  1. image-20231106150151949

  2. ACCESS端口
    image-20231106150459459

    access端口将会对没打标签的打标签,打标签的去标签,如果与自己的PVID相等的话就转发该帧

    连接主机的端口应该设置为ACCESS

  3. TRUNK端口

    image-20231106150955022

    对于这个转发机制,适用于不同VLAN之间的转发

  4. Hybrid端口

    image-20231106151426644


数据链路层
https://tsy244.github.io/2023/10/25/计算机网络/数据链路层/
Author
August Rosenberg
Posted on
October 25, 2023
Licensed under