网络通信与OSI模型2 数据链路层

网络通信与OSI模型2 数据链路层

| 为何需要数据链路层?

要在通信线路上传送数据,除了必须建立物理线路(物理层的功能)之外,还必须有一些规程或协议来控制数据的传输,以保证被传输数据的正确性。实现这些规程或协议的硬件和软件就构成了数据链路层。

为保障数据的透明(任意组合的数据信息都可以在此电路上传送)与可靠(即保证数据的准确传输,链路层通常使用确认和自动重传请求机制来完成)传输,数据链路层必须具备主要功能包括:如何将数据组合成数据块(即数据帧—数据链路层的基本传送单位);如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使与接收方相匹配;以及在两个网络实体之间提供数据链路通路的建立、维持和释放的管理

img


| 数据链路层的结构

国际电工电气协会IEEE为实现局网络通信制定了IEEE 802协议簇,如上图对应于OSI参考模型中的物理层和数据链路层:

img

IEEE 802.1 :局域网体系结构、寻址、网络互联和网络

IEEE 802.2 :逻辑链路控制子层LLC的定义

IEEE 802.3 :以太网Ethernet介质访问控制协议CSMA/CD及物理层技术规范

IEEE 802.5 :令牌环网Token-Ring的介质访问控制协议及物理层技术规范

IEEE 802.11:无线局域网WLAN的介质访问控制协议及物理层技术规范

上图虽然对应于OSI参考模型中的物理层和数据链路层,但可以看出,IEEE是通过制定介质访问控制子层和逻辑链路控制子层两层规约来实现局域网通信中的数据链路层。

**介质访问控制*MAC*子层

与各种传输介质访问有关的问题通常都包含在MAC子层来解决。其主要功能包括:数据帧的封装/卸装,帧的寻址和识别(通过MAC地址进行),帧的接收与发送,帧的差错控制、介质访问冲突控制等。

逻辑链路控制LLC子层

由于网络层上可能有许多种通信协议同时存在,而且每一种通信协议又可能同时与多个对象沟通,因此当LLC子层从MAC子层收到一个数据包时必须能够判断要送给网络层的是哪一个通信协议。为了达到这种功能,在LLC子层中提供了数据链路层的访问接口与网络层进行通信交互。

同时,数据链路层中与传输介质访问无关的问题都集中在LLC子层来解决,从而为网络层提供服务。其主要功能包括逻辑链路的建立和释放、提供网络层接口、数据传输差错控制、给数据帧加上传输序列号等。


| 数据链路层功能及实现原理

数据链路管理

数据链路的建立连接、维持和释放过程就是数据链路层的链路管理功能,这是由数据链路层中的LLC子层通过相应的通信规程(也就是通常所说的协议)来实现。而不同协议建立的数据链路,提供的服务类型也不同。LLC是在高级数据链路控制(High Level Data-Link Control, HDLC,IBM提出的非TCP/IP族协议)的基础上发展起来并使用了 HDLC规范子集,定义了三种服务类型:

有确认面向连接

  • 提供服务时须先建立好双方通信连接;
  • 提供服务时须要求对方确认后才进行;
  • 独占链路中,只有在当前数据传输完成并释放了链路后其他用户才可能与同一个接收端进行数据传输。
  • 这种服务类型存在三个阶段,即数据链路建立;数据传输;数据链路释放。

如同打电话,需要确认对方身份再进行正式通话。

***有确认*无连接

  • 不需要建立专门的数据链路;

  • 接收端在接收到的每一个数据帧时都向发送端确认。事实上是因为这类服务所用的数据链路已建立起来,而且是永久存在的,所以不用另外建立。

类似于,送快递的路线早就建立好了,我们只需将快递寄出去,等收件人确认就好了,而不用关心快递运送的路线。

无确认无连接

  • 发送时不需要建立连接,接收时不需要发送确认。
  • 对丢失的帧,数据链路层不负责重发而是交给上层处理。
  • 适用于需要低延迟的实时通信场景,如音频和视频传输‌。

LLC子层的链路管理功能主要是针对有确认的面向连接服务类型,包括链路建立、链路保持、链路释放三个主要阶段。

不存在有连接无确认的服务类型。

在多个站点共享同一物理信道的情况下,如何在要求通信的站点间分配和管理信道也属于数据链路管理的范畴。

封帧组帧和透明传输

在发送端,数据链路层是接收来自网络层的数据分组,而在接收端它是接收来自物理层的比特流,所以数据链路层的成帧功能就包含两方面的含义:一是将来自网络层的数据分组封装成数据帧,二是将来自物理层的一个个比特流组装成数据帧。帧编码意味着定义一个包含信息频率、位同步、源地址、目标地址以及其他控制信息的数据包。

数据包的帧封装原理

网络层的数据包到达数据链路层后加上数据链路层的协议头和协议尾就构成了一个数据帧。在每个帧的前部加上一个帧头部,在帧的结尾处加上一个帧尾部,把网络层的数据包作为帧的数据部分,就构成了一个完整帧。其中帧有大小限制,不同网络类型下不同。

帧定界:帧头和帧尾就是作为帧的起始和结束标志,也就是帧边界。确认帧边界的行为和方法就是帧定界。

比特流的帧组装及透明传输原理

在发送端数据链路层中的帧到达物理层后就会以比特位为单位进行传输。发送端以比特位方式一位位地传输到接收端的物理层,然后接收端的物理层把比特流向数据链路层传输,到达后又要将比特流封装成数据帧,这就是数据链路层的帧组装方式了,其实也就是帧同步问题。

帧同步方法:指接收方应能从接收到的二进制比特流中区分出帧的起始与终止。

差错流控与可靠传输

差错检控

物理介质的传输可能受到环境的影响, 这种影响不仅仅体现为噪声,有时会出现严重的干扰,导致物理层传输的比特流出错(某个比特从0变1或从1变0)。因此,链路层还需要负责检查物理层的传输是否出错。

封装成帧的功能解决了帧同步问题,也就是接收端可以区分每个数据帧的起始和结束了,但是还没有解决数据正确传输的两方面问题:一是如果有帧出现了错误怎么办?二是如果有帧丢失了怎么办?

差错检测是指使发送方确定接收方是否正确收到其发送的数据的方法。通常差错可分为位错和帧错。

位错指帧中某些位出现了差错,奇偶校验方法只可以用来检查单个码元错误,检错能力较差,因此循环冗余检验CRC方式检测位错是更常用的方法,海明纠错码可用来纠正位错。

帧错指帧的丢失、重复、失序等错误。帧反馈确认可用来检测帧错,通过自动重传请求ARQ来重传出错的帧。

差错检测与控制导致很多相应检错算法&纠错算法涌现。对于无线物理信道,由于出错的概率更高且重新传输数据的成本也更高,所以无线通讯的链路层协议更倾向于用纠错机制;而有线通讯的链路层协议更倾向于使用检错机制。

流量控制

假设两个端点通过同一个物理信道进行通讯,由于双方各自的工作速率和缓存空间的差异,这两个端点处理信息的速度可能不同。如果发送方输出信息的速度超过接收方处理信息的速度通讯, 前面接收的帧将会被后面不断发送来的帧“淹没”,造成帧的丢失而出错。于是就需要有某种机制来协调,确保发送方的发送速度不会超出接收方的处理速度。术语称之为流量控制。

流量控制并不是数据链路层所特有的功能,许多高层协议中也提供流时控功能,只不过流量控制的对象不同。对于数据链路层来说,控制的是相邻两节点之间数据链路上的流量,而对于传输层来说,控制的则是从源到最终目的之间端的流量。

基于反馈的流量控制方案:XON/XOFF继续/停止协议.

差错控制中的自动重发请求ARQ就是基于反馈的流量控制。接收端认为不能继续接收数据时(也就是接收端的缓存空间满了或者接近满时),接收端会向发送端发送一个XOFF控制字符,当发送端收到对应的XOFF控制字符时就停止数据的继续发送;当接收端可以继续接收数据时,接收端会再向发送端发送一个XON控制字符,发送端收到这个控制字符后就知道可以恢复数据发送了,继续发送数据,一直这么循环下去。

基于速率的流量控制方案:滑动窗口协议

假设发送端缓存空间大小为3个帧,那么发送端连着发了3个帧后,缓存空间满了就要停止,等待接收端的确认,当发送端收到接收端对前两个帧的确认后,发送端将前两个帧从缓存空间中删去,再发送两个帧,此时缓存空间又满了,又要等待确认…如此循环下去。

网络寻址与介质争用

使用远距离通讯的物理介质需要成本,因而需要对物理信道进行复用,这会导致多个端点共享同一个物理信道,如果同时存在多个发送者和多个接收者,接收者如何知道某信息是发给自己而不是别人?另外,某些物理介质可能不支持并发(无法同时发送信息),某些物理介质可能是半双工,所有这些物理层的限制,都使得多路复用变得复杂。

介质争用

为解决这些问题,链路层需要提供某种相应的机制(协议),介质访问控制(Media Access Control简称 MAC)被创建用来确保对下层物理介质的使用不会出现冲突。

介质争用包括静态信道分用和动态信道资源争用技术。信道静态复用即通过分时、分频、分码等方法把原来的整条信道,从逻辑上分为几条互不干扰的子信道,这部分已在物理层简要介绍过。

信道动态争用协议包括随机访问介质访问控制(CSMA协议、CSMA/CD协议和CSMA/CA协议)、轮序访问介质访问控制(适用于令牌环网)。随机访问介质访问控制是指用户可根据意愿随机发送消息而抢占信道全部速率,其核心思想是胜利者通过争用获得信道从而获得信息的发送权,因此随机介质访问控制又称争用性协议。这部分内容下期结合局域网技术再行介绍。

MAC子层仅在广播型网络(如以太局域网、WLAN以及其他无线网络)中有用,而对于点对点型网络中就没有存在的意义了,因为在点对点网络中不需要寻址,也不存在一般意义上的信道争用问题。

介质访问控制子层(MAC子层)是局域网体系结构中划分的子层,对于广播型网络(如以太局域网、WLAN)是非常重要的,因为它担负了两方面的主要职责:一是如何在局域网内寻址(也就是找到目的节点),二是如何解决多路通信中介质争用的现象。

为便于理解,以铁路系统进行比喻----假设有一条单轨铁路连接A/B两地。有很多火车想从A开到B,同时还有很多火车想从B开到A。首先,要确保不发生撞车(如果已经有车在A开往B的途中那么B就不能再发车);其次,即使是同一个方向的车,出发时间也要错开一个时间间隔。所有这些协调工作,都是靠MAC协议来搞定。

MAC位址

为了完成上述任务光有MAC协议还不够,还需要为每一个端点引入惟一的标识,这个标识就称作MAC(Media Access Control Address)媒介存取控制位址。每个网卡都内置了一个全球唯一的MAC地址:MAC地址包含6个字节(48个比特),分为两半。第一部分称作OUI(Organization Unique Identify),OUI的24个比特中,其中2个比特有特殊含义,其它22个比特用来作为网卡厂商的唯一编号,这个编号由IEEE统一分配。MAC地址第二部分的24比特由网卡厂商自己决定如何分配。每个厂商只要确保自己生产的网卡后面这24比特是唯一的就可保证MAC地址的全球唯一性。

操作系统虚拟机中虚拟网卡是由虚拟化软件创建的,IEEE也给每个虚拟化软件的厂商(含开源社区)分配了唯一的OUI。因此,虚拟化软件创建的虚拟网卡,其地址也是唯一的,不会跟别的网卡冲突。

img

以太网刚诞生时称之为经典以太网,电脑是通过集线器相连。集线器工作在1层(物理层),并不理解链路层的协议,因此集线器的原理是广播模式——它从某个网线接口收到的数据,会复制N份,发送到其它每个网线接口。假设有4台电脑(A、B、C、D)都连在集线器上,A 发数据给 B,其实 C&D 也都收到A发出的数据。这时需要通过CSMA/CD载波侦听冲突检测协议来检测和处理冲突。显然,这种工作模式很傻逼(低效)。由于“经典以太网”的工作模式才10兆,所以集线器虽然低效还能忍受。

后来的百兆以太网再用这种广播模式不能再忍受,于是经典以太网就发展为交换式以太网,用交换机代替集线器。交换机是工作在2层(链路层)的设备能理解链路层协议。当交换机从某个网线接口收到一份数据(链路层的帧),它可以识别出链路帧里面包含的目标地址(接收方的MAC地址),然后只把这份数据转发给“目标MAC地址相关的网线接口”。由于交换机能识别2层协议,它不光比集线器的性能高而且功能也强得多。比如(稍微高级点的)交换机可以实现MAC 地址过滤、VLAN、QoS等多种额外功能。

地址解析协议ARP

ARP地址解析协议(Address Resolution Protocol)是用来将IP地址解析为MAC地址的协议。主机或三层网络设备上会维护一张ARP表,用于存储IP地址和MAC地址的映射关系,一般ARP表项包括动态ARP表项和静态ARP表项。

在IPv6中邻居发现协议NDP用于代替地址解析协议ARP。

反向地址解析协议RARP(Reverse Address Resolution Protocol)是用来将MAC地址解析为IP地址的协议。


数据链路层的实现

数据链路层的协议实现见上原理中的介绍。

对于电脑主机(含移动设备),“网卡硬件&网卡驱动”会包含链路层协议的实现(参见如下示意图)。另外还有些专门的2层网络设备,也提供链路层的功能。

img

数据链路层相关网络设备

网桥/桥接器network bridge

两端口二层网络设备,用来连接不同网段或网络类型的计算机网络设备,同时它又可隔离冲突域,因为它的两个端口不是共享一条背板总线(分别有一条独立的交换信道),比集线器Hub性能更好(集线器上各端口共享同一条背板总线)。

网桥除了可以扩展网络的物理连接范围外,还可以对MAC地址进行分区。但因为网桥只有两个端口,故一般两个端口都是连接集线器,每个物理网段的主机都连接到各自的集线器上。

后来,网桥被具有更多端口、同时也可隔离冲突域的交换机Switch所取代。

虚拟机的网卡模式中有bridge模式。一旦设置了这种模式,Guest OS的虚拟网卡对于Host OS所在的外部网络是双向可见的。也就是说,物理主机所在的外部网络也可以看见这块虚拟网卡。

假设物理电脑Host OS只安装了无线网卡WiFi,而虚拟化软件给Guest OS配置的通常是以太网卡。显然,这是两种不同的网络。为啥Guest OS的以太网卡配置了bridge模式之后,可以跟外部的WiFi网络通讯?奥妙在于——虚拟化软件在内部悄悄地帮你实现了一个网桥。这个网桥把『Host OS的WiFi网卡』与『Guest OS的以太网卡』关联起来。WiFi网卡收到了链路层数据之后,如果接收方的MAC地址对应的是Guest OS,网桥会把这份数据丢给Guest OS的网卡。这种网卡模式之所以称作bridge模式,原因就在于此。

交换机network switch

交换机Switch(不加定语通常指二层交换局或以太网交换机、局域网交换机)可以说同时是集线器和网桥的升级换代产品,因为既具有集线器的多端口集中连接功能,又具有网桥的数据交换功能。

交换机能够经济地将网络分成小的冲突域,为每个工作站提高提供更高的带宽。以太网交换机对工作站是透明的,因此管理开销低廉,简化了网络节点的增加、移动和网络变化的操作。

交换机一般都具有多种速率的端口。决定一个帧应该转发到某个接口,还是应该将其丢弃,称为过滤。决定一个帧应该被移动到哪个接口称为转发。交换机的过滤与转发借助于交换表(Switch Table)实现。交换表的一个表项至少包含一个MAC地址与连通该MAC地址的交换机接口。

利用以太网交换机还可以方便的实现虚拟局域网VLAN,VLAN不仅可以隔离冲突域,而且可以隔离广播域。

链路层相关软件工具

嗅探抓包工具Sniffer

想了解链路层的数据包结构需要用到嗅探工具。这类工具能捕获流经网卡的所有链路层数据包。前面介绍协议栈的时候说过:下层数据包的载荷就是上层数据包的整体。因此,拿到链路层数据包也就意味着:已拿到2层之上的所有数据包的信息了。

有些抓包工具自带图形界面,可以直接显示数据包的内容给你看。还有些只提供命令行(只是把获取的数据包保存为文件),然后要搭配其它图形化的工具来展示数据包的内容。抓包的工具有很多,名气最大的是Wireshark

ARP命令

ARP是MAC地址解析协议的洋文名称。该协议根据IP地址解析MAC地址。OS通常自带arp命令可用来诊断与MAC地址相关的信息,比如:列出当前子网中其它主机的IP地址以及对应的MAC地址。


网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包,需要点击下方链接即可前往获取

读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)

在这里插入图片描述

👉1.成长路线图&学习规划👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
在这里插入图片描述

在这里插入图片描述

👉2.网安入门到进阶视频教程👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。(全套教程文末领取哈)
在这里插入图片描述

在这里插入图片描述

👉3.SRC&黑客文档👈

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

在这里插入图片描述

黑客资料由于是敏感资源,这里不能直接展示哦!(全套教程文末领取哈)

👉4.护网行动资料👈

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

在这里插入图片描述

👉5.黑客必读书单👈

在这里插入图片描述

👉6.网络安全岗面试题合集👈

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
在这里插入图片描述
所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~

读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值