OSI模型——数据链路层

  数据链路层作为物理层的上层,为网络层提供服务,提供了成帧,差错控制,流量控制等功能

成帧

  帧是数据链路层规定的最小的数据传送逻辑单位,帧将网络层交下来的数据包按照所采用的协议根式,封装成一定形式的帧,帧还需要考虑双方的同步问题,计算帧的校验和,帧的基本格式:

在这里插入图片描述

  • 帧定界:标志了帧的开始与结束,包括字节计数法,字符填充法,位填充法
  • 地址:属于物理或硬件地址,用于设备或机器的物理寻址,如网卡地址
  • FCS:帧校验序列,用来判断传输是否正确
透明传输

学习了上面的成帧协议后,了解到了对于一些特定的控制字符如帧的首部,尾部,都是特定的比特流,比如下面的SOH
在这里插入图片描述
那么就有一个问题,如果在数据中也出现了同样的比特流该怎么办?
在这里插入图片描述
我们平时在编程的时候,会有转义字符 \ ,这样后面的符号等就会被赋予其他的含义,那如果数据中出现了 \ 呢?则通过 \ 两个转义字符来进行区分,这里数据链路层也是采用了这种思想
在这里插入图片描述
这里的ESC就是转义字符
如果数据中出现了转义字符,那么通过两个转义字符来进行区分
在这里插入图片描述

差错检测

  差错控制是数据链路层一个重要的服务,在数据通信中,由于噪声的干扰,接收端收到的数据与发送数据会有不一致的现象,如何判断是否有错就是差错检测

为什么需要帧尾部

在帧尾部有进行差错检验的fcs——帧检验序列,放在帧尾部,接收方在接收端接收完数据后,会将自己计算的fcs与帧尾的进行比较,如果不正确,会抛弃数据

奇偶校验码

  奇偶校验是将数据进行分组,每一组加上一个校验位,规则如下:

  • 奇校验:该组若有奇数个1,则在校验位补0,如果有偶数个1,则在校验位补1
  • 偶校验:改组若有偶数个1,则在校验位补0,如果有奇数个1,则在校验位补1
循环冗余校验码CRC

  采用多项式编码的方式,举个例子:
对于序列10011的多项式表示为:x4+x+1

该校验的方法如下:

  1. 双方规定G(x),而发送方把要发送的数据转为多项式K(x)的形式
  2. 定义M(x)=xr*K(x),其实就是把K(x)序列往左移动了r位,这r位就是用来给余数挪位置的
  3. 然后用M(x)/G(x)得到余数R(x),在发送的时候发送T(x)=R(x)+K(x)
  4. 接收方收到T(x)后,然后用T(x)/G(x),如果可以整除,那么就说明传输正确

eg:
在这里插入图片描述

差错控制

检测到错误后如何去做,就是差错控制

前向纠错FEC

  首先在发送端将信息进行纠错编码,然后将纠错码发送至接收端,接收端译码后发现错误就自动纠正错误,不需要重发信息

停等协议SAW

  停等协议非常好理解,就是发送方每发送一帧消息就会停下来,等待接收方接收后然后发来确认消息,这时发送方才会发送下一帧消息。确认信息位ACK表示正确确认信息,NAK表示需要重传消息,在一定的时间没有收到确认消息,发送方也会重传

  很明显,这种发送消息帧的方式效率是非常低的,所以被淘汰掉了

自动请求重传ARQ

  既然一个一个发送会导致效率很低,那么一次性发送多帧称为了改进的主要方向,ARQ又分为回退N选择重传两种

回退N(Go Back N)

  回退N属于ARQ,所以发送方一次会发送多帧数据,不必等待接收方的应答,在连续发送多帧数据后,陆续接受到接收方的确认信息,如果接收到NAK消息,则从该帧往后的所有数据全部重新发送

  • 优点:提高了效率
  • 缺点:由于出错后,要进行回退,所以导致很多正确的帧重传,会降低发送效率
选择重传协议(SR)

  了解了回退N协议后,选择重传协议就很好理解了,选择重传协议只会把错误的帧进行重传,而在接收端会有一个缓冲区,存储接收到的错误帧后面的帧,在收到重传后的帧后从缓冲中取出,这样就按顺序接收了

  • 优点:避免重传正确的帧,提高了信道利用率
  • 缺点:接收端需要一个缓存,控制比较复杂
滑动窗口协议

  滑动窗口是指在发送端和接收端都有一个窗口,所谓窗口就是通过两个指针限定帧的范围,只有帧号发送窗口内的帧才可以发送,只有帧号在接收窗口的帧才可以接受,在确认完毕后窗口整体向前滑动

  其实滑动窗口就是上面情况的总结,根据不同的情况对应
在这里插入图片描述

MTU 与 路径MTU

帧在传输的过程中会有时延影响传输效率,所以帧过大过小都是不合适的,MTU就是数据链路层最大的传输单元,不能超过MTU的大小

  • 以太网MTU一般为1500字节

路径MTU是指经过很多网络路径时,MTU遵循短板效应,受限于最小的MTU
在这里插入图片描述
这里的MTU就是1492

mac地址
  • mac地址是指硬件地址
  • 每一个设备都有一个mac地址
  • mac地址共48位,使用十六进制表示

可以使用ipconfig来查看以太网的mac地址

以太网协议
  • 是一种使用广泛的局域网技术
  • 完成相邻设备的数据帧传输
数据格式

在这里插入图片描述

  • 目的地址和源地址都是mac类型,48位占6个字节
  • 类型分为:0800-IP数据报 0806-ARP请求 8035-RARP请求
  • CRC:校验码

这里提到的ARP,RARP都是网络层的协议

发送过程

在这里插入图片描述
在这里插入图片描述

这里A要给C发送消息,首先要确认路由器E中的mac地址映射表中是否有C的硬件接口信息,如果没有则路由器E会广播除了A,然后BC响应这种方式拿到C的硬件接口信息,有了硬件接口信息后会将数据发送给C

那如果是这种情况的话该怎么办呢?如下图,A要给C发送消息

在这里插入图片描述
这种情况下,其实数据链路层是无法完成的,这也就是以太网为什么只能是相邻物理节点之间的传输

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值