链路层
链路层提供的服务
链路层的实现,其主体部分在 **网络适配器(网络接口卡)**中。
- 成帧(framing):讲网络层传来的数据报打封成帧,帧的结构取决于链路层协议
- 链路接入:媒体访问控制(Medium Access Control, MAC)协议规定了帧在链路上的传播规则
- 可靠交付
- 差错检测和纠正
差错检测和纠正技术
差错检测的三种技术:
- 奇偶校验
- 检验和方法
- 循环沉余检测
多路访问协议
在链路网络中,点对点的传输(点对点链路)是很简单的,但是多对一的传输(被称为 广播链路),由于可能造成 碰撞(collide),如何才能协调它们?这就是被称为多路访问问题的问题。与此相应的,网络通过多路访问协议来解决这类问题。
协议类型
- 信道划分协议
- 随机接入协议
- 轮流协议
一个理想协议应该拥有的特点
- 仅有一个节点发送数据时,其吞吐量等于信道的吞吐量
- 多个节点发送数据时,其公平的共享信道的吞吐量
- 协议是分散式的,不会因为某一个节点损坏而崩溃
- 协议是简单的且成本低
#交换局域网
链路层寻址和ARP
链路层通过MAC地址作为链路层寻址的地址,而非网络层的IP地址,主要目的在于保证 各层独立 的原则,而且,局域网并非只适用于IP网络和因特网。
地址解析协议(ARP)
因为链路层处理的是MAC地址,但是网络层(IP协议)发下来的数据报只带着IP地址,因此需要把IP地址和MAC地址进行转换,至于为什么不直接用IP地址,参见上面。
每台主机或路由器在其内存中都维持着一个ARP表,用于记录IP地址对应MAC地址的映射
当一个节点想发送分组到另一个节点(可能是一台主机或路由器)时的流程:
子网内:
- 发送方会构建的一个特殊的ARP分组,其中含有发送方的IP和MAC地址,以及目的的IP地址。
- 节点的适配器会把ARP分组封在链路层帧中,并通过指示目标MAC地址为FF-FF-FF-FF-FF-FF,进行一次广播
- 接收到广播的主机会检查自己的IP地址,如果相符就发送一个ARP响应分组,告知自己的MAC地址
- 发送方得到MAC地址,同时记录在自己的ARP表中
子网外: 目的节点由某个节点变为子网内的默认路由器,由路由器转发到网络上,最终达到目标节点的子网,执行上述步骤。
以太网
以太网帧结构
- 数据字段
- 目的地址
- 源地址
- 类型:指示其上层协议,用于多路复用和分解
- CRC:循环冗余检测,用于检测帧是否出现了差错
- 前同步码:用于“唤醒”接受适配器
链路层交换机
转发和过滤
通过 交换机表,交换机会做:
- 转发:决定一个帧会被导向哪个接口
- 过滤:决定一个帧是会被转发还是被丢弃
交换机的自学习特性
原理:
- 交换机表初始为空
- 对于接受到的每个帧,存储其:
- 源MAC地址
- 到达时的接口
- 当前时间
- 一段时间没有收到某个主机的帧后,将其MAC地址从交换机表删掉
性质
- 即插即用
- 消除了多路交换时可能造成的碰撞
- 异质的链路:隔离不同的链路,使得不同链路可以在不同的媒体上运行
- 管理功能