五.数据链路层
概述
目的:了解数据链路层服务和协议原理 包括: (1)差错检测和纠错 (2)共享广播信道:多路访问协议 (3)链路层寻址 (4)可靠传输,流量控制 简单的介绍 术语: 节点:主机和路由器(包括网桥和交换机) 链路:沿通信路径连接的通信信道 帧:链路层协议交换的数据单元。封装网络层数据报
数据链路层的职责: 将分组通过一个链路,从一个节点传到临近的另一个节点。
特点: 分组的传输在经过不同链路的时候可以用不同的协议来实现
例如,最初是以太网,然后是帧中继,接着是802.11
每个链路协议提供不同服务
例如,可以在链路上提供或不提供可靠的传输
链路层服务
成帧: (1)把网络层的数据加头和尾封装成帧 (2)帧头中包括指明目的和源的"物理地址"(不同于IP地址) 链路访问: (1)媒体访问控制协议(MAC) (2)共享媒体的多路访问 在邻接节点间的可靠传输: (1)无确认无连接 (2)无确认有连接 (3)有确认有连接 差错检测: 差错由信号衰减和噪声所引起 如果接受者检测到错误,那么发送者重传帧或者丢弃帧 纠错: 接收者检测和纠正错误,不需要发送者重传。
多路访问协议(MAC协议)
分三类:
1.信道划分 把信道进行划分(TDMA,FDMA,CDMA),然后给节点分配专用的小片 2.随机访问 不划分信道,允许冲突,能够从冲突中"进行恢复" 3.轮流 通过集中来调整共享访问从而避免冲突
具体来看:
信道划分
TDMA:通过对信道进行时隙的划分,轮流访问信道。 个人理解TDMA是一种串行使用,对时间划分的话利用效率其实很低... FDMA:信道根据频段来进行划分,每个站点分配一个固定的频段,未被使用的频段空闲。 CDMA:每个节点分配一个唯一的编码,每个节点用其唯一的编码来对发送的数据进行编码,这样可以实现多个节点共存,信号可以叠加,可以同步传输而无冲突(如果编码正交化)
随机访问
节点以满数据率发送数据包,节点之间没有协调者,当有2个或更多的发送节点的时候会发生冲突. 所以随机访问MAC协议还要求能够检测冲突并且能够从冲突中恢复(比如通过延时重传)。 随机访问MAC协议的实例:
- ALOHA
- 时隙ALOHA
- CSMA,CSMA/CD,CSMA/CA
ALOHA(非时隙): 简单,不需要同步,帧一到达立即传输 但是t0发送的帧会和[t0-1,t0+1]的发送的其它帧冲突 后出现的帧会覆盖前面出现的,所以传输成功概率为 P=p(1-p)2(N-1) 时隙ALOHA: 假设情况: 所有的帧大小相同;时间被划分称为相同大小的时隙;一个时隙等于传送一帧的时间;所有节点只有在一个时隙开始的时候才能传送;节点需要同步;如果一个时隙有多个节点同时传送,所有节点都可以检测到冲突 实现: 节点发送新帧的时候等下一个时隙开始 如果没有冲突,节点可以在下一个时隙发送新帧 如果有冲突,节点在随后的时隙以概率p重传,直到成功 优点:
1.单个活跃节点满速率传送帧 2.高分散性,只用节点时隙同步 3.简单
缺点:
1.冲突,浪费时隙 2.空闲时隙 3.节点只有在传输数据包的时候才能检测到冲突
CSMA 可以类比人类的不打断他人
即传送之前侦听,如果信道空闲则传输,否则延时传输
冲突可能: 传播延时可能导致两个节点没侦听到其它节点的传送。当发生冲突的时候,整个数据包传送时间被浪费。冲突概率由距离和传播延时决定
CSMA/CD 基本思想: 当一个节点要发送数据的时候,先看是否有载波 如果没有,则发送数据,否则继续监听,一旦发现空闲就立刻传送数据。 如果发送中没有发生冲突,则传输成功,否则停止正常发送,转而发送一短暂的干扰信号强化冲突,让其他站点都知道出现了冲突。 p发送了干扰信号后,指数退避一随机时间,即假设该帧经过n次冲突后,适配器在{0,1,2,…,2m-1}中随机选取一个K值 ,其中m=min(n,10),然后等待K*512比特时间后,回到第2步
轮转协议
两者的折中,主节点轮流邀请从属节点来传送数据 控制方式:控制令牌从一个节点传到另外一个节点。
交换局域网
主要是arp协议
arp协议
数据帧的传输是依赖于MAC地址的,但是A往B发包的时候,只知道IP地址 问题:从B的IP怎么知道B的mac地址 每个局域网上的IP都有arp表,arp表中有局域网上的IP/MAC的一一对应,当A知道B的IP,想发分组给B的时候,假设B的MAC不在A的arp表,那么A广播包含B的IP地址的ARP查询包,局域网的所有机器都可以收到ARP查询,当B收到查询的时候,回送一个有自己MAC的包给A,A缓存IP-to-MAC信息直到过期. 如果是对外网发包,那么过程如下 发送过程: 在路由器R中有两个ARP表,每个针对一个IP网络 (LAN) 在主机的路由表中发现路由器的IP:111.111.111.110 在主机的ARP表中发现MAC地址:E6-E9-00-17-BB4B 等 A创建一个分组,源地址为A,目的地址为B A使用ARP得到R的111.111.111.110的MAC地址 A创建一个链路层帧,该帧以R的MAC地址为目的地址 ,并包含 A-to-B的IP数据包 A的适配器发送帧,R的适配器收到帧 R从Ethernet帧中提取IP数据包,得知目的地址为B R使用 ARP得到B的MAC地址 R创建一个包含A-to-B的IP数据包的帧发送给B