网课链接:https://www.bilibili.com/video/BV1c4411d7jb?
第三章:数据链路层
3.1.1数据链路层概述: ![](https://i-blog.csdnimg.cn/blog_migrate/7c2981db817f6018036df27819fe52ba.png)
所谓链路:就是从一个节点到想临结点的一段物理线路,中间没有任何其他的交换结点
数据链路:把实现通信协议的硬件和软件加到链路上,就构成了数据链路
数据链路层以帧为单位传输和处理数据
3.1.2 数据链路层的三个重要问题
封装成帧
发送方将待发送的数据通过应用层封装成为应用层协议数据单元,然后交付给运输层
运输层给其添加运输层协议首部,使之成为运输层协议数据单元
网络层...,...网络层....
数据链路层给网络层协议数据单元添加一个数据链路层协议首部,成为帧头,并给其添加一个帧尾
我们把数据链路层给网络层交付的协议数据单元添加帧头和帧尾的操作,称为封装成帧
添加帧头和帧尾的目的,是为了在链路上以帧为单元来传送数据
差错检测
发送方将封装好的帧通过物理层发送到传输媒体,帧在传输过程中遭遇干扰后可能会出现误码,接收方主机通过检错码来判断帧在传输过程中是否出现了差错
例如上图中的以太网V2的MAC帧中,就存在4字节的帧检验序列FCS字段,接收方主机收到帧后,通过检错码和检错算法就能检测帧中是否存在误码
可靠传输
接收方主机检验出帧出现误码了,就会将其丢弃
如果数据链路层向上层提供的是不可靠服务,则不会有更多措施
反之则需要其他措施来确保接收方主机还可以收到丢弃的这个帧的正确副本
尽管误码是不能完全避免的,但如果能实现发送方发送什么,接收方就能收到什么,就称为可靠传输
以上是针对点对点信道的数据链路层来举例的,对于使用广播信道的数据链路层,除了以上是三个问题外还有其他问题要解决
编址问题:在一条广播信道线路中,其他主机如何识别该帧不是发给自己的,这就要求帧中加入接收方地址
碰撞问题:线上多台主机都在传输帧时,信号就会发生碰撞,以太网使用CSMA/CD协议来解决这个问题,802.11局域网的媒体接入控制协议是CSMA/CA协议
3.2.1 封装成帧
我们把数据链路层给网络层交付的协议数据单元添加帧头和帧尾的操作,称为封装成帧
帧头和帧尾含有重要的控制信息
封装成帧后,物理层还要将构成帧的各比特转换为电信号发送到传输媒体,那么接收方的数据链路层如何从比特流中提取出一个个的帧?
帧头和帧尾的作用之一就是帧定界
并不是所有的帧都有帧定界标志
以太网的MAC帧在发送前,物理层会给其加上8字节的前导码,再去发送
前导码的前7字节是前同步码,作用是使接收方的时钟同步,后1个字节是帧开始定界符,表明其后就是MAC帧,以太网还规定了帧间间隔为96比特的发送时间,因此MAC帧不需要帧结束定界符。
3.2.2 透明传输
透明传输是指数据链路层对上层交付的传输数据没有任何限制,好像数据链路层不存在一样
假如帧中存在同帧结束标志一样的标识时,接收方就不能正确结束帧了,因此数据层协议一定要想办法解决这个问题,以下是几个解决方案
1. 面向字节的物理链路使用字节填充:在发送帧之前,对帧的数据部分进行扫描,每出现一个帧定界符,就在其前面加入一个转义字符,接收方提取帧后遇到转义字符就知道下一字节的内容虽然和帧定界符相同,但只作为数据,在转义字符前也插入一个转义字符,转义字符为1字节大小,10进制值为27。
2.面向比特的物理链路使用比特传输:在发送帧前,使用0比特填充法,对数据部分进行扫描,每5个连续的比特1后面插入一个比特0
3.3 差错检测
一、奇偶校验
奇偶校验如果有偶数个误码,则检验错误,实际中通常使用循环冗余校验CRC
二、循环冗余校验CRC
练习:
商中0代表不够除,1代表够除
小结如下
3.4 可靠传输
(重点,建议去看原视频)
停止-等待协议
回退N帧协议
选择重传协议
3.5 点对点协议(PPP)
PPP协议是因特网工程任务组IETF 在1992年制定的,经过1993年和1994年的修订,现在已经成为因特网的正式标准。
封装成帧 ![](https://i-blog.csdnimg.cn/blog_migrate/7d93e197af112ad6a8677ecc1480289a.png)
PPP帧格式如下:
透明传输
面向字节的异步电路采用字节填充法
面向比特的同步电路采用比特填充法
差错检测
工作状态
3.6 媒体接入控制
(重点,建议去看原视频)
静态划分信道
随机接入-CSMA/CD协议
随即接入-CSMA/CA协议
3.7 MAC地址、IP地址以及ARP协议
MAC地址是以太网的MAC子层使用的地址;
IP地址是TCP/IP体系结构网际层所使用的地址;
ARP协议属于TCP/IP体系结构的网际层,其作用是已知设备所分配的IP地址,使用ARP协议可以通过该设备的IP地址获取到设备的MAC地址
MAC地址
当多个主机连接在同一个广播信道上,要想实现两主机之间的通信,则每个主机都必须有一个唯一的标识,即一个数据链路层地址。
在每个主机发送的帧中必须携带标识发送主机和接收主机的地址,由于这类地址是用于媒体接入控制MAC(Media Access Controll),因此这类地址成为MAC地址。
MAC地址一般被固化在网卡(网络适配器)的电可擦编程只读存储器EEPROM中,因此MAC地址也被成为硬件地址;
MAC地址有时也被称为物理地址,但是这并不意味这MAC地址属于物理层!
一般情况下,用户主机包含两个网络适配器:有线网络适配器(有线网卡)和无线网络适配器(无线网卡)。每个网络适配器都有一个全球唯一的MAC地址,而交换机和路由器旺旺拥有更多的网络接口,所以会拥有更多的MAC地址。综上所述,严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。
IP地址
IP地址的详解在网络层,这里只讨论IP地址的作用
IP地址是因特网上的主机和路由器所使用的地址,用于标识两部分信息:
网络编号:标记因特网上的网络
主机编号:标识同一网络不同主机(或路由器各接口)
显然,MAC地址不具备区分不同网络的功能
如果只是一个单独的网路,不接入因特网,可以只使用MAC地址
如果主机所在的网络接入因特网,则IP地址和MAC地址都需要使用
ARP协议
B不知道C的MAC地址,数据链路层无法封装为帧,发送ARP请求报文(广播):
主机C发送ARP相应报文(单播)
3.8 集线器与交换机的区别
全双工方式:收发帧可以同时进行
集线器:逻辑上仍然是线性网络,需要使用CSMA/CD协议争夺总线资源,只能工作在半双工方式
交换机:全双工方式
不管是使用集线器还是使用交换机来扩展以太网,扩展后广播域都扩大了,集线器扩展的以太网逻辑上仍属于线性网络,碰撞域也扩大了,交换机隔离碰撞域扩大广播域
3.9 以太网交换机自学习和转发帧的流程
以太网交换机工作在数据链路层,当然也包括物理层(目前也有工作范围含有网络层的交换机,称为三层交换机)
刚开始交换机都是空的,每一个帧进入都会进行登记,登记的过程即为自学习过程
3.10 以太网交换机的生成树协议STP
增加冗余链路可以提高以太网稳定性,例如图中三个交换机的任意其中一个接口坏了都还能保持三个交换机间的正常通信
以太网交换机使用生成树协议STP可以在增加冗余电路提高网络可靠性的同时又避免网络环路带来的各种问题
3.11 虚拟局域网VLAN
VLAN概述
在多个交换机连接的大型网络中,由于交换机隔离冲突域但不隔离广播域,容易引起很多问题,例如ARP协议就会引起广播风暴
于是考虑分割广播域
使用路由器
VLAN技术
VLAN的实现机制
交换机的每个端口只有一个PVID
Access端口:A发送广播
Trunk端口
主机A发送广播
主机C发送广播
由此可知,主机与交换机间的端口应该使用Access类型,交换机之间应使用Truck类型
Hybrid端口
小结如下