1. 概述
数据链路层负责通过一条链路从一个结点向相邻结点发送数据帧,在这之间需要使用信道,也就是传输系统。信道主要用以下两种类型:
- 点对点信道
- 广播信道
数据链路层提供的服务:
- 封装成帧:在一段数据的前后分别添加首部和尾部,用以确定帧的界限。
- 链路接入(广播信道):如果是共享介质,需要解决信道接入问题。此外还要解决链路层寻址问题
- 透明传输:数据报内容不影响链路层协议工作,也就是透明传输。常用字节填充或零比特填充
- 差错检测:检验比特在传输过程中是否出错。常用循环冗余检验(CRC)法
- 帧编号、确认重传机制(通信质量不好的链路中):使用确认重传机制,配合帧编号,实现可靠数据传输。
数据链路与帧:
- 链路:从一个结点到相邻结点的一段物理线路
- 数据链路:物理链路,还有控制数据传输的通信协议
- 网络适配器(网卡):实现了链路层协议的硬件和软件,作用于数据链层和物理层
常见的差错编码
**奇偶校验码:**检测奇数位差错
二维奇偶校验:检测奇数位差错、部分偶数位差错,纠正同一行/列的奇数位错
Internet校验和:
- 将数据划分为16位的二进制整数序列
- 求和:补码求和,再取反
- 将和放入分组(UDP,TCP检测段)
循环冗余校验码:CRC
- 添加冗余比特: D − > D R D->DR D−>DR,R用于差错检测与纠正比特
- 差错编码可分为检错码和纠错码
- 对于检错码,如果编码集的汉明距离 d = r + 1,则该差错编码可以检测r位的差错
- 编码集的汉明距离:集合内编码不同bit位数的最小值
- 对于纠错码,如果编码集的汉明距离 d = 2r + 1,则该差错编码可以纠正r位的差错
+++
2. 点对点协议PPP
2.1 PPP协议的特点
我们知道,因特网用户通常都要连接到某个**ISP(网络服务提供商)**才能接入到因特网。而PPP协议就是用户计算机和ISP进行通信时所使用的数据链路层协议。
PPP协议有以下特点:
- 简单:只提供差错检验功能,纠错、确认重传由上层协议提供
- 封装成帧:PPP协议必须规定特殊的字符作为帧定界符,以便从接收到的比特流中找到帧的开始与结束位置
- 透明传输:保证数据传输的透明性,不影响帧定界符的作用
- 多种网络协议:PPP协议必须能够在在同一条物理链路上同时支持多种网络层协议(如IP和IPX等)的运行
- 多种类型链路:PPP协议必须能在不同物理链路上传输
- 差错检测:PPP协议必须能够对接收端收到的帧进行检测,并立即丢弃有差错的帧
- 检测连接状态:如故障后自动检测链路状态,继续工作
- 最大传送单元:MTU是数据链路层的帧可以载荷的数据部分的最大长度,而不是帧的总长度
- 网络层地址协商:提供一种机制使通信的两个网络层(两个IP层)的实体能够通过协商知道或能够配置彼此的网络层地址
- 数据压缩协商:PPP协议必须提供一种方法来协商使用数据压缩算法。但PPP协议并不要求将数据压缩算法进行标准化
PPP协议的组成:
- 封装IP数据报到串行链路的方法
- 用来建立、配置和测试数据链路连接的链路控制协议LCP
- 一套网络控制协议NCP
2.2 PPP协议的帧格式
字段含义:
- 首部F:标志字段,表示帧的开始
- A:无意义
- C:无意义
- 协议:表示信息部分属于什么数据,如当协议字段为0x0021时,表示信息字段为IP数据报,等
- 信息字段:封装上层的数据报
- FCS:用于CRC冗余检测的检测序列
- 尾部F:标志字段,表示帧的结束
当信息字段中出现和标志字段一样的比特(0x7E)组合时,就必须采取一些措施使这种形式上和标志字段一样的比特组合不出现在信息字段中。
-
**字节填充:**要求在组帧时把信息字段中每个与定界符冲突的字节序列进行转换,拆封时转换回来
-
零比特填充:某些情况下,链路层传输的是同步传输(一连串的比特传输),而不是异步传输(逐个字符传送),此时PPP协议要求组帧时扫描信息字段,在连续5个1之后立即填入0,拆封时转换回来。
2.3 PPP协议的工作状态
-
当用户拨号接入ISP后,就建立了一条从用户PC到ISP的物理连接
-
用户PC向ISP发送一系列的链路控制协议LCP分组(用于LCP配置协商),申请建立LCP连接
-
协商成功,进行网络层配置,网络控制协议NCP给新接入的用户PC分配一个临时的IP地址
-
链路连接建立成功,链路打开
2.4 PPP协议的认证流程
2.4.1 PAP认证流程
PAP是基于口令的认证方法,被认证方向认证方发送Authenticate-Request报文,其中包含了身份和口令信息。若通过认证,认证方回复Authenticate-Ack,否则返回Authenticate-Nak。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nw8sI9OB-1631114150117)(…/…/…/images/计网数据链路层PPP协议认证流程之PAP.jpeg)]
2.4.2 CHAP认证流程
CHAP认证是基于挑战的认证,
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-13Lbs9XQ-1631114150120)(…/…/…/images/计网数据链路层PPP协议认证流程之CHAP.jpeg)]
##2.4.3 EAP认证流程
EAP(Extensible Authentication Protocol),可扩展认证协议,是一种普遍使用的支持多种认证方法的认证框架协议,主要用于网络接入认证。可应用于无线、有线网络中。
EAP的架构非常灵活,在认证方和被认证方交互足够多的信息之后,才会决定选择一种具体的认证方法,即允许协商所希望的认证方法。认证方不用支持所有的认证方法,因为EAP架构允许使用一个后端的认证服务器(也就是AAA服务器),此时认证方将在客户端和认证服务器之间透传消息。
3. 使用广播信道的数据链路层
3.1 局域网的数据链路层
局域网最主要的特点是:网络为一个单位所拥有,且地理范围和站点数目均有限。
而局域网内的多个节点想要正常工作时,必然存在共享信道冲突。一般由如下两种方法:静态划分信道,动态媒体接入控制。
静态划分信道
如频分复用、时分复用、波分复用、码分复用等。此种划分信道的方法代价较高,不适合局域网使用。
动态媒体接入控制
又称多点接入,特点是信道并非在用户通信时固定分配给用户。分为
- 随机接入:所有的用户可随机地发送信息,但存在碰撞(造成失真),此时必须有解决碰撞的网络协议。
- 受控接入:用户不能随机地发送信息而必须服从一定的控制,如令牌控制、线路轮询等。
- 轮询:主结点轮流邀请从属结点发送数据
- 令牌传递:控制令牌(特殊帧)从一个结点传递到下一个结点
以太网的标准
网络适配器
计算机与外界局域网的连接是通过通信适配器(adapter),又称网卡。
适配器和局域网之间的通信是通过电缆或双绞线以串行传输方式进行的,而适配器和计算机之间的通信则是通过计算机主板上的I/O总线以并行传输方式进行的。因此,适配器的一个重要功能就是要进行数据串行传输和并行传输的转换。
由于网络上的数据率和计算机总线上的数据率并不相同,因此在适配器中必须装有对数据进行缓存的存储芯片。
而控制适配器工作的是对应的驱动程序,其指示适配器怎么发送数据、怎么存储数据。
适配器是上层IP数据报与物理层连接的中介,因此计算机的硬件地址就在适配器的ROM中,软件地址(IP地址)则在计算机的存储器中。
3.2 随机接入的共享信道控制
3.2.1 CSMA/CD协议
共享一条信道的局域网主机,在同一时间只能允许一台计算机发送数据,因此需要协调局域网内计算机的数据发送。以太网采用载波监听多点接入/碰撞检测协议(CSMA/CD协议)
协议要点
- 载波监听:协议要求计算机(站**)不管在发送前,还是发送中,每个站都必须不停地检测信道**
- 碰撞检测:适配器通过检测总线上的电压变化幅度(是否超出阈值),判断是否发生碰撞(多个站同时发送数据)。如果发生碰撞,则立即停止发送并等待。
- 多点接入:说明这是总线型网络,许多计算机以多点接入的方式连接在一根总线上。
检测无碰撞产生的最小时间
一般来说,以太网的端到端往返时间为2τ(也称争用期),如果某个站经过2τ时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。因为此时发送的数据已经广播到全域,且全域的碰撞检测信号已经返回。
截断二进制指数退避
如果检测到碰撞发生,以太网采用截断二进制指数退避算法来确定碰撞后重传的时机。这种算法让发生碰撞的站在停止发送数据后,推迟(这叫作退避)一个随机的时间再发送数据。
帧的最小长度
有一种情况:某个站发送很短的帧,发送完毕之后站才检测到帧,此时发送站认为发送完毕,而接收站接收到失真的信号,这不是我们希望看到的。
因此,以太网规定了一个最短帧长64字节(即512 bit)(此长度的帧不会在争用期前发送完毕),不够则对帧的数据部分进行填充,而接收站对于长度小于64字节的帧一律丢弃。
强化碰撞
这就是当发送数据的站一旦发现发生了碰撞时,除了立即停止发送数据外,还要再继续发送32比特或48比特的人为干扰信号(jammingsignal),以便让所有用户都知道现在已经发生了碰撞
帧间最小间隔
为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备,相邻两个帧的发送间隔最小为96比特时间。
CSMA/CD协议的工作流程
- 准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部,组成以太网帧,放入适配器的缓存中。但在发送之前,必须先检测信道,并保证最小帧间隔。
- 发送前检测信道:
- 若检测到信道忙,则应不停地检测,一直等待信道转为空闲。
- 若检测到信道空闲,并在96比特时间内信道保持空闲(保证了帧间最小间隔),就发送这个帧。
- 发送中检测信道:
- 发送成功:在争用期内一直未检测到碰撞
- 发送失败:在争用期内检测到碰撞,这时立即停止发送数据,并发送人为干扰信号(强化碰撞)。随后采用截断二进制指数退避算法
3.2.2 时隙ALOHA协议:
3.3 使用广播信道的以太网
现在大部分宽带都是使用光纤作为传输介质,但双绞线还大量存在于各种网络链路中,其搭配集线器,实现了一种更可靠的以太网。
3.3.1 使用集线器的星型拓扑
集线器并不是真正意义上的计算机,其更大程度上像一个多接口的转发器。也就是说,使用集线器的以太网在逻辑上仍是一个总线网,各站共享逻辑上的总线,使用的还是CSMA/CD协议。
集线器工作在物理层,每个接口仅仅简单地转发比特,不进行碰撞检测。
3.3.2 以太网的MAC层
MAC层的硬件地址
在讨论地址问题时,“名字指出我们所要寻找的那个资源,地址指出那个资源在何处,路由告诉我们如何到达该处。”。此地址指固化在适配器的ROM中的地址,全球唯一,而每台主机的IP地址则存在动态变化(DHCP动态分配)
扩展的唯一标识符
现在IEEE的注册管理机构RA (Registration Authority)是局域网全球地址的法定管理机构,RA负责分配地址字段的6个字节中的前三个字节。局域网适配器生产厂家必须向IEEE购买由这三个字节构成的这个号(即地址块,也称组织唯一标识符OUI),地址的后三个字节则由厂家自行指派到生产的网络适配器上。
用这种方式得到的48位地址称EUI-48,也称扩展的唯一标识符。
适配器的过滤功能
适配器从网络上每收到一个MAC帧就先用硬件检查MAC帧中的目的地址。如果是发往本站的帧则收下,然后再进行其他的处理。否则就将此帧丢弃,不再进行其他的处理。
MAC帧的格式
- 目的地址:以太帧的目的地址
- 源地址:以太帧的发送地址
- 类型:标识上一层使用的是什么协议
- 数据:封装的上次数据报,46~1500字节之间
- FCS:帧检测序列(CRC检测)
以太网MAC帧的长度
以太网帧格式中并没有标识此帧长度的字段,那么接收方怎么得到帧长并确定帧传送完毕呢?
在数字信号转换为模拟信号时,适配器采用曼彻斯特编码,其重要特点就是:在曼彻斯特编码的每一个码元(不管码元是1或0)的正中间一定有一次电压的转换(从高到低或从低到高)。接收方通过观察线路中电压的变化,来确定以太帧的结束位置(帧不是无限长的,存在最小帧间隔)。结束位置往前4字节就是数据字段的结束位置。
真实数据字段的长度
在有填充字段的情况下,接收端的MAC子层在剥去首部和尾部后就把数据字段和填充字段一起交给上层协议。上层协议根据数据字段内的标识(数据长度)字段,将填充部分剥离。
3.4 扩展的以太网
3.4.1 在物理层扩展以太网
传统局域网形式上为双绞线加集线器,通过集线器进行信号转发实现扩大局域网。
现在扩展主机和集线器之间的距离的一种简单方法就是使用光纤和一对光纤调制解调器(实现光电信号转换)。由于光纤带来的时延很小,并且带宽很高,所以局域网可以很大。
但多级结构的集线器以太网也带来了一些缺点。
- 共享信道带来的碰撞:扩大的局域网内有着更多的主机,数据在整个局域网内通信,导致更多的碰撞,减小了网络吞吐量
- 线路合并带来的瓶颈:不同以太网使用不同技术实现,合并网络后总吞吐量受到短板效应影响。
3.4.2 在数据链路层扩展以太网
网桥工作在数据链路层,它根据MAC帧的目的地址对收到的帧进行转发和过滤。
网桥的内部结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IbrQKbpd-1631114150121)(…/…/…/images/计网数据链路层网桥的内部结构.PNG)]
网桥的工作方式
和网络层的路由表类似,首先判断数据帧是否合法,合法则存储数据帧的源IP与源MAC地址,并检索目的IP与目的MAC地址,如果找到直接发送,没找到则广播到除源IP地址外的其他所有主机(泛洪)
使用网桥的优点
- 过滤通信量,增大吞吐量:网桥作为存储转发中间件,其将多个碰撞域隔离,实现了真正意义上的高效互联
- 扩大了物理范围
- 提高了可靠性
- 可互连不同物理层、不同MAC子层和不同速率的以太网:网桥可作为数据的缓冲区
使用网桥的缺点
- 增加了时延:对接收到的帧要先缓存,查找转发表,再转发。之间还可能发生碰撞,执行CSMA/CD算法
- 没有流量控制功能
- 只适用于小规模局域网:太大会导致过多的广播信息(广播风暴)而产生网络拥塞。
透明网桥
透明网桥指以太网上的站点并不知道所发送的帧将经过哪几个网桥。
透明网桥还是一种即插即用设备,意思是只要把网桥接入局域网,不用人工配置转发表网桥就能工作。其转发表可以手工配置(太麻烦),也可以经过自学习得到。
网桥的自学习算法
若从某个站A发出的帧从接口x进入了某网桥,那么从这个接口出发沿相反方向一定可把一个帧传送到A。所以网桥只要每收到一个帧,就记下其源地址和进入网桥的接口,作为转发表中的一个项目。
此外在网桥的转发表中写入的信息除了地址和接口外,还有帧进入该网桥的时间。此时间可以用来更新当前网络的最新拓扑状态。(超过时间界限的项目则删除)
网桥的生成树算法
互连在一起的网桥在进行彼此通信后,就能找出原来的网络拓扑的一个子集。
因为树中不存在回路,因此可以避免转发的帧在网络中不断地兜圈子。
源路由网桥
源路由网桥就是在发送帧时,把详细的路由信息放在帧的首部中。为了发现合适的路由线路,源站源站以广播方式向欲通信的目的站发送一个发现帧作为探测之用。在传送过程中,每个发现帧都记录所经过的路由。当这些发现帧到达目的站时,就沿着各自的路由返回源站。
源路由网桥对主机不是透明的,主机必须知道网桥的标识以及连接到哪一个网段上。
多接口网桥——以太网交换机
“交换机”并无准确的定义和明确的概念,而现在的很多交换机已混杂了网桥和路由器的功能。但实际上交换机就是一个多接口的网桥。
以太网交换机的每个接口都直接与一个单个主机或另一个集线器相连,并且一般都工作在全双工方式。当主机需要通信时,交换机能同时连通许多对的接口,使每一对相互通信的主机都能像独占传输媒体那样,无碰撞地传输数据。
网络设备对比
+++
4. MAC寻址与ARP协议
4.1 ARP协议
结点通过ARP协议查询MAC地址:(同一局域网下)
结点通过ARP协议查询MAC地址:(不同局域网下)
源结点找到网关路由器的MAC地址(通过ARP协议),MAC重新封装IP数据报,找到目的结点(通过ARP)的MAC地址
+++
5. 虚拟局域网VLAN
基于端口的VLAN:分组交换机端口,去往/来自端口1-8的帧只到达端口1-8(流量隔离),且端口可以动态地分配给不同VLAN。
基于MAC地址的VLAN: