数据链路层的定义与功能
- 数据链路层:数据链路层是在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提数据帧在信道上的“透明”传输。
- 数据链路层的基本功能:数据封装、透明传输、差错控制;
- 封装成帧(framing):在一段数据的前后分别添加首部和尾部,确定帧的界限,也就是进行帧定界;(图片来源:计算机网络与互联网_北京交通大学)
- 帧定界的方法举例:利用特殊的控制字符:不同的数据链路层协议所使用的控制字符是不同的。
- 收到完整的帧——正确运行;
- 收到不完整的帧——丢弃;
- 透明传输:当定界符与数据中的编码重复时(在多媒体数据中常常会发生),会造成错误的解读,使得内容相关性冲突(不透明);
- 解决方法:字节填充(字符填充):
- 发送端的数据链路层一一在内容数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符,如“ESC”(其ASCII编码为00011011);
- 接收端的数据链路层一-在将数据送往网络层之前删除插入的转义字符;
- 如果转义字符也出现数据当中,那么应在转义字符前面也插入一个转义字符。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
- 差错控制:数据传输过程中可能会出现的问题:1、比特差错;2、帧丢失;3、帧重复;4、帧失序;
- 在数据链路中,只关心比特差错的检测和控制,原因:一旦发生比特差错,很难自动回复;中间通信设备不掌握全部通信内容;
- 循环冗余校验(CRC)法:
- 核心运算:模二除法:模2运算的一种,与算术除法类似,但每一位除的结果不影响其它位,即不向上一位借位,所以实际上就是异或⊕。(相同为0,不同为1)
- 在发送端,把数据划分为组,假定每组k个比特;
- 假设待传输的一组数据 M = 101001 (现在 k=6 );
- 在M的后面添加供差错检测用的 n 位冗余码一起发送;
- 冗余码的计算:
- 1、 移位:首先,用二进制的模2运算进行2n乘 M 的运算,这相当于在M后面添加n个0。
- 2、求余:得到的 (k + n) 位的数除以事先选定好的长度为 (n+1) 位的除数P (CRC生成多项式),得出商是Q而余数是R,余数R比除数P少1位,即 R 是n位。
- 图解:
- 接收端对收到的帧进行CRC校验:用接收端收到的数除以P,若得出的余数 R=0,则判定这个帧无差错,就接受;否则丢弃帧。
- 整个CRC校验法的关键是P的选取,只要经过严格的挑选,并使用位数足够多的P,那么出现检测不到的差错的概率就会很小;
- CRC校验法无法进行纠错,也并不能确定哪一个或那几个出现了比特差错,所以只能做到无差错接受;(要做到“可靠传输”(即发送什么就收到什么)就必须再加上确认和重传机制。将在TCP层去考虑)。
点对点协议PPP
- 点对点协议(PPP):最初设计是为两个通过拨号或专线方式连接起来的对等节点之间数据包传输提供一种封装协议。
- PPP协议应满足的要求:
- 封装、透明、简单的差错检测;
- 建立链路所需参数的协商;
- 向上支持各种网络层协议、向下兼容多类型链路;
- 动态分配网络地址、自动检测连接状态;
- PPP协议的三个组成成分:
- 一个将IP数据报封装到串行链路的方法;
- 链路控制协议LCP(Link control protocol);
- 网络控制协议NCP(Network control protocol);
- PPP协议的五个阶段:
- 第一阶段:建立链路(LCP):建立数据链路,同时还在链路的两端动态协商一些参数,比如双方使用的认证方式、是否支持压缩等。
- 第二阶段:验证(PAP/CHAP):向对端发出身份验证请求,通过验证才能进行后续工作。常用的认证协议有PAP(口令验证协议)和CHAP(挑战握手验证协议)。
- 第三阶段:网络控制协商 (NCP) :协商PPP报文的网络层参数,如IP地址,DNS ServerIP地址等等。
- 第四阶段:会话维持阶段:所有的数据被封装成PPP协议的数据帧,然后进行一对一传输。(基于PPP协议的点对点通信);
- 第五阶段:终止PPP链路(LCP):会话终止,释放链接,回收资源;
- 封装——PPP协议的帧格式:PPP是面向字节的,所有的PPP帧的长度都是整数字节;
- 标志字段F(定界符)= 0x7E (即二进制01111110),起始即结束;
- 地址字段A固定为0xFF,实际上并不起作用;
- 控制字段C固定为0x03,实际上并不起作用(因为PPP只是点对点,比较简单);
- 协议字段:占两个字节,用来表明后面的数据部分是什么数据类型:
- 当协议字段为0x0021时, PPP帧的信息字段就是IP数据报;
- 若为0xC021,则信息字段是PPP链路控制(LCP)数据;
- 若为0x8021,则表示这是网络控制(NCP)数据
- PPP协议传输方式:同步传输、异步传输;(判断方式:发送方和接收方之间是不是按照同一个时钟节拍来进行数据传输和接收)
-
同步传输:以固定的时钟节拍来发送数据信号——面向比特;
-
异步传输:将比特分成小组进行传输;发送方可以在任何时刻发送这些比特组,而接收方无法得知这些比特组在什么时候到达——面向字符;
-
当PPP用在异步传输时,就使用特殊字符填充法(与转义字符填充方法一致);
- 字符填充法:转将信息字段中出现的每一个0x7E字节(定界符时0x7E)变成为2字节序列(0x7D0x5E)。
- 若信息字段中出现一个0x7D的字节则将其转变成为2字节序列(0x7D, 0x5D)。
- 若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,,同时将该字符的编码加以改变。
- 字符填充法:转将信息字段中出现的每一个0x7E字节(定界符时0x7E)变成为2字节序列(0x7D0x5E)。
-
当PPP用在同步传输时,协议规定采用硬件来完成比特传输——零比特填充:
- 零比特填充法:速度较快,填充字符较少,利用率较高;定界符是0x7E (即二进制01111110):
- 在发送端,先扫描,只要发现有5个连续1,则立即在后面填入一个0。
- 接收端对帧中的比特流进行扫描。每当发现5个连续1时,就把这5个连续1后的一个0删除;
- 零比特填充法:速度较快,填充字符较少,利用率较高;定界符是0x7E (即二进制01111110):
-
- PPP的差错检测:PPP不提供使用序号和确认的可靠传输;使用帧检验序列FCS(冗余码)来保证无差错接受(CRC);
- PPP协议的应用:早期拨号上网环境;PPPoE;
- PPPoE:以太网上的PPP,用户端组建一个局域网,然后把这个局域网络通过一个发送设备连到服务商端;
广播信道的数据链路层
- 局域网的主要特点:网络为一个单位所拥有,且地理范围和站点数目均有限;通信结构不再是一对一,而有可能是一对多,或者多对多;
- 以太网:目前最常用的局域网;
- 局域网的拓扑——广播信道:星形网(集线器)、环形网(多个干线耦合器连接分别每个主机,耦合器之间依次连接)、总线网、树形网;
- 广播信道的特殊问题:
- 身份标识(数据给谁的?)
- 信道争用(谁先发送?)
- 以太网的两个标准:
- DIX Ethernet V2:是世界上第一个以太网的规约,1982年;
- IEEE的802.3标准:1983年,二者只有很小的差别,因此可以将802.3局域网简称为“以太网”;
- 数据链路层的两个子层:为适应多种局域网标准,802委员会将局域网的数据链路层拆成了两个子层:
- 逻辑链路控制LLC (Logical Link Control)子层(事实上一般不考虑LLC子层);
- 媒体接入控制MAC (Medium Access Control)子层;
- MAC层的物理地址:在局域网中,硬件地址又称为物理地址,或MAC地址。
- MAC地址 = 适配器地址 = 硬件地址 = 物理地址
- MAC地址:48位,6字节;
- 前三个字节一一IEEE的注册管理机构RA分配给厂家。如:00-18-82 (hex) Huawei Technologies Co.
- 后三个字节一一由厂家自行指派,称为扩展标识符,必须保证生产出的适配器没有重复地址。
- MAC帧封装格式:
- 前同步码(7字节):使接收器建立比特同步
- 帧开始定界符SFD(1字节):指示一帧的开始:10101011
- 目的地址DA(6字节):指出要接收该帧的工作站
- 源地址SA(6字节):指示发送该帧的工作站地址;
- 类型字段(2字节):用来标志上一层使用的是什么协议,以便把收到的MAC帧的数据上交给上一层这个协议;
- 数据字段(46~1500字节):包含逻辑链路控制帧LLC+填充字段PAD;
- 逻辑链路控制帧LLC:携带的用户数据;
- 填充字段PAD:以保证帧有足够长度来适应碰撞检测的需要(当数据字段的长度小于46字节时,应在数据字段的后面加入整数字节的填充字段,以保证以太网的MAC帧长不小于64字节);
- 帧校验序列FCS(4字节):采用循环冗余校验码(CRC)用于检验帧在传输过程中有无差错;
- 适配器:网络接口板又称为通信适配器(adapter)或网络接口卡 NIC(Network Interface Card),或“ 网卡 ”。是MAC协议的实现载体。
- 适配器功能:
- 进行串行/并行转换;
- 对数据进行缓存,速率匹配;
- 安装设备驱动程序,通过操作系统与存储器等设备协调工作;
- 实现以太网协议( 封装一发送一地址检查一接收一有效判断一校验);
- 适配器检查MAC地址:
- 适配器(网卡)从网络上每收到一个MAC帧就首先用硬件检查MAC帧中的MAC地址;
- 如果是发往本站的帧则收下,然后再进行其他的处理;
- 否则就将此帧丢弃,不再进行其他的处理;
- 无效的MAC帧:对于检查出的无效MAC帧就简单地丢弃。以太网不负责重传丢弃的帧。
- 帧的长度不是整数个字节;
- 数据字段的长度不在46~1500 字节之间;
- MAC 帧长度不在64~1518 字节之间;
- 数据字段的长度与长度字段的值不一致;
- 用收到的帧检验序列FCS(冗余码)查出有差错;
CSMA/CD
- 解决信道争用的方法:
- 静态划分信道:
- 频分复用
- 时分复用
- 波分复用
- 码分复用
- 动态媒体接入控制(多点接入):
- 随机接入——碰撞检测;
- 受控接入——如令牌或轮询;
- 静态划分信道:
- CSMA/CD:载波监听多点接入/碰撞检测;
- 多点接入:表示许多计算机以多点接入的方式连接在一根总线上。
- 载波监听:是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。
- 碰撞检测:就是计算机边发送数据边检测信道上的信号电压大小。
- 当几个站同时在总线上发数据时,总线上的信号电压摆动值将会增大(互相叠加);
- 当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞;
- 所谓“碰撞”就是发生了冲突。因此“碰撞检测”也称为“冲突检测”;
- CDMA/CD原理:每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送。
- 发现 - 停止 - 等待
- 如何发现碰撞:当某个站监听到总线是空闲时,也可能总线并非真正是空闲的。
- A向B发出的信息,要经过一定的时间后才能传送到B;
- B若在A发送的信息到达B之前发送自己的帧(因为这时B的载波监听检测不到A所发送的信息),则必然要在某个时间和A发送的帧发生碰撞;
- 碰撞的结果是两个帧都变得无用;
- 传播时延对载波监听的影响:
- 使用CSMA/CD 协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信)一一协商过程;
- 每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。
- 这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率。
- 争用期:最先发送数据帧的站,在发送数据帧后至多经过时间2τ (两倍的端到端往返时延)就可知道发送的数据帧是否遭受了碰撞。以太网的端到端往返时延2τ称为争用期,或碰撞窗口。经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
- 等待时间:发生碰撞的站在停止发送数据后,要推迟(退避)一 个随机时间才能再发送数据。
- 截断二进制指数退避算法:
- 确定基本退避时间,一般是取为争用期2t;
- 定义重传次数k,k≤10,即k= Min[重传次数,10]
- 从整数集合[0,1… (2k-1)]中随机地取出一一个数,记为r。重传所需的时延就是r倍的基本退避时间。
- 当重传达16次仍不能成功时即丢弃该帧,并向高层报告。
- 争用期长度:以太网取51.2 μs为争用期的长度。对于10 Mb/s传统以太网,在争用期内可发送512bit,即64字节。以太网在发送数据时,若前64 字节没有发生冲突,则后续的数据就不会发生冲突。传统以太网最短有效帧长为64字节;
- 强化碰撞:当发送数据的站一旦发现发生了碰撞时:
- 立即停止发送数据;
- 再继续发送若干比特的人为干扰信号(jamming signal),以便让所有用户都知道现在已经发生了碰撞。
- 人为信号干扰:
局域网扩展设备
- 局域网络的主要拓展设备:
- 物理层拓展:集线器;
- 数据链路层拓展:网桥、交换机;
- 集线器:
- 集线器是使用电子器件来模拟实际电缆线的工作。集线器很像一个多接口的转发器,工作在物理层。
- 使用集线器的以太网在逻辑上仍是一个总线网,各工作站使用的还是CSMA/CD协议 ,并共享逻辑上的总线;
- 用集线器组成更大的局域网都会在同一个碰撞域之中:
- 集线器的优点:
- 跨域通信;
- 扩大了局域网覆盖的地理范围;
- 集线器缺点:
- 扩展范围及站点数有限;
- 碰撞域增大了,但总的吞吐量并未提高;
- 如果不同的碰撞域使用不同的数据率,那么就不能用集线器将它们互连起来;
- 网桥:
- 网桥(Network Bridge)工作在数据链路层,根据MAC帧的目的地址对收到的帧进行转发;
- 因此,网桥具有过滤帧的功能。当网桥收到一个帧时,并不是向所有的接C转发此帧,而是先检查此帧的目的MAC地址,然后再确定将该帧转发到哪一个接口;
- 网桥的优点:
- 网桥使各网段成为隔离开的碰撞域;
- 过滤通信量,增大吞吐量;
- 扩大物理范围,增加站点数目;
- 提高了可靠性,不同网段不会互相干扰;
- 可互连不同物理层、不同MAC子层和不同速率(如10 Mb/s和100 Mb/s以太网)的局域网;
- 网桥的缺点:
- 存储转发增加了时延;
- 在MAC子层并没有流量控制功能;
- 网桥只适合于用户数不太多(不超过几百个)和通信量不太大的局域网,否则有时还会因传播过多的广播信息而产生网络拥塞——这就是所谓的广播风暴;
- 透明网桥:常用的网桥;“透明”是指局域网上的站点并不知道所发送的帧将经过哪几个网桥 (即无需手动配置转发表);透明网桥是一种即插即用设备,其标准是IEEE 802. 1D;
- 自学习建立转发表:
- 基本思想:若从A发出的帧从接口x进入了某网桥,那么从这个接口出发沿相反方向一定可把一个帧传送到A;
- 网桥每收到一个帧时,就记下其源地址和进入网桥的接口,作为转发表中的一个项目;
- 在转发帧时,则是根据收到的帧首部中的目的地址查找转发表,决定转发的接口;
- 在转发表中除了写入地址和接口外,还有帧进入该网桥的时间,以反映当前网络的最新拓扑状态;
- 生成树算法建立转发表:当设置了并行的两个或多个网桥时,为了避免在回路中产生无
限循环的问题,采用生成树算法。 - 以太网交换机——多接口网桥:以太网交换机(switch)或第二层交换机工作在数据链路层;
- 既可以看作是交换式集线器,又可看作一种改进了的多接口网桥,与传统的网桥相比,它能提供更多的端口、更好的性能、更强的管理功能以及更便宜的价格;
- 是目前局域网中最常用的扩展设备;
- 特点:
- 自学习;
- 转发/过滤;
- 消除回路;
- 每个接口都可以直接与主机相连,全双工工作方式;
- 能同时连通许多对的接口,进行无碰撞传输;
- 使用专用的交换结构芯片,交换速率较高。