【计算机网络】第三章:数据链路层

简介: 惟有主动付出,才有丰富的果实获得收获。

@[toc]

第三章:数据链路层

3.1 数据链路层概述

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

数据链路:是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路。

数据链路层是以为单位传输和处理数据。

image-20220909095756996

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

封装成帧

image-20220909100836508

差错检测

image-20220909100909586

可靠传输

image-20220909100926303

使用给广播信道的数据链路层

广播信道很容易发生碰撞,所以要使用以太网的媒体接入控制协议来解决这些维问题。

image-20220909101158914

3.2 封装成帧

封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧。

image-20220909102954201

image-20220909112829056

帧头和帧尾的作用

帧头和帧尾中包含重要的控制信息

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

image-20220909104728133

帧头和帧尾用特定的标志来区分一个个帧。

image-20220909104844085

当数据在传输过程中出现差错时,帧定界符的作用就更加明显,假定发送端在尚未发送完一个帧时突然出现故障,中断了发送,但随后又恢复正常,于是重新发送刚才未发送完的帧,由于使用了帧定界符,接收端就知道前面收到的数据是个不完整的数据(只有首部没有尾部),必须丢弃。

3.3 透明传输

透明传输是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。

面对字节的物理链路使用字节填充

当数据部分出现和帧定界符一样的字节时,数据链路层就会错误的找到帧的边界,导致数据部分因为没有帧定界符而丢失。

为了解决这一问题,可以将帧定界符得前面插入一个转义字符,接收端的数据链路层收到这个帧后会把转义字符去掉后发送给网络层。这种方法叫字节填充

如果转移字符也出现在数据部分中,那么也给其添加一个转移字符。

image-20220909112257757

面对比特的物理链路使用比特填充

因为真的首部和尾部都还是01111110作为标志,所以为了区分帧定界和数据部分中和标志一样的八个比特,讲数据部分的全部比特进行处理,只要出现5个比特1就加入一个比特0,这样就可以保证在数据部分不会出现6个连续的1,接收端收到此帧后,遇到5个比特1和一个比特0时就会删掉这个比特9,还原数据部分。

这样就能够实现透明传输。

image-20220909112749605

3.3 差错检测

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

为了判断数据报是否出现差错,可以加入差错检验码来解决这一问题。

image-20220909131652128

奇偶校验

在待发送的数据后面添加一位奇偶校验位,是整个数据中1的个数为奇数(奇校验)或偶数(偶校验)

如果有奇数个位产生误码,则奇偶性就发生了变换,可以检查出误码

如果有偶数个位发送误码,则奇偶性不发生变化,不能检查出误码(漏检)。

image-20220909132036971

循环冗余校验CRC

收发双方约定好一个生成多项式G(x)

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

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

image-20220909132532877

如何计算

image-20220909132903886

image-20220909132946423

检错码只能检测出帧在传输过程中出现了差错,但并不饿能定位错位u,因此无法纠正错误。

3.4 可靠传输的基本概念

使用差错检测技术,接收方的数据链路层就课检测出帧在传输过程中是否产生了误码(比特错误)

数据链路层向上层踢狗的服务类型

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

一般情况下,有限链路的误码率比较低,为了减少开销,并不要求数据链路层向上提供可靠传输服务,即使出现了误码,可靠传输的问题由其上层处理。

无线链路易受干扰,误码率比较高,因此要求数据链路层必须向上层提供可靠传输服务。

比特差错周四hi传输差错中的一种。

从整个计算机网络体系结构来看,传输差错还包括分组丢失分组失序以及分组重复。这些差错一般不会出现在数据链路层,而会出现其上层。

可靠传输服务并不仅局限于数据链路层,其他各层均可选择实现可靠传输

可靠传输的实现比较复杂,开销也比较大,是否使用可靠传输取决于应用需求。

可靠传输的实现机制

停止-等待协议

确认与否认

发送方发送一个数据报后,如果收到的是确认分组,那么就接着发下一个数据报,如果收到的是否认分组,那么就重发之前的数据报。

超时重传

发送方每发一个数据包,就等待接收方的应答报文,如果超过规定时间内还没有收到,就认为重传原来的数据包,这就叫超时重传

确认丢失

如果确认丢失,那么发送发就是启动超时重传,为了让接收方区分数据报,需要为每个数据包设置一个编号。

确认迟到

如果确认迟到了,发送方启动超时重传,那么接收方就会向发送方发送两次确认报文,发送方为了区分这些报文, 所以接收方发的确认报文也需要编号。

image-20220909193236925

image-20220909195929371

image-20220909200418785

image-20220909200958866

image-20220909201103476

回退N帧协议

停止-等待协议每次只能发送一个数据报,还要等接收方确认之后才能发下一个数据报,这样信道利用率很低,浪费了资源。为了提高效率,回退N帧协议产生了。

实现原理

  1. 假设采用3个比特给分组便序号,即序号0-7,本例取5
  2. 发送窗口的此村Wt的取值:1 < Wt < 2^3 - 1
  3. 接收窗口的此村Wr的取值:Wr = 1

无差错情况

发送方每次可以发5个分组,接收方可以接收一个分组后,讲创就向右移动一位,接收下一个分组,每次接收一个分组就向发送方发送一个确认。

累计确认:接收方可以不用每次接收一个分组就返回一个确认,可以等几个分组都接收完后,对按序到达的最后一个分组发送确认,这样就表示最后一个分组以及它之前的分组就都接收到了,这样可以节约资源。提高效率。

image-20220909201831504

有差错情况

假设当前应该接收序号5的反内战,但是5丢失了,其他分组到达了,但是由于此时接收窗口只能接收到序号5的分组,所以其他分组都不能接收,随后向发送方发送对4号的确认分组,发送方收到了几次重复的确认,就说明之前所发送的数据分组出现了差错,于是可以不等超时计时器超时就立即重传。快速重传

image-20220909202147779

若Wt超过取值范围,例如Wt=8,会出现什么情况

假设发送方一连发送了8个分组,接收方收到了8个分组,随后向发送方返回确认,但是确认延迟了,导致发送方启动了超时重传机制,又重新发了8个分组,接收方收到这8个分组之后,误以为这是新的分组,并接受了,导致发生了错误。

image-20220909202524467

总结

image-20220909202615517

image-20220909202738772

选择重传协议

回退N帧协议中接收窗口尺寸只能是1,因此接收方只能按序接受正确到达的数据分组。

一个数据分组的误码就会导致其后续多个数据分组不能被接收方按序接收而丢弃(尽管它们无乱序和误码)。这回造成发送方对这些分组的超时重传,显然这是对通信资源的极大浪费。

为了解决这一问题,可设法只重传出现误码的数据分组,因此接收窗口的尺寸应该大于1,以便接收方先手下失序但无误码并且序号落在接收窗口内的那些数据分组,等待所需分组收起后再一并送交上层。这就是选择重传协议

选择重传协议为了使发送方仅重传出现差错的分组,所以接收方不能再采用累积确认,而需要对每个正确接收到的数据分组进行逐一确认。

image-20220909202836209

过程

image-20220909204154042

发送方可以发送窗口内所有没有被接收到的分组,一旦前面几个分组收到确认了,窗口就向前移,如果有分组很久得不到确认,那么超时重传。

接收方可以接收窗口内所有的分组,如果有分组到达就向发送发发送确认分组,只要窗口的第一个没有接收到,窗口就不能向前移动。

image-20220909204551944

假设接收窗口设置比2^(n-1)大,那么也会出现和回退N帧协议一样的错误,就会产生接收方无法判断旧数据的问题。

image-20220909204746306

image-20220909204914111

3.5 点对点协议PPP

image-20220909205024269

帧格式

image-20220909205108701

透明传输

image-20220909205208447

image-20220909205230230

差错检测

image-20220909205309452

工作状态

image-20220909205337810

3.6 媒体接入控制

image-20220909205545504

静态划分信道

信道复用

image-20220909211757290

频分复用

image-20220909211850180

时分复用

image-20220909211928848

波分复用

image-20220909211946695

码分复用

image-20220909212041733

image-20220909214544074

image-20220909214556043

image-20220909214625851

image-20220909214646778

image-20220909214658138

image-20220909214719075

image-20220909214727343

image-20220909214738529

image-20220909214801608

动态接入控制

随机接入

image-20220909215045264

image-20220909215218448

image-20220909215342363

争用期

image-20220909215805728

image-20220909215929258

最小帧长

image-20220909220959755

截断二进制指数退避算法

image-20220909221200483

image-20220909221215585

信道利用率

image-20220909221510955

帧发送过程

image-20220909221557920

帧接收过程

image-20220909221630264

3.7 MAC地址、IP地址和ARP协议

  • MAC地址是以太网的MAC子层所使用的地址 (数据链路层)
  • IP地址是TCP/IP体系结构网际层所使用的地址;(网际层)
  • ARP协议属于TCP/IP体系结构的网际层,琪作用是已知设备所分配到的IP地址,使用ARP协议可以通过改IP地址获取到设备的MAC地址;(网际层

MAC地址

使用点对点信道的数据链路层不需要使用地址

而使用广播信道的数据链路层必须使用地址来区分各主机。

image-20220504153442478

MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。

image-20220504153743450

MAC地址格式

image-20220504155332310

单播MAC地址

目的MAC地址与本主机的MAC地址相同则接收,否则丢弃

image-20220504155505155

广播MAC地址

image-20220504155623167

多播MAC地址

image-20220504155701192

IP地址

IP地址是因特网上的主机和路由器所使用的地址,用于表示两部分信息:

  • 网络编号:标识因特网上数以百万计的网络
  • 主机编号:标识同一网络上的不同主机

很明显,MAC地址不具备区分不同网络的功能

  • 如果是一个单独的网络,不接入因特网,可以只有MAC地址
  • 如过要接入因特网,则IP地址和MAC地址都要使用

从网络体系结构上看IP地址与MAC地址

每一层收到上层传来的报文时都无需知道报文的内容,只需加上本层的首部,然后向下传输,自顶向下。一层一层传输。

在数据包转发过程中:

  1. IP地址目的地址保持不变
  2. MAC地址目的MAC地址逐个链路和逐个网络改变

image-20220506223321753

image-20220506223658318

主机和路由器之间是通过路由选择算法来知道其他主机或路由器的IP地址

但知道IP地址怎么知道MAC地址呢

image-20220506223733275

ARP

每个主机都有一个ARP缓存表,如果要转发数据包给其他主机时,首先在ARP缓存表里查看是否有相应的MAC地址,如果有则直接转发,否则发送ARP请求报文(本主机的IP地址和MAC地址,对方的IP地址),广播后,链路上的每台主机都会收到该请求报文,只有主机的IP地址和报文里的IP地址相同时接收该报文,并把报文中的IP地址和MAC地址填入自己的ARP缓存表里,然后在向源主机发送响应报文,以告知自己的MAC地址,以单播的形式发送该报文,源主机收到该报文后,将报文中目的主机的MAC填入自己的ARP缓存表中

image-20220910174011012

image-20220910180723469

image-20220910180805773

image-20220910180822950

image-20220910180915915

image-20220910180933861

image-20220910180945074

相关文章
|
22天前
|
存储 算法 网络虚拟化
【计算机网络】学习笔记,第三篇:数据链路层
现在的光纤宽带接入 FTTx 都要使用 PPPoE 的方式进行接入。在 PPPoE 弹出的窗口中键入在网络运营商购买的用户名和密码,就可以进行宽带上网了 利用 ADSL 进行宽带上网时,从用户个人电脑到家中的 ADSL 调制解调器之间,也是使用 RJ-45 和 5 类线(即以太网使用的网线)进行连接的,并且也是使用 PPPoE 弹出的窗口进行拨号连接的
27 5
|
4天前
计算机网络学习记录 数据链路层 Day3 (上)(2)
计算机网络学习记录 数据链路层 Day3 (上)(2)
8 2
|
4天前
计算机网络学习记录 数据链路层 Day3 (上)(1)
计算机网络学习记录 数据链路层 Day3 (上)(1)
9 2
|
23天前
计算机网络——数据链路层-媒体接入控制的基本概念
计算机网络——数据链路层-媒体接入控制的基本概念
26 7
|
23天前
|
网络协议 C语言 网络架构
计算机网络——数据链路层-点对点协议(组成部分、PPP帧格式、透明传输、差错检测、工作状态)
计算机网络——数据链路层-点对点协议(组成部分、PPP帧格式、透明传输、差错检测、工作状态)
62 7
|
23天前
计算机网络——数据链路层-媒体接入控制-静态划分信道(频分复用FDM、时分复用TDM、波分复用WDM、码分复用CDM)
计算机网络——数据链路层-媒体接入控制-静态划分信道(频分复用FDM、时分复用TDM、波分复用WDM、码分复用CDM)
22 1
|
23天前
|
缓存
计算机网络——数据链路层-可靠传输的实现机制:回退N帧协议GBN(无差错情况、累积确认、有差错情况、发送窗口尺寸)
计算机网络——数据链路层-可靠传输的实现机制:回退N帧协议GBN(无差错情况、累积确认、有差错情况、发送窗口尺寸)
17 0
计算机网络——数据链路层-可靠传输的实现机制:回退N帧协议GBN(无差错情况、累积确认、有差错情况、发送窗口尺寸)
|
4天前
|
网络协议 网络虚拟化 网络架构
计算机网络学习记录 数据链路层 Day3 (下)(2)
计算机网络学习记录 数据链路层 Day3 (下)(2)
6 0
|
4天前
|
网络协议
计算机网络学习记录 数据链路层 Day3 (下)(1)
计算机网络学习记录 数据链路层 Day3 (下)(1)
11 0
|
23天前
|
缓存
计算机网络——数据链路层-可靠传输的实现机制:选择重传协议SR(介绍、工作原理、窗口尺寸、题目练习)
计算机网络——数据链路层-可靠传输的实现机制:选择重传协议SR(介绍、工作原理、窗口尺寸、题目练习)
21 0