数据链路层
概述
数据链路层的地位
链路
从一个结点到另一个相邻结点,中间没有其他的交换结点
数据链路
在链路上添加了协议和软件,就跟构成了数据链路
数据链路层通过帧来传递数据
数据链路层的三个重要问题
封装成帧
需要在来自网络层的数据添加,帧头和帧尾,这个过程就是封装成帧的过程
差错检测
每一个帧具有帧检验字段
通过算法查看是否有出错
可靠传输
如果传输的过程中出现了错误,就会被丢弃
如果发送方提供的是不可靠服务,丢弃就丢弃了。如果是可靠服务,就需要保证上层能过接收到真正确的副本
封装成帧
添加帧头和帧尾的过程
帧头和帧尾的作用之一是帧定界
通过帧的标志位来划分
但是不是所有的帧都包含标志位
比如像mac帧,就存在标志位,那是怎么定位的呢?
通过前导码
前导码里面包含了8字节,前7个字节是前同步码,是接收方的时钟同步
后一个字节是帧开始定界符
规定了96比特的发送时间,所有mac帧不需要帧结束定位符
透明传输
数据链路层对上层传输的数据没有任何限制
问题:如果上层传输的数据中存在flag的值,那就不能正常传输
因此存在各种数据链路层协议,为解决这个问题
可以这样,当上层数据传入数据链路层的时候,数据链路层会扫描发送的数据,如果存在数据定位符,我们就对非flag转义
但是现在有一个新的问题:
如果存在转移字符,怎么解决?
将改转义字符也转义变成普通的字符
数据部分的长度
考虑到差错控制等多种因素,每一种数据链路层的协议都规定了最大传送单元MTU
差错检验
奇偶校验
在待发送的数据后面添加一位奇偶校验位,使得整个数据当中’1’的个数为奇数或者偶数
采取这样的检测会出现问题,当发生一位误码的时候可以检测出。但是当产生两位误码的时候就可能会误认为没有发生改变
冗余码检验
主要使用
可靠传输
传输差错
- 比特差错
- 分组丢失
- 分组失序
- 分组重复
- 分组丢失,分组失序,分组重复不会存在于数据链路层,只会出现在上层
可靠传输的协议
停止等待协议
基本实现:
发送方发发送数据然后接收方检测,如果没有误码就给发送方发送ACK,发送方就可以继续发送数据。如果存在误码就会发送NAK,然后发送方就会重新发送数据
超时重传
还有一种情况,假设现在传数据,但是丢失了,也就是说接收方完全没有接收到,这种情况下,就需要超时重传了
发送方设定了一个超时时间,从发送方发送开始计时,如果超过了这个时间接收方还没有发来ACK或者NAK就需要重发数据
确认丢失
当ack丢失的时候,我们采取对数据编号的方法,这这种情况下我们只需要一比特(0,1)的方法做标记。当ack丢失的时候,发送方会再次发送这个包。接收方会通过序号检查发现是重复的包,就只会发一个确认,并将此包丢弃
确认迟到
当ack迟到的时候,接收方会误认为此包丢失了,所以这个是发送方有重新发送此包。但是发送完毕之后,接收到了ack,发送方又会发送一下包,这个时候接收方收到了发送方发来的第一个包,所以会发送ack。当ack传入到接收方的时候会误认为是第二个包的。这样就会出现冲突,所以我们需要对ack也进行编号
虽然此协议可以有效的防止数据丢失,但是信道利用率会非常的低
回退N帧协议的GBN(滑动窗口协议)
重点:
- 取帧的大小要根据约定
- 如果网络信号不好,信道利用率也很低
选择重传协议
点对点协议(ppp协议)
透明传输
当在帧的数据部分遇到了标识符的时候有两种做法
- 面向字节的异步链路
- 面向比特的同步链路
工作状态
媒体接入控制的基本概念
共享信道
- 当使用总线传输的时候,需要协调多个发送和接受使用同一个共享媒体的占用,即媒体控制mac
信道复用
频分复用
所有的用户占用不同的频段资源并行通信
时分复用
所有的用户通过时间间隙复用
波分复用
可以理解为光的频分复用
码分复用
动态接入-随机接入(CSMA/CD协议)
发送流程图
接受流程图
多址接入
多个站点接入到一个总线上
载波监听
每一个站点在发送帧之前先检查一下总线上是否存在空闲的96比特的时间,如果是忙的话就继续监听
碰撞检测
争用期
CSMA/CA协议
信道预约
虚拟载波监听
MAC地址,IP地址,ARP协议
MAC地址是数据链路层的协议
IP地址,ARP地址是网际层的协议
MAC地址
存储在eeprom中,所以也称MAC地址为硬件地址
但是MAC地址不是物理层的地址,而是数据链路层
分类
根据第一位字节的b1位和第一字节的b0位,一共有4种MAC地址
发送顺序
字节的发送是顺序
字节内的发送时逆序
多播MAC地址
判断是否是多播地址,根据第一个字节的十六进制是否能整除2,不能则为多播。能就是单播地址
IP地址
在网络层首部中右源IP地址和目标IP地址
在数据链路层的首部中有源MAC地址和目标IP地址
ARP协议
就是用于使用Ip地址发现mac地址
用于使用IP发现mac地址
通过广播查询,然后ip匹配的地址就会记录到arp高速缓存表
arp只能在一个链路和一个网络之间只用,不能跨网络使用
存在arp欺骗的问题
集线器和交换机
交换机和集线器的区别
交换机可以指定一个主机交流
集线器会使用一种类似广播的形式也就是说每一个用户都会接受到信息
交换机会扩大广播域但是不会扩展碰撞域
集线器会扩展广播域同时也会扩展碰撞域
交换机工作在主要数据链路层,集线器工作在物理层
以太网交换机自学习和转发帧的流程
交换机插上网线就能使用,最开始的时候帧转发表是空的,但是要能连上网,就会自己存储转发表
帧交换表不会永久存放,到一定的时间之后就会消除
因为mac地址也交换机接口的对应关系不是永久性的
mac地址就是物理地址工作在数据链路层
生成树协议
- 用于防止添加冗余,生成的网络环
虚拟局域网(VLAN)
随着交换机的增多,广播域也变大,就会造成很多问题
- 当某一个主机获取mac地址,使用arp协议的时候就会广播所有的域
网络上大量使用广播
同一个VLAN可以广播通信,不同的VLAN不能广播通信
ACCESS端口
access端口将会对没打标签的打标签,打标签的去标签,如果与自己的PVID相等的话就转发该帧
连接主机的端口应该设置为ACCESS
TRUNK端口
对于这个转发机制,适用于不同VLAN之间的转发
Hybrid端口