5 链路层

news/2025/1/23 12:46:14/文章来源:https://www.cnblogs.com/nanyanxin/p/18687562

5 链路层

5.1 概述

节点(node):运行链路层协议的设备(主机、路由器、交换机、WiFi接入点)

链路(link):沿着通信路径连接相邻节点的通信信道

数据链路层(data link layer):将数据报封装在链路层帧(frame)中通过通信链路从一个节点传输到另一个节点

链路层提供的服务

  • 成帧
  • 链路接入:介质访问(Medium Access Control,MAC)协议规定了帧在链路上传输的规则。
    • 广播链路(broadcast link)多路访问协议(multiple access protocol)用于协调多个发送和接收节点对一个共享广播信道的访问。
    • 点对点链路(point-to-point link):无论何时链路空闲,发送方都能够发送帧(不存在MAC协议)。
  • 可靠交付:通常用于易于产生高差错率的链路(如无线链路),许多有线的链路层协议不提供可靠交付服务。
  • 差错检测和纠正

实现

  • 链路层在称为网络适配器的芯片上实现,有时也称为网络接口控制器(NIC)。
  • 大部分链路层在硬件中实现,也有部分链路层在运行于主机CPU上的软件中实现,是协议栈软件与硬件交接的地方。

5.2 差错检测和纠正技术

5.2.1 奇偶校验

一维奇偶校验:数据 + 奇偶校验位,检1位错

  • 奇校验:1的总数为奇数
  • 偶校验:1的总数为偶数

二维奇偶校验:检2位错,纠1位错

二维偶校验示例:

5.2.2 检验和

运输层的TCP和UDP协议使用了因特网检验和,对所有字段(首部+数据)计算检验和

5.2.3 循环冗余检测

链路层使用循环冗余检测(Cyclic Redundancy Check,CRC)

运输层差错检测用软件实现,应采用简单而快速如检验和这样的差错检测方案;链路层的差错检测在适配器中用专用的硬件实现,可以快速执行更复杂的CRC操作。

CRC编码/多项式编码:D+R 可以被 G 整除,检 r 位错

  • 数据D:d位
  • 附加比特R:r位,是 D*2^r / G 的余数(所有的加减运算都是模2运算,等价于异或运算)
  • 生成多项式G:r+1位

5.3 多路访问协议

协调多个发送和接收节点对一个共享广播信道的访问

5.3.1 信道划分协议(channel partitioning protocol)

时分多路复用(TDM):将时间划分为时间帧(time frame),每个时间帧划分为N个时隙(slot),时隙长度应使一个时隙内能够传输单个分组,每个节点获得了专用的传输速率 R/N bps(R为信道传输速率)。

频分多路复用(FDM):将信道划分为不同的频段,每个频段具有 R/N bps 的带宽,并把每个频段分配给N给节点中的一个。

码分多址(Code Division Multiple Access,CDMA):CDMA划分编码空间,对每个节点分配一个不同的编码,节点要发送的每个比特都要乘以它唯一的编码的比特。

5.3.2 随机接入协议(random access protocol)

随机接入协议中,所有节点总是以信道的全部速率进行发送,产生碰撞时,碰撞的每个节点都要随机地重发当前帧,直到无碰撞为止。

时隙ALOHA协议

假设:

  • 所有帧等长,均为L bit
  • 时间被划分为等长的时隙,均为L/R s(R为信道带宽)
  • 节点只在时隙起点开始传输帧
  • 节点是同步的,它们都知道时隙何时开始
  • 发生碰撞时,所有碰撞的节点都能在该时隙结束前检测到碰撞事件

操作:

  • 当节点要发送一个新帧时,它等到下一个时隙开始并在该时隙传输整个帧
  • 若无碰撞,则成功传输
  • 若有碰撞,则节点以概率 p 在后续每个时隙中重传此帧,直到无碰撞

性能:

  • N个节点,概率均为p,某个节点成功传输的概率是 p(1 - p)^(N - 1),任意节点成功传输的概率是 Np(1 - p)^(N - 1)
  • 效率是 Np(1 - p)^(N - 1),最大效率是1/e = 0.37

ALOHA协议

操作:

  • 立即传输,碰撞后立即以概率p重传

性能:

  • N个节点,概率均为p,某个节点成功传输的概率是 p(1 - p)[1]
  • 最大效率是1/(2e)

干扰传输:

载波侦听多路访问(CSMA)

  • 载波侦听(carrier sensing):一个节点在传输前先检测信道,若有其他节点在传输,该节点则等待直到检测到一小段时间没有传输再开始传输。

具有碰撞检测的CSMA(CSMA/CD)

  • 碰撞检测(collision detection):一个传输节点在传输数据时一直侦听信道,若有其他节点开始传输,该节点则立即停止传输,在等待一段随机时间之后开始载波侦听。
  • 随机时间的选择:二进制指数后退算法(节点经历n次碰撞,则随机从 [0, 1, 2, ... , 2^n - 1]中选择一个值,因此一个节点经历的碰撞次数越多,越有可能选择到更长的随机时间)

具有碰撞避免的CSMA(CSMA/CA)

  • 碰撞避免(collision avoidance):一个节点在传输前先检测信道,若有其他节点在传输,该节点则选取一个随机回退值,并在侦听到信道空闲时递减该值,侦听到信道忙时保持不变,当该值减为零时,该节点发送整个帧并等待确认。若没收到确认,则从一个更大的范围内选取随机值重复上述过程,直到收到确认完成传输。

5.3.3 轮流协议(taking-turns protocol)

轮询协议(polling protocol)

指定一个主节点,主节点以循环的方式轮询每个节点

令牌传递协议(token-passing protocol)

令牌在节点间以一定顺序传递,持有令牌的节点才能发送帧

5.4 交换局域网

5.4.1 链路层寻址和ARP

链路层地址/LAN地址/物理地址/MAC地址:适配器(网络接口)的唯一地址,具有扁平结构(对应于层次结构的IP地址),共6字节,使用16进制表示,如 1A-23-F9-CD-06-9B,MAC广播地址是 FF-FF-FF-FF-FF-FF。

地址解析协议(Address Resolution Protocol,ARP):实现网络层地址和链路层地址的转换

  • 每台主机和路由器在其内存中具有一个ARP表,包含IP地址到MAC地址的映射关系,表项中还包括寿命(TTL)值。
  • 若发送方要向子网内的主机发送一个IP数据报且ARP表中没有给定的IP地址,则要向适配器传递一个ARP查询分组,并指示适配器使用MAC广播地址发送该分组;子网中的其他适配器若收到查询分组且本地的ARP表中有给定的IP地址,则会发送一个ARP响应分组(不广播);发送方接收到响应分组后,更新ARP表,并发送IP数据报。
  • 若发送方要向子网外的主机发送一个IP数据报,则目的MAC地址应该是子网内的路由器的一个适配器的MAC地址,该路由器通过查询转发表将数据报转发到正确的链路,(若已经到达对应子网)再用ARP获取目的IP地址对应的MAC地址。
  • ARP分组中既包含链路层地址又包含网络层地址,因此ARP协议是跨越链路层和网络层边界的协议。
  • ARP表可以自动建立,ARP是即插即用的。

5.4.2 以太网

总线拓扑:是广播链路

基于集线器的星形拓扑:是广播链路

基于交换机的星形拓扑:是点对点链路

以太网技术向网络层提供无连接不可靠服务。

以太网帧结构:

(注:前同步码Preamble字段共8个字节,前7个字节相同,均为10101010,用于“唤醒”接收适配器,并且将它们的时钟和发送方的时钟同步,第8个字节为10101011,用于“警告”接收适配器,“重要的内容”就要来了)

5.4.3 链路层交换机

链路层交换机对子网中的主机和路由器是透明的。

功能

  • 过滤(filtering):决定一个帧应该被转发到某个接口还是应当丢弃
  • 转发(forwarding):决定一个帧应被导向哪个接口,并把帧移动到那个接口

交换机表(switch table):表项中包括MAC地址、通向该地址的交换机接口、表项放置在表中的时间

  • 对于一个到达的帧,若交换机表中没有该帧目的MAC地址的表项,则广播该帧(转发到除到达接口外的所有接口)
  • 若交换机表中该帧目的MAC地址对应的接口为到达接口,则丢弃该帧
  • 若交换机表中该帧目的MAC地址对应的接口为其他接口,则转发该帧到该接口

自学习(self-learning):交换机表是自动建立的,交换机是即插即用设备

  • 初始交换机表为空
  • 对于每个接口接收到的每个入帧,交换机在表中存储:该帧源MAC地址、该帧到达接口、当前时间
  • 一段时间(老化期)后,若交换机没有接收到以该地址作为源地址的帧,则删除该表项

特点

  • 交换机是即插即用设备。
  • 交换机是双工的,每个交换机接口能够同时发送和接收。
  • 交换机消除了碰撞
  • 交换机具有异质的链路:交换机将链路彼此隔离,不同链路速率可以不同、媒介可以不同。
  • 交换机易于管理。
  • 为了防止广播帧的循环,交换网络的活跃拓扑限制为一棵生成树
  • 交换机对广播风暴没有保护措施。

5.4.4 虚拟局域网

虚拟局域网(Virtual Local Area Network,VLAN):在一个基于端口的VLAN中,交换机的端口由网络管理员划分成组,每个组构成一个VLAN,每个VLAN中的端口形成一个广播域(一个端口的广播流量仅能到达域内的其他端口)

  • 解决问题:缺乏流量隔离、交换机的无效使用(较小的组用不完交换机的接口)、用户管理(必须改变物理布线)
  • 实现方法:在交换机中维护一张端口到VLAN的映射表,交换机软件仅在VLAN相同的端口之间交付帧
  • 扩展:VLAN干线连接(VLAN trunking),通过交换机上一个特殊端口(干线端口)互联两台交换机,跨越VLAN干线的帧中加入了VLAN标签(VLAN tag)字段

以太网帧结构与扩展后的帧结构对比

ACCESS端口:主要连接终端设备和交换机,只属于一个VLAN,发送和接收的帧不带有VLAN标签,帧进入交换机时打上VLAN标签,发出时判定端口与VLAN标签是否匹配,匹配则去掉标签后发送该帧,否则丢弃该帧

TRUNK端口:主要连接交换机之间的链路(VLAN干线),允许多个VLAN的帧通过,发送和接收的帧带有VLAN标签


  1. 2(N - 1) ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/873660.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【动态规划】01背包专题

01背包在恰好等于的情况下求最小物品数 MELON的难题每个物品(石头)的价值w[i]就是其自己的个数,为1 体积题目已给出。 状态定义:f[i][j]表示在前i个物品中选,且体积总和恰好等于j需要的物品个数的最小值 初始化: f[i][0] = 0 , 1 <= i <= n f[0][j] = INF, 1 <=…

阿里开源语音克隆CosyVoice2 整合包

CosyVoice2 win整合包 语音克隆CosyVoice2 链接:https://pan.quark.cn/s/5e75615a5cd4 修改webui.py默认值: # 修改默认推理模式 mode_checkbox_group = gr.Radio(choices=inference_mode_list, label=选择推理模式, value=inference_mode_list[1])# 修改随机推理种子 seed =…

KeyClicker 为用户带来真实键盘打字声音体验的应用,再现机械键盘与打字机的打字感受

如果你是一名作家,或者对打字机的声音情有独钟,KeyClicker 将是你的理想选择。许多作家认为,打字机的声音能让他们更专注、更有创作灵感。虽然实体打字机的魅力独特,但它缺乏现代设备的便捷功能,例如高效的编辑与数字化操作。而使用 KeyClicker,你既能享受打字机的经典声…

gdb调试小技巧——多个窗口显示

先用tty显示需要显示的终端的序号 ┌──(root㉿kali)-[~] └─# tty /dev/pts/3然后 vim ~/.gdbinit在文件后加一行 set context-output /dev/pts/2这里数字就是tty显示的数字 设置好之后打开gdb时就可以了

道路流量监测摄像机

道路流量监测摄像机是一种结合了监控摄像技术和交通管理的先进设备,旨在通过实时监测和分析道路上车辆的行驶情况,收集交通流量数据并进行统计分析。这种摄像机在城市交通管理、道路规划、交通安全等领域有着广泛的应用前景。道路流量监测摄像机是一种结合了监控摄像技术和交…

占用消防通道监测摄像机

占用消防通道监测摄像机是一种结合了智能分析技术和监控技术的先进设备,在预防火灾事故和保障人员安全方面具有重要意义。随着社会对安全意识不断提高以及相关法规标准日益完善,相信这种先进设备将会在更多领域得到广泛应用,并为我们创造更加安全、有序的公共环境。占用消防…

安全帽佩戴识别摄像机

安全帽佩戴识别摄像机的应用不仅仅是对现有安全管理模式的一种补充,更是对安全理念的一种革新。它打破了传统安全管理中依靠人工巡检、监督的局限性,实现了安全管理的自动化、智能化。它以一种高效、精准、持续的方式,让安全管理无处不在,让每一个工作人员都时刻处于安全的…

戴头盔识别摄像机

戴头盔识别摄像机是一种结合了智能分析技术和监控技术的先进设备,在提高安全意识和减少事故风险方面具有重要意义。随着社会对安全生产和公共秩序关注度不断提高以及相关法规标准日趋完善,相信这种先进设备将会在更多领域得到广泛应用,并为我们创造更加安全、健康的生活环境…

38个!第六批产业技术基础公共服务平台名单公布

https://mp.weixin.qq.com/s?__biz=MjM5OTUwMTc2OA==&mid=2650924081&idx=1&sn=4b020757ad7a231d0391def504479dbc&chksm=bddf0a2406acfe4e2b9612d57d3de64162d337594a44dc7f061cddcebc4d3a4982a904eb621e&scene=126&sessionid=1737537299#rd

c语言训练程序思维——贪吃蛇未完成版

c语言做的贪吃蛇,未完成,还剩“吃苹果”和“方向”,感兴趣者可以下载玩玩。(初学者,适合训练程序思维,涉及:多维数据、指针(非常值得关注)、结构体……) 通过网盘分享的文件:贪吃蛇源码分享(未完成)链接: https://pan.baidu.com/s/1FciXKqFRG3ZFUMnj7JjtTA 提取码…

plot--绘图库

目录plot--绘图库原文地址简介快速使用 plot--绘图库 原文地址 https://darjun.github.io/2020/04/12/godailylib/plot/简介 本文介绍 Go 语言的一个非常强大、好用的绘图库——plot。plot内置了很多常用的组件,基本满足日常需求。同时,它也提供了定制化的接口,可以实现我们…

查询语句-更新语句

描述查询语句->更新语句的过程:步骤0:编写查询的sql 步骤1:将 “SELECT * FROM” 修改为 “UPDATE” 步骤2:在 “WHERE” 之前新增SET关键字