目录
一、主要作用
数据链路层的主要作用:
- 封装成帧:将网络层的数据封装成帧的个数,在数据前添加帧首,在数据后添加帧尾;
- 透明传输:对于出现在帧数据中的控制字符,但是要当做不存在的去处理;
- 差错检测:物理层只负责传输比特流,无法控制是否出错,所以需要数据链路层负责差错检测的工作。
1、封装成帧
帧是数据链路层数据的基本单元。发送端在网络层的一段数据的前后分别添加一个标记,形成“帧”;接收端根据帧前后的特定标识,识别出“帧”。
2、透明传输
透明传输指的是,控制字符在帧数据中,但是要当做不存在的去处理。也就是说,如果在帧数据中出现了和“帧尾部”的控制字符相同的字符,也要正确的进行处理。这需要对数据中的特殊字符,进行特殊处理。
对特殊字符进行处理的方法,就是在特殊字符前面,增加一个转义字符。如下图所示,ESC字符就是增加的转义字符。
如果帧数据中出现了转义字符,则继续在前面增加转义字符,表示这是转义字符:
3、差错检测
物理层只负责传输比特流,无法控制是否出错,所以需要数据链路层负责差错检测的工作。
3.1 奇偶校验码
奇偶校验码要求数据位和校验位的和,是偶数。这样,如果奇数位数字出现了问题,就会被检测出来。当然,如果是偶数位的数字出现了问题,是不能被检测到的。
3.2 循环冗余校验码CRC
循环冗余校验码,是一种根据传输或保存的数据而产生固定位数校验码的方法。固定位数可能是一位,也可能是多位。用于检测数据传输或者保存后可能出现的差错。生成的数字计算出来,并且附加到数据后面。
模2除法:
模二除法和真实的除法很类似,差别在于,模2除法不需要借位。例如0-1等于1,但是不需要高位的数值减1。在每一位上看,实际上执行的就是异或操作,如下左图所示。
CRC的三个步骤:
- 选定一个用于校验的多项式G(x),并在数据尾部添加r个0,其中,r是G(x)中x的最高阶次数;
- 用添加了r个0的数据,用于模2除法除以多项式G(x)的位串;
- 将得到的余数,填充在原数据r个0的位置,得到可校验的位串。
注意事项:
- CRC的错误检测能力,与位串的阶数r有关,r越高检错能力越强;
- 数据链路层只进行数据的检测,不会进行数据的纠正。
二、最大传输单元MTU
MTU(Maximum Transmission Unit),最大传输单元。用于描述最大的可传输的数据帧的长度。
数据帧过大或过小,都会影响传输效率;以太网MTU一般是1500字节。
路径MTU,取决于整个传播链路中的MTU最小值。
三、以太网协议
1、MAC地址
MAC地址,也叫物理地址、硬件地址。每个设备都拥有唯一的MAC地址。
MAC地址有48位,即6个字节。通常由6组十六进制数字组成,每组都是一个字节,即两个16进制数。
2、以太网协议
以太网是一种使用广泛的局域网技术,是一种应用于数据链路层的协议。使用以太网协议可以完成相邻设备的数据帧传输。
2.1 数据格式
以太网协议的数据格式:
类型取决于后面的帧数据中承载的数据的类型,:
- 如果是IP数据,类型是0800;
- 如果是ARP请求或应答数据,类型是0806;
- 如果是RARP请求或应答数据,类型是0805。
2.2 MAC地址表
路由器中会存储一个MAC地址表,用来定位MAC地址对应的硬件接口。MAC地址表是一个映射,用来把一个MAC地址映射到一个具体的硬件接口。如图:
如果路由器发现MAC地址表中没有找到某个MAC地址,那么E将会广播数据包到除了数据发送方之外的全部硬件接口,接受到广播的硬件会向路由器反馈自己的MAC地址,然后E根据收到的反馈数据,更新MAC地址表。