链路层
概述
- 相关概念:
- 结点(nodes):运行链路层协议的所有设备,包括主机、路由器、交换机节点、WIFI接入点
- 链路(link) :连接相邻节点的通信信道,包括有线链路、无线链路
- 数据帧(frame):在第二层的链路层进行传输时,必须将IP数据报封装成数据帧
- 数据链路层:将数据报从一个节点传送到该节点直接由物理链路相连的另一个节点
链路层提供的服务
-
封装成帧:IP数据报作为“数据”字段 和 若干首部字段封装成链路层帧
-
链路接入:媒体访问控制协议(Medium Access Control,MAC)规定了帧在链路上传输的规则。
-
可靠数据传输:提供了可靠交付服务,保证在链路层无差错地传输网络层数据报。通过确认和重传机制实现。
注意:链路层的可靠数据传输通常用于高比特错误率的无线链路,目的是在本地进行纠错一个差错,而不是进行重传。
链路层的可靠数据传输一般不用于低比特差错的有线链路,如:光纤、同轴电缆、双绞线。 -
差错检测和纠正:
-
当链路中因为信号衰减、电磁噪声而出现比特差错,所以链路层需要进行差错检测;
-
差错检测通过让发送节点在帧中包括差错检测比特,让接收节点进行差错检测实现,通知发送方重传或丢弃数据帧
-
纠正错误是指接收方能够直接标识和纠正比特错误,而不需要请求重传。
问:为什么要在链路层和端到端都实现可靠传输?
答:①数据传输出错的地方:物理信道因为信号衰减、噪声干扰等导致数据比特出错。网络层中的路由器因为缓存有线,导致分组丢失。
②链路层可靠保证了节点间链路进行无比特差错,对象是链路层,目标是网络层
③传输层可靠保证了网络路由无差错,对象是网络层。目标是应用层
④必须在链路层实现可靠,因为在较低层就可以提前发现物理层的错误,而不用等到传输层才发现错误。
⑤也必须在传输层实现可靠,因为这是可靠数据传输的最后一道防线,必须保证数据报正确交付给应用程序。
-
-
流量控制:用于控制发送节点向直接相连的接收节点发送数据帧的频率
-
半双工和全双工:在半双工模式中,两个节点都可发送数据,但是不能同时发送
链路层实现的位置
- 设备:在主机和路由器上都要实现
- 网络适配器(网卡):在主机上,链路层的主体部分是在网络适配器上实现的。网络适配器的核心是链路层控制器,该控制器通常是一个实现了许多链路层服务的专用芯片。例如:Intel的710控制器实现了以太网协议;AR5006控制器实现了802.11WIFI协议。
差错检测和纠错技术
比特级差错检测和纠错
- 定义:是指对一个节点发送到另一个物理上相邻节点的帧,检测是否出现比特差错,并纠正。
- 差错检测和纠正比特(Error-Detection and Correction,EDC):在发送节点上为保护比特,为数据报添加EDC增强数据。
- 发送节点:
- 保护范围:数据报,链路层帧首部中的寻址信息、序号和其他字段。
- 数据:将保护范围内所有字段作为数据进行传送
- EDC:在数据后添加EDC
- 接收节点:
- 接收比特序列 D’ 和 EDC’ ,若EDC’与EDC相同,则无错误;反之,则有错误。
奇偶校验-最基本的方法
一比特奇偶校验
- 发送方:
- 在要发送的数据D(d位)后面附加一个奇偶校验位
- 使“1”的个数是奇数(奇校验)和偶数(偶校验)
- 一起传输发送(d+1)位
- 接收方:
- 检测收到的信息(d+1)位中“1”的个数
- 偶校验:出现奇数个“1”,至少出现一个比特差错(奇数个比特差错)
- 奇校验:出现偶数个“1”,至少出现一个比特差错(奇数个比特差错)
- 注意:
- 奇偶校验可以检查出是否出现奇数个bit错误,但不能发现偶数bit错误
假设出现偶数位bit错误:00->11等价于不变;11->00等价于不变; 10->01等价于不变;01->10等价于不变;
假设不成立,矛盾。 - 假设比特差错概率很小并且假设差错是独立发生的时,那么在一个分组中同时出现多个bit错误的概率很小,所以此时一比特奇偶校验足够适合。
- 若差错集中在一起“突发”,则一帧中未检测到的差错的概率达到50%。
- 奇偶校验可以检查出是否出现奇数个bit错误,但不能发现偶数bit错误
二维奇偶校验
- 基本思想:将数据D(d位)划分位 i 行 j 列的矩阵,对每行、每列都分别计算奇偶值;最后将产生的 i+j+1奇偶比特构成链路层帧的差错检测。当某bit出现差错时,可以检测出器所在行、所在列,从而定位检测并纠正bit。
- 示例
检查和-常用于运输层
- 检验和(checksum):网络层中的IPv4首部、传输层数据报首部都有检验和字段。(因特网IPv4中只对首部计算;TCP/UDP中对所有计算;还有其他的将首部和数据分别计算得到两个检验和)
- 发送方:
- 按照16bit将数据划分
- 求所有16位的整数和,高位要“回卷”(进位补加到最低位再计算)
- 将得到的和取反码,作为检验和放在首部,发送报文
- 接收方:
- 对收到的信息做相同的求和,并取反码
- 若全为"1",则收到的数据无差错
- 只要含有“0”,则收到的数据出现差错
- 特点:
- 分组开销小,检查和位数较少。如:16bit
- 差错检测能力弱,但方法简单、速度快,适用于传输层的软件实现。
- 链路层的差错检测由硬件实现,可以执行更复杂,更强大的CRC循环冗余检测
循环冗余检测-常用于链路层
-
循环冗余检测(Cyclic Redundancy Check,CRC):现在被广泛使用的差错检测技术
-
CRC编码:又称为多项式编码,将发送的数据比特串看作0/1多项式,对其进行操作运算。
-
发送方:
- 计算出一个 r位的附加比特R,添加到数据D的后面产生DR(d+r位)
- DR能被生成多项式G模2运算整除, 发送比特串DR
- CRC编码格式:
-
接收方:
- 用生成多项式G 除以 接收到的DR (d+r位)
- 余数不为0:传输发生差错
- 余数为0:传输正确,去掉尾部R,得到数据D
-
模2运算:
- 加法不进位,减法不借位,等价于操作数的按位异或(XOR)
1011 XOR 0101 = 1110; 1001 XOR 1101 = 0100;
- 乘法、除法与二进制中的运算相同,等价于向左/向右移动k位
- 加法不进位,减法不借位,等价于操作数的按位异或(XOR)
-
计算附加比特R
-
CRC编码示例:
-
特点:
- 生成多项式G的选择:有8、12、16和32比特生成多项式
- 8bit:常用保护ATM信元首部
- 32bit:用于链路级协议
- 能检测小于r+1位的突发错误、任何奇数个差错
- 生成多项式G的选择:有8、12、16和32比特生成多项式
多路访问链路和协议
- 两种网络链路:
- 点对点链路:链路两端各有一个节点,一个发送、一个接收。如:点对点协议PPP、高级数据链路控制协议HDLC
- 广播链路:多个节点连接到一个共享的广播信道。如:以太网、局域网
- 广播信道要解决的问题:
- 传统的广播电视:单向广播,一个发送节点向其他接收节点发送
- 计算机网络:广播信道上的节点都能够发送和接收,目的是如何解决“谁在何时获得说话的权利”
- 多路访问协议:
- 作用:协调多个节点在共享广播信道上的传输,避免多个节点同时使用信道造成冲突(碰撞)
- 冲突(collide):
- 两个以上节点同时使用信道传输帧,使接收方同时受到多个帧,即在接收方处发生碰撞
- 碰撞导致接收方不能获得有效帧,在碰撞时间间隔内的广播信道都被浪费。
- 三种类型:
- 信道划分协议:把信道划分为小“时隙”;给节点分配专门的小“时隙”
- 随机访问协议:不划分信道,允许冲突;能从冲突中“恢复”
- 轮流协议:通过轮流访问信道避免冲突,要发送的节点越多轮流时间越长
信道划分协议
- 三种方法:时分多路复用(TDMA)、频分多路复用(FDMA)、码分多路复用(CDMA)
时分多路复用(Time Division Multiple Access)
- 原理:将时间划分为时间帧,每个时间帧再划分为N个时隙(N为节点数,时隙长度应保证能发送一个链路层帧的分组)。每个节点在时间帧中的固定时隙周期性传输,所以允许某些时隙暂时不传送分组。
- 特点:
- 避免冲突、公平:每个节点专用速率为 R/N
- 节点速率受限:R/N
- 效率不高:节点必须等待它的传输时隙,存在浪费信道资源
频分多路复用(Frequency Division Multiple Access)
- 原理:将信道带宽R划分为N个不同的频段(频段具有带宽R/N)
- 特点:
- 避免冲突、公平:N个节点公平划分信道频道
- 节点带宽有线、效率不高:节点带宽限制为R/N,当只有一个节点时,也被限制为R/N。
码分多路复用(Code Division Multiple Access)
- 原理:为每个节点设计一种编码,各节点使用编码对数据进行编码
- 特点:
- 抗干扰性:设计的编码足够好,使得不同节点能同时传输数据并且它们各自的接收方仍能接收到正确的数据,不在于其他节点的干扰传输。- 军工、民用
随机接入协议
- 原理:发送节点以信道全部速率 R发送数据;当有冲突时,发生冲突地每个节点分别等待一个随机时间,再进行重发链路层帧,直到帧发送成功 。
- 典型的随机接入协议: ALOHA协议、载波监听多路访问CSMA协议、带冲突检测的载波监听多路访问CSMA/CD
ALOHA协议
- ALOHA协议:
- 夏威夷大学研制的一个无线电广播通信网,采用星型拓扑结构,使地理上分散的用户通过无线电来使用中心主机;
- 中心主机通过下行信道向二级主机广播分组;
- 二级主机通过上行信道向中心主机发送分组(可能会冲突,无线电信道使一个共用信道)。
- 有两种形式:时隙ALOHA、纯ALOHA
- 时隙ALOHA:
- 假设:所有帧有L比特;时间被划分为等长的时隙;节点只能在时隙的开始点传输帧;所有节点同步传输,每个节点都知道时隙什么时候开始;如果在一个时隙中有多个节点同时传输,则所有节点都能检测到冲突。
- 操作:当节点传输新的帧时,需等到下一个时隙开始点;无冲突则节点成功传输;有冲突则节点检测到冲突后,以概率p在后续的每一个时隙重传该分组,直到成功;
- 特点:
- 当只有一个活动节点(有链路层帧发送)时,以全速R进行连续传输
- 每个节点都可以检测冲突并独立以概率p决定重传开始点
- 发送控制简单
- 有多个活动节点时效率低
- 纯ALOHA:
- ALOHA的早期形式,是一个非时隙、完全分散的协议;
- 操作:当节点有帧要发时,立即传输;如果与其他帧产生冲突,在该冲突帧传输完成后,以概率p立即重传该帧,或者等待一个帧的时间后,再以概率p重传该帧,或者以1-p的概率等待另一个帧。
- 特点:
- 每个节点与其他节点独立
- 一个节点传输时并不知道是否有其他节点正在传输
- 发生冲突时也不会停止当前传输
- 效率很低
载波监听多路访问CSMA协议
- 载波监听(Carrier Sense Multiple Access):某个节点在发送之前,先监听信道;若信道忙,则该节点等待一段时间后再次监听信道;信道空,则该节点开始传输整个数据帧。
- 特点:发前监听,可减少冲突但不能避免冲突(传播时延导致其他节点不能及时直到信道空闲与否)。
- CSMA示例图:假设有A、B、C、D四台主机共享广播信道。
带冲突检测的载波监听多路访问CSMA/CD
- CSMA/CD:增加“载波监听”和“冲突检测”两个规则,缩短无效传送时间,提高信道的利用率
- 基本原理:发送前监听,信道忙则延迟传送,信道闲则直接传送整个帧;在发送帧的过程中进行冲突检测,若有冲突发生则立即停止传输,并尽快重传该帧。
- CSMA/CD示例图:
- 以太网CSMA/CD的运行机制
-
操作示意图:
-
等待的随机时间——二进制指数回退算法:
-
轮流协议
- 多路访问协议的理想特性:
- 只有一个活动节点时,吞吐量为R b/s
- 有M个活动节点时,吞吐量为R/M b/s
- ALOHA 和CMDA协议只有第一个特性,但没有第二个特性
轮询(polling)
- 原理:所有节点中必须指定一个主节点,主节点以循环的方式轮询每个节点,告诉该节点当前可以传输数据并且只能传输多少数据。
- 优点:消除了随机接入协议的碰撞和空间歇
- 缺点:轮询的开销、轮询时延、单点故障(主节点有故障)
令牌传递(token passing)
- 原理:没有主节点,一个被称为令牌的小的特殊帧在节点之间以某种固定的次序进行交换。当该节点收到令牌时,仅当该节点需要传递数据时才继续持有,否则直接向下一个节点传递。
- 优点:分布式、效率很高
- 缺点:令牌开销;令牌延时;单点失效(某节点故障或忘记释放令牌)
交换局域网
- 交换局域网示意图:一个交换局域网连接了3个部门,两台服务器和一台与4台交换机连接的路由器。(交换机运行在链路层、路由器网络层)
物理层寻址和ARP
-
每个主机和路由器都有网络层地址和链路层地址:
-
网络层地址:节点在网络中分配的一个唯一IP地址(一个IP地址可能对应多个设备,但一台设备只拥有一个IP地址),用于把分组送到目的IP网络。
-
链路层地址:
- 又叫做MAC地址或物理地址、局域网地址,用于把数据帧从一个节点传送到另一个节点(同一个网络中)
- 实际上,并不是主机或路由器具有链路层地址,而是它们的适配器(网络接口)具有MAC地址。故主机或路由器拥有多个适配器,则对应有多个MAC地址。
- 注意:链路层交换机并不具有MAC地址,因为交换机的任务是在主机和路由器之间传输数据报
- MAC地址为6字节,48bit,共有2^48个地址;使用十六进制表示
- 网卡中的MAC地址是永久的,生产时固化在ROM中。
- MAC地址是平面结构:同一网卡的节点,在不同网络中仍有同样的MAC地址。
- IP地址具有层次结构:当节点移动到不同网络中时,IP地址发生变化
-
MAC地址识别:
- 由“网卡”负责MAC地址的封装和识别
- 发送适配器:将目的MAC地址封装在帧中,并发送。所有其他适配器都会收到该帧。
- 接收适配器:检查帧的目的MAC地址是否于自己的MAC地址匹配。如匹配,则接收该帧,链路层取出数据报,向上递交给网络层。反之,丢弃该帧。
- 广播帧:发送给所有节点的帧,FF-FF-FF-FF-FF-FF
-
地址转换
- 通信时,需要将 主机名-> IP地址-> MAC地址
- DNS域名系统:将主机名转换为IP地址
- ARP地址解析协议:将IP地址解析到MAC地址(ARP只为在同一个LAN上的节点解析IP地址)
- ARP表:
- 局域网上的每个节点(主机、路由器)都有该表,实现IP/MAC地址映射;
- 表项格式:<IP地址;MAC地址;TTL> TTL:该映射将被删除的时间
- ARP是动态更新的,即插即用,不需要网络管理员的干预
问:当一个数据帧要发送到外部网络的其他主机时,数据帧中携带的源、目的物理地址和源、目的IP地址的变化?
答:源IP地址和目的IP地址不变
源MAC地址和目的MAC地址会改变,随着每一跳路由器而改变
以太网
以太网是最为著名的有线局域网技术
- 物理拓扑结构:
- 总线拓扑(bus):上世纪流行;使用总线结构的以太网是一种广播局域网,即所有的帧传送到与该总线连接的所有适配器并被处理。
- 星型拓扑(star):目前流行;也是一种广播局域网,中心是集线器(集线器是物理层设备,作用对象为比特)。当集线器的某个端口收到一个比特时,就会向其他所有接口发送该比特的副本。当某集线器同时从两个不同的接口接收到帧时,生成该帧的节点必须重传该帧。
- 以太网帧结构:
- 前同步码:
- 共8字节,前7字节为“10101010”,最后一个字节是“10101011”
- 目的:使接收方和发送方的时钟同步,接收方一旦收到连续的8字节前同步码,表示接收方将收到帧。
问:为什么发送方和接收方会不同步呢?
答:适配器A的目的是根据采用的以太网类型,分别以10Mbps、100Mbps、1Gbps的速率传输帧。但实际中,发送方适配器不可能精确地以额定速率发送,但是接收方不会预先知道速率出现飘逸。- 注意:前同步码是“无效信号”,接收方收到后删除,不会向上递交;其次CRC的校验范围也不包括前同步码
- 源地址、目的地址:都是6字节;都是适配器的MAC地址
- 类型:2字节;以太网可以支持多种网络层协议。
- CRC:4字节:使接收方的适配器检查帧是否出错
- 数据:46~1500字节;表示IP数据报
- 前同步码:
以太网:不可靠的无连接服务
- 无连接:发送方适配器不需要与接收方适配器“握手”
- 不可靠:接收到的帧可能包含比特差错;
- 以太网中,收到正确帧,不会发确认帧;
- 收到出错帧,丢弃该帧,不发否定帧
- 发送适配器不会重发出错帧
- 丢弃数据的恢复使用该终端传输层的可靠数据传输机制来实现的
- 以太网的MAC协议: 无时隙的CSMA/CD协议(二进制指数回退)
链路层交换机
-
链路层设备:
-
支持多节点同时传输:具有更高的转发效率
-
转发表:每个交换机中有一个交换机转发表;其中表项格式为:(主机的MAC地址,到达主机的端口,时戳);表项通过自学习动态更新
-
自学习:当交换机收到数据帧时,交换机“学习”发送主机的位置,并记录下 (发送主机,到达端口)
-
链路层交换机的优点:
- 消除碰撞:没有碰撞发生,现代交换机时全双工的,使得交换机和节点能够在同时向对方发送帧而不会干扰。交换机不会同时向同一个接口发送帧,所以最大聚合带宽为所有接口速率之和。
- 独立的链路:交换机将链路隔离开,因此局域网中的不同链路能够以不同的速率运行并且能够在不同的媒体运行。
- 方便管理:交换机能方便进行管理,在于其自学习、即插即用。
-
嗅探交换局域网:交换机毒化
- 嗅探:当某主机运行嗅探器时,它不能探测到主机A明确到主机B的帧,但是主机C可以嗅探到那些未在主机A转发表中的目的MAC地址 和 广播帧FF-FF-FF-FF-FF-FF。
- 交换机毒化:攻击者向交换机首先发送大量的具有不同伪造源MAC地址的分组,导致交换机表被无效占用,不能为合法主机留下空间。导致合法主机的帧被交换机进行广播,从而攻击者使用嗅探器嗅探到这些帧。
-
数据帧的过滤和转发
- 当交换机收到数据帧时,首先记录到达链路和发送主机的MAC地址
- 使用数据帧的目的MAC地址,在转发表中检索
- 如果在转发表条目中找到对应的MAC地址,如果目的MAC地址对应的端口与到达端口相同,则丢弃该数据帧;否则,将数据帧转发到对应的端口
- 表项中没有对应的MAC地址,向除了到达端口之外的所有端口转发(广播)
-
路由器与交换机比较:
- 地址不同:
- 路由器使用IP地址进行转发IP数据报,也是一种存储转发分组的交换机;
- 链路层交换机使用MAC地址转发帧,也是一种存储转发分组的交换机;
- 体系层次不同:
- 路由器是第三层的交换机,网络层设备,检查网络层首部
- 链路层交换机是第二层的交换机,链路层设备,检测链路层首部
- 转发表不同:
- 路由器:使用路由算法计算转发表,基于IP地址转发
- 交换机:通过洪泛、自学习来学习转发表,基于MAC地址转发
- 优缺点不同:
- 路由器:网络寻址层次化、网络拓扑结构没有限制为生成树(允许冗余链路)、提供防火墙保护;工作在第三层,处理时延长。
- 交换机:自学习、转发/过滤效率高、MAC寻址扁平化、网络拓扑限制为生成树(防止广播帧的循环)、无广播风暴的保护;工作在第二层,处理时延较短。
- 地址不同:
虚拟局域网
-
引入:交换局域网的缺点导致支持虚拟局域网的交换机的出现。
使用交换机等级结构连接的交换局域网的缺点:
①缺乏流量控制:每个工作组都有自己的交换局域网,使用交换机等级结构与其他工作组进行互联,虽然等级结构把组流量局域在一个单一交换机中,但是广播流量仍然会传播到全网。但是为了安全和隐私,应限制广播流量的范围(如行政部接收,工程部不接收),使用中心交换机可以提供流量隔离。
②交换机的无效使用:组网太多太乱,导致交换机接口不够用,无法提供完整的服务。
③管理用户:若用户在不同的局域网内移动,使用交换机必须改变用户的物理布线。 -
虚拟局域网(Virtula Local Network):支持虚拟局域网的交换机允许一个物理局域网虚拟为多个局域网。交换机的端口被划分为组,每个组构成一个VLAN,每个VLAN中的端口形成广播域,即实现广播限制在组内。
-
虚拟局域网的互联——VLAN干线连接(VLAN trunking)
- 原理:为了使不同的VLAN进行通信,在该方法中,每台交换机的一个特殊端口被配置为干线端口(交换机中的所有VLAN都共有该端口),然后再通过拓展的以太网帧格式——802.1Q使干线端口转发到特定VLAN中。
- 802.1Q帧格式:
问:同一个VLAN中的两台主机?
A:必须连接在同一交换机上
B:可以跨越多台交换机
C:必须连接在同一集线器上
D:可以跨越堕胎路由器
问:设置VLAN的三种方式?
答:基于MAC地址划分、基于IP、基于端口 - 原理:为了使不同的VLAN进行通信,在该方法中,每台交换机的一个特殊端口被配置为干线端口(交换机中的所有VLAN都共有该端口),然后再通过拓展的以太网帧格式——802.1Q使干线端口转发到特定VLAN中。