链路层
概述
链路层协议采取的动作包括差错检测、重传、流量控制和随机接入
链路层协议的任务:将网络层的数据报通过路径中的单端链路节点到节点地传送
数据报在不同的链路上可能由不同链路层协议所承载
链路层能提供的服务
- 成帧
- 链路接入
- 可靠交付通过确认和重传取得
- 流量控制
- 差错检测和纠正
- 半全工和双全工:可否同时传输和接收
链路层的主体部分在网络适配器中实现,也称为网络接口卡
差错检测和纠错
比特级差错检测和纠错
奇偶校验
奇检测
包含一个附加比特,使得d+1个比特中1的总数总为奇数;偶检测相反
只能检测奇数个比特差错
二维奇偶校验
可以纠错单个比特差错,可以检测(但不能纠正)一个分组中两个比特差错的任何组合
检验和方法
将k比特的整数加起来,并且用得到的和作为差错检测比特
循环冗余检测
- r+1比特模式,R有r个比特
- CRC采用模2算术操作,加法不进位减法不借位
接收方检验:用G去除d+r,余数为0则无差错
多路访问协议
信道划分协议
分类
- 时分多路复用(TDM):将时间划分为时间帧,并进一步划分为N个时隙
- 频分多路复用(FDM)
- 码分多址(CDMA):每个节点分配不同的编码
FDM、TDM的缺陷
- 节点被限制在R/N的平均速率,即使它为唯一有分组要发送的节点
- 节点必须总是等待它再传输序列中的轮次,即使它是唯一一个有帧要发送的节点
FDM、TDM优点
- 避免碰撞、公平划分带宽
CMDA
CDMA对每个节点只分配一种不同的编码,不同的节点能同时传输,互不干扰
随机接入协议
一个节点总是以信道的全部速率进行发送,有碰撞时,涉及碰撞的节点反复重发它的帧,直至无碰撞为止。但不是立刻重发,而是等待一个随机时延
效率
当有大量活跃节点且每个节点总有大量的帧要发送时,长期运行中成功时隙的份额
时隙ALOHA
如果有碰撞,节点在时隙结束之前检测到这次碰撞,以概率p在后续每个时隙中重传它的帧,直到该帧被无碰撞地传输出去
优点:只有一个活跃节点时工作出色
当有N个节点时其效率为Np(1-p)^(N-1),最大效率约为1/2e(0.37)
ALOHA
若发生碰撞,下一时隙以p概率重传该帧,以(1-p)概率等待一帧;等待之后如前
最大效率为1/2e
载波侦听多路访问CSMA
- 载波侦听:发送前先侦听,若空闲则发送,否则等待
- 碰撞检测:若碰撞则停止传输
有碰撞检测的CSMA:CSMA/CD
由于存在信道传播时延,即使进行了载波侦听,仍可能出现碰撞。信道传输时延越大,载波侦听节点越可能不能侦听到网络中另一节点已开始传输
轮流协议
轮询协议
指定节点之一为主节点,主节点以循环的方式轮询每个节点
缺点:
- 若只有一个节点时活跃的,主节点也必须依次轮询
- 若主节点有故障,整个信道不可操作
令牌传递协议
没有主节点,有帧要发送的节点才持有令牌,否则将令牌转发,效率高
缺点:一个节点的故障会使整个信道崩溃
LANs
LAN:Local Area Network 局域网
MAC地址
LAN地址、物理地址、MAC地址
同个子网下,数据链路层在网络适配器间传输数据使用的地址标识
长度6个字节,每个字节为一对16进制数,具有扁平结构(所以具备可迁移性)
MAC广播地址:FF-FF-FF-FF-FF-FF
地址解析协议ARP
将网络层地址转换为链路层地址
每个节点(主机或路由器)的ARP模块都有一个ARP表
DNS和ARP的区别
DNS为因特网中任何地方的主机解析主机名,但ARP只为同一个子网下的节点解析IP地址
ARP表
IP地址 | MAC地址 | TTL |
---|---|---|
222.222.222.221 | 88-B2-2F-54-1A-0F | 13:45:00 |
生存期(TTL):从表中删除每个映射的时间
ARP寻址的过程
- 发送节点构造并广播ARP查询分组,其中包括发送节点和接受节点的MAC地址和IP地址(接受节点的MAC地址为广播地址)
- 子网中的适配器接收后,向上传递给节点中的ARP模块,检查IP地址是否与ARP分组中的匹配
- 一个匹配的节点给查询节点发送回一个响应ARP分组
- 发送节点更新ARP表
发送数据报到子网以外的节点
源IP地址,源MAC地址:主机的IP地址和MAC地址
目的IP地址,目的MAC地址:目的主机IP地址,网关的MAC地址(路由器响应接口的MAC地址)
若直接使用目的主机的MAC地址,子网中的适配器都不会将其传递到网络层,因为该帧的目的地址都不与子网中适配器的MAC地址匹配
具体过程:
- 主机通过ARP获取通往目的子网的路由器与本地网相连端口的MAC地址,创建帧并将其放入子网中
- 路由器接收该帧,并将数据报交付给网络层,查询转发表,获取转发接口后,将数据转发到该接口
- 接口将数据报交付给其适配器,适配器将数据报封装到一个新的帧中,该帧的目的地址为最终目的地址的MAC地址(MAC地址通过ARP获得),同时源MAC地址为此时适配器的MAC地址
以太网
提供无连接、不可靠服务
以太网帧结构
- 数据字段 46-1500字节:以太网最大传输单元(MTU)为1500字节,数据段最小长度为46字节,如果不足需要填充
- 目的地址 6字节:目的适配器的MAC地址
- 源地址 6字节:传输该帧到LAN上的适配器的MAC地址
- 类型字段 2字节:允许以太网复用多种网络协议
- 循环冗余检测CRC 4字节:目的是使得接收适配器检测帧中是否进入了差错
- 前同步码 8字节:前七个字节为10101010,最后一个字节为10101011,用于唤醒接收适配器,同步其时钟与发送方时钟
CSMA/CD
以太网的多路访问协议
CSMA/CD机制:
- 适配器可以在任何时刻开始传输,没有时隙概念
- 载波侦听:当适配器侦听到有其他适配器正在传输,不传输帧
- 碰撞检测:当传输中的适配器检测到有其他适配器正在传输,终止传输
- 重传前适配器等待一个随机时间,通常比传输一帧的时间短
CSMA/CD工作方式:
- 适配器从网络层得到一个数据报,准备一个以太网帧并放到适配器缓存区中
- 若适配器侦听到信道空闲,开始传输
- 传输过程中监视来自其他适配器的信号能量
- 如果检测到来自其他适配器的信号能量,停止传输
- 中止后适配器进入指数后退阶段,在该帧经受了n次连续碰撞后,适配器随机从{0,1,2,…,2^m-1}为K选择一个值,m=min{n,10},适配器等待K*512比特时间,返回第二步(随机、指数增长的上界)
以太网效率
网线越长,效率越低
交换机
交换机是即插即用设备
交换机功能
过滤:决定一个帧应该转发还是丢弃
转发:决定一个帧应该被导向哪个接口,并移动帧
借助交换机表完成,交换机表:
| MAC地址 | 到达节点的交换机接口 | 表项放置在表中的时间 |
| —————– | ——————– | ——————– |
| 62-FE-F7-11-89-A3 | 1 | 9:32 |
交换机工作过程
假定有目的地址DD-DD-DD-DD-DD-DD的帧从交换机接口x到达
- 若表中没有DD-DD-DD-DD-DD-DD的表项,交换机广播该帧
- 若存在表项将DD-DD-DD-DD-DD-DD与接口x联系起来,交换机丢弃该帧(过滤功能)
- 若存在表项将DD-DD-DD-DD-DD-DD与接口y(!= x)联系起来,交换机将该帧转发到y接口,并将信息添加到表项中
自学习
- 交换机表初始为空
- 对于接口收到的每个帧,交换机在其表中记录
- 该帧源地址字段中的MAC地址
- 该帧到达的接口
- 当前的时间
- 接下来一段时间(老化期)中,交换机没有接收到以该址为源地址的帧,则删除该地址
交换机的性质
- 消除碰撞
- 异质的链路:交换机将链路彼此隔离
- 管理
交换机和路由器的比较
- 由于交换机只需要查看二层数据帧 的头部即可决策转发地址,策略十分简单,可以直接通过硬件芯片实现相应功能,所以可以做到廉价高速,被大量应用在接入层。
- 而路由器由于需要处理跨网络的连接,必须在接收到完整的 IP数据包 后才能转发数据,路由协议又比较复杂,所以只能使用软件的方式实现相应的功能,要达到高性能只能付出更高的价格
- 交换机的优缺点
- 优点:即插即用;具有相对高的分组过滤和转发速率
- 缺点:对广播风暴不提供保护措施
- 路由器的优缺点
- 优点:即使网络存在冗余路径,分组也不会通过路由器循环;对第二层的广播风暴提供了防火墙保护
- 缺点:非即插即用;处理时间较长
PPP
高级数据链路控制协议(HDLC)
PPP数据成帧
- 标志 1字节
- 地址 1字节
- 控制 1字节
- 协议 1或2字节
- 信息 可变长度
- 检验和 2或4字节
- 标志 1字节
VLAN
局域网缺点
- 缺乏流量隔离
- 交换机的无效使用
- 管理用户
支持VLAN的交换机允许经一个单一的物理局域网基础设施定义多个虚拟局域网
多协议标签交换MPLS
MPLS首部
标签、实验、S、TTL
Web请求
DHCP(UDP)、AQP、DNS(UDP)、HTTP、FTP
RIP/OSPF、BGP
详见PPT 或 课本p330
DHCP
- DHCP请求报文 生成UDP报文段 放入以太网帧 广播
- 被分解 CIDR分配地址 收到DHCPACK
ARP
- DNS查询报文
- ARP查询报文查询网关路由器MAC地址
- ARP回答,获取网关路由器的MAC地址
DNS
- 网关路由器接收转发 通过域内协议和域间协议BGP
- 找到DNS源记录 查询权威DNS 生成DNS回答报文 放入UDP IP数据报
TCP
- 生成TCP套接字
- 三次握手:TCPSYN报文段 TCPSYNACK报文段
HTTP
- HTTP请求 HTTP GET报文
- 服务器生成HTTP响应报文 放入请求内容 发送到TCP套接字
- 获取响应 渲染