互联网核心知识(三):深入解析数据链路层原理

更新:11-12 神话故事 我要投稿 纠错 投诉

大家好,如果您还对互联网核心知识(三):深入解析数据链路层原理不太了解,没有关系,今天就由本站为大家分享互联网核心知识(三):深入解析数据链路层原理的知识,包括的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

OK,这些就是信道的概念,数据链路层使用的信道类型分为点对点信道和广播信道。前者使用PPP协议,后者使用我要重点介绍的CSMA/CD协议。

我们之前说过,主机H1通过多个路由器向主机H2发送数据。数据从主机的七层协议栈向下传输到路由器的三层协议栈,并在路由器从物理层查找转发表后继续传输到网络层。它向下传输到物理层,转发到下一个路由器,最后传输到主机H2。

3.1使用点对点信道的数据链路层

链路是针对相邻节点的,中间没有任何节点,数据链路是链路中添加的必要的通信协议硬件和软件。

点对点信道的数据链路层的数据传输单元是帧。明确的一点是,节点A将网络层的IP数据包封装成帧(添加头和尾信息,形成帧的头和尾),然后发送给下一个Node B,如果数据链路层B 收到该帧,如果没有错误,则提取IP 数据包并发送给网络层,否则丢弃。 (有的还带有重传机制)

3.1.2

1. 封装成帧

接收端需要从物理层的比特流中识别帧的开始和结束。除了帧定界之外,帧头和帧尾还具有必要的控制信息。帧需要从帧头开始发送。为了提高效率,帧的数据部分必须尽可能大于帧头和帧尾的长度,并且帧的数据部分必须=MTU(数据部分长度的上限)。当发送帧出现问题时,无法获取尾帧,因此接收端会认为该帧不完整并丢弃它。

2.透明传输

如果帧的数据部分是非ASCII文件,即二进制码或图像,并且数据中某个字节的二进制码与帧定界符相同,则会出现帧定界错误。数据链路层必须保证无论传输何种数据比特数据在数据链路层都是透明且无差错的。

解决办法是在发送端数据链路层的控制字符前面插入一个转义字符“ESC”,并在接收端数据链路层将数据传输到网络层之前删除这些插入的转义字符。如果转义字符也会出现在数据中,并且在转义字符之前插入转义字符。当接收端收到连续两个转义字符时,前一个就被删除。

3. 错误检测

如果传输数据时出现误码,数据链路层必须有相应的解决方案。接下来我们看看循环冗余检测

例如,发送方要发送的比特集合为M=101001,双方事先指定的(n+1)比特除数,如1101,总共4比特,4-1=3 ,并在101001后面补3个0。即101001000/1101,注意模二运算规则:

1-0=1

0-1=1

1-1=0

0-0=0

得到的商为110101,余数(位数比除数减1,即n位)为001。这个作为FCS(帧检测序列),在M后拼接发送帧变为101001001

接收端将该帧除以同一个除数P,并检查余数是否为0。如果为0,则表明该帧正确,否则该帧被丢弃。 FCS的生成和CRC检测都是在硬件中完成的,所以作为软件方面,我们这里了解得足够多了,重点关注后面提到的网络层和传输层。

由上可知,接收端数据链路层接受的所有帧都是无差错的,CRC机制可以实现比特无差错传输。但后期会出现帧重复和丢失的情况,因此并不意味着CRC是可靠传输。

对于通信质量良好的有线传输链路,数据链路层协议不需要确认和重传机制。一旦出现问题,TCP就会去做。对于通信质量较差的无线传输链路,数据链路层需要采用确认重传机制(发送方如果在一定时间内没有收到接收方的确认消息,则默认重传数据,因此后续的冲突检测发生),向上提供可靠的传输服务。

3.2PPP点对点协议

我想通过一张图你就可以明白PPP协议的功能了。

粘贴_图像.png

1. PPP协议的要求

PPP协议不需要重传机制。如果帧正确,则将其接受,如果有错误,则将其丢弃。

PPP协议将数据封装成帧,保证透明传输,支持多种网络层协议,可以运行在多种类型的链路上(串行、并行、同步异步、电、光~~)

Paste_Image.pngPPPoE 是宽带互联网接入主机使用的链路层协议。

PPP协议可以检测错误,检测当前链路是否正常工作。 PPP协议可以为每种类型的链路设置MTU。

对于拨号链路来说,必须通过PPP协议知道各个网络层的地址,以保证网络层传输报文。

PPP协议不支持多点线路,只支持点对点的全双工链路。

2.PPP协议的构成

(1) 将IP数据包封装到串行链路中的方法

(2)链路控制协议LCP,用于建立、配置和测试数据链路连接

(3)一套网络控制协议NCP,每个协议支持不同的网络层协议

3.2.2 PPP协议帧格式

1.各字段含义

粘贴_图像.png

F是标志字段,它是帧的分隔符。两个连续帧之间只有一个标志字段。如果出现两个连续的标志字段,则意味着这是一个空帧,将被丢弃。

第四个字段是2字节协议字段。 PPP帧的不同协议字段和信息字段表示不同的信息(IP数据报或LCP数据、网络层控制数据)

FCS刚刚讲过

2、字节填充(PPP采用异步传输,逐字符传输)

当信息字段和标志字段中出现相同的位组合时,需要进行字节填充(将信息字段中出现并在标志字段中重复出现的每个字符转换为2字节序列),并进行相反的操作在接收端和发送端一样。恢复比特流的能力。

3.零位填充(PPP采用同步传输,一系列位连续传输)

这里必须指出,帧分隔符转换成二进制后是01111110。零位填充是在发送端扫描整个信息字段。一旦找到连续5个1,就立即填入0。接收端接收到帧时,首先查找标识字段F以确定帧边界,然后扫描比特流。只要出现连续5个1,连续5个1后面的0就会被删除,恢复到原来的信息比特流,从而保证透明传输。

3.2.3 PPP协议工作状态

希望读者仔细阅读下图几遍。

粘贴_图像.png

LCP被封装成多个PPP帧。 LCP连接建立后,这些数据包和响应选择一些要使用的PPP参数,然后配置网络。

NCP 为新连接的用户计算机分配一个临时IP,并成为Internet 上具有IP 的主机。需要注意的是,当网络连接断开时,NCP释放网络层连接,回收分配的IP地址,LCP释放数据链路层连接,最后释放物理层连接。

当链路静态时,没有物理层连接。当用户单击Windows 上的连接按钮时,计算机上的调制解调器会发出载波信号。路由器识别后,双方建立物理连接。 PPP进入链路建立状态,在链路层建立LCP连接。 LCP发送配置请求帧,对方可以发送以下三种类型的帧:

(1)配置确认帧

(2)配置拒绝帧

(3)配置拒绝帧(有些选项无法识别或接受,需要协商)

LCP配置选项包括链路上的最大帧长度、使用的认证协议等。协商后,双方建立LCP链路并进入认证状态。一方发送身份标识符和密码以确认身份。如果认证成功,则进入网络层协议。如果失败则链接终止。

PPP协议两端的网络层可以运行不同的网络层协议,NCP根据不同的网络层协议相互交换网络层特定的网络控制报文。如果PPP链路使用IP协议,则在各端配置IP协议模块时,需要使用NCP的IP控制协议IPCP来支持IP协议。 IPCP报文被封装成PPP帧,然后在PPP链路上传输。网络层配置完成后,链路进入链路打开状态,链路两端都可以发送报文。数据传输完成后,一端发送终止请求LCP包。收到对端的终止确认LCP报文后,切换到链路终止状态。同时,当链路出现故障或调制解调器载波停止后,也会达到链路终止状态。

3.3广播信道的数据链路层

3.3.1 LAN数据链路层

LAN我就不解释了。局域网玩CS的同学最熟悉了吧?

局域网的优点:

(1)具有广播功能,一站即可轻松访问全网。局域网内的主机可以共享局域网内的各种硬件和软件资源。

(2)方便系统扩展

(3)提高系统的可靠性、可用性和生存能力

局域网有多种拓扑结构,其中总线网络延伸到现在的以太网。

接下来我想提出共享频道的问题。它要解决的是如何让亿万用户合理便捷地共享通信媒体资源。之前我们讲过物理层的时分复用、频分复用、码分复用。这样分配到频道的用户不会与其他用户冲突,但是成本很高,不适合局域网使用,所以后面就有了随机接入。用户随机发送请求。如果恰好有两个或多个用户同时发送请求,那么共享媒体上就会发生冲突,导致这些用户无法发送请求。因此,采用CSMA/CD协议来解决这个问题。

接下来我们来研究一下计算机连接局域网的过程。

两者通过适配器连接。适配器位于计算机的主板上,配有ROM和RAM。适配器和局域网通过电缆或双绞线串行传输进行通信,而适配器和计算机则使用I/O总线。数据是并行传输的,因此适配器必须在串行和并行之间进行转换。网络的数据速率与计算机总线的数据速率不同。适配器还需要配备存储芯片来缓存数据。适配器是通过操作系统中的驱动程序来通知的。数据长度应发送到存储器中的何处,以及接收到的数据应存储在存储器中的何处,适配器必须实现以太网协议。

粘贴_图像.png

当适配器发送和接收帧时,CPU和适配器不会互相影响。当适配器接收到错误的帧时,直接丢弃。当它收到正确的帧时,它会中断并通知计算机并将它们传递到网络层。同理,发送数据时,网络层将IP数据上报给适配器组装帧并发送给局域网。计算机MAC地址位于适配器ROM中,计算机IP地址位于计算机存储器中。

3.3.2CSMA/CD协议

该协议是本章数据链路层最重要的部分。我将详细解释这个协议。

总线的特点是一台主机发送数据,连接到总线上的其他主机可以接收数据。如果是一对一通信,则必须在帧头中写入接收站的MAC地址。当数据帧的目的地址与适配器ROM中的MAC地址相同时,适配器接收该数据帧,否则丢弃。为了简化通信,以太网采取了以下措施:

第一种是无连接方式,即在不建立连接的情况下发送数据。发送方不需要对方发回确认。接收器需要错误检测。如果出现错误,它将丢弃该错误并且不执行任何操作。重传机制由上层TCP决定。如果TCP发现某些数据丢失了,它会在一段时间后重新将数据传输到以太网,以太网会将其作为新的帧传递出去。

但总线上只允许一台计算机同时发送数据,否则计算机之间会互相干扰,因此需要CSMA/CD协议来规范不同计算机对总线的占用。

以曼彻斯特编码为例,发送的比特流为1000100111,其中有一长串1和0。接收端无法从接收到的比特流中提取出比特同步信号,因此将每个符号分为两个相等的区间。 1可以是前高后低。 0 则相反。这保证了每个符号的中间都发生电压转换,接收端可以很容易地提取出比特同步信号。

粘贴_图像.png

CSMA/CD协议属于总线型网络。载波监控意味着每个站需要连续检测信道,无论是在传输之前还是传输过程中。发送前的检测是为了获取完整的传输。如果有其他站点发送,它们自己暂时无法发送,可以在信道空闲后再次发送。发送时检测是指适配器随时监测通道上的电压变化。当多个站同时发送数据时,总线上的信号电压会大幅增加,然后超过一定的阈值。发送的信号会失真,适配器停止发送数据。我们举一个例子来说明这种情况。我们规定总线上单向端到端的传播延迟记为

0

Paste_Image.png 在t=-时刻,B检测到通道空闲,发送数据

粘贴_图像.png

当t"=-/2 时发生碰撞

当t‘’=时,B检测到冲突并停止发送数据。

当t‘’‘=2- 时A 检测到碰撞

请注意,当数据发生冲突时,AB 并不知道发生了冲突。

当使用CSMA/CD协议时,站点不能同时发送和接收。使用CSMA/CD协议的以太网必须是半双工通信。

如果希望以太网发生冲突的机会很小,整个以太网的平均流量必须远小于以太网的最大数据速率。当0时,发送完数据帧后,最多经过2就可以知道发送的数据帧是否发生了碰撞。以太网上端到端的往返时间2称为竞争周期。如果在竞争期后没有检测到,只有发生冲突才能确定本次传输不会发生冲突。

以太网使用截断二进制指数退避算法来确定冲突后何时重新传输。当冲突发生时,可能有很多站点在监听信道,它们都会检测到信道空闲,需要将彼此的重传推迟一个随机的时间。

接下来我们要讲的是截断二进制指数退避算法。从离散整数集合[0, 1, 2k power-1]中随机挑选一个数,记为r。重传应推迟的时间是竞争周期的r倍,即2r。上述参数k根据以下公式计算:k=min[重传次数,10]。当重传次数不超过10时,参数k等于重传次数。当重传次数超过10次时,k=10保持不变。当重传次数超过16次仍失败时,该帧被丢弃并报告给高层。例如,k=1,随机数从{0, 1}中选择一个数,重传延迟时间可以是0或2,这两个时间随机选择一个,如果再次发生冲突,k=2,r从{0, 1 , 2, 3}开始选择一个数字,重传时间可以是0, 2, 4, 6,随机选一个,以此类推.

平均重传延迟时间随着重传次数的增加而增加,减少了冲突的概率,有利于整个系统的稳定性。如果一个帧与另一个站发送的帧发生冲突,但发送站无法检测到冲突,为了避免这种情况,以太网规定了一个最小帧长度。如果发送的数据很小,必须要做字节填充,比如让帧长度不小于64字节,这样通过以太网发送数据时,如果在竞争期(64字节)后没有发生冲突,后面发送的数据肯定不会冲突。如果检测到冲突,则立即终止发送,所以发送的数据必须小于64字节,所以只要帧长度小于64字节,就是无效帧,由于冲突而异常终止,接收端将丢弃该帧。链路的最大传播延迟是竞争周期的一半(这个我不太明白,希望读者指出),

接下来我会解释一下增强碰撞的概念。当数据发生冲突时,需要继续发送人工干扰信号,让所有用户知道发生了冲突。以太网还规定最小帧间隔为9.6s,以便刚刚接收到数据帧的站将清除其缓冲区并等待下一帧。

发送方必须缓存发送的帧并在发生冲突时重新发送该帧。

那么总结一下CSMA/CD协议的要点

CSMA/CD协议要点总结:

准备发送:适配器从网络层获取数据包,添加以太网头和尾形成以太网帧,放入适配器的缓冲区中,但在发送之前,必须对通道进行检测;

检测通道:如果检测到通道繁忙,则应持续检测并等待通道空闲。如果检测到通道空闲,并且通道在96比特内保持空闲,则发送该帧;

发送过程中仍然不断检测通道,即发送时网络适配器需要监听。这里只有两种可能:

首先发送成功:在竞争期间没有检测到冲突,该帧肯定可以发送成功;

二是传输失败:如果在竞争期间检测到冲突,则立即停止发送数据,并按照规定发送人工干扰信号;然后适配器执行指数退避算法,等待r乘512位,然后返回步骤2,继续检测信道;但如果重传16次失败,则停止重传并向上报错;

以太网每次发送帧时,必须暂时保留发送的帧。

至此,您已经彻底了解了CSMA/CD协议的知识点。

3.3.3 使用集线器的星形拓扑

该中心的特点(我将重点介绍这里的亮点):

(1)使用集线器的以太网在逻辑上仍然是总线网络,各个站共享逻辑总线。它仍然使用CSMA/CD协议,因此只允许一个站点同时发送数据。

(2)集线器的结构类似于多接口中继器。

(3)集线器工作在物理层,不进行冲突检测。如果两个接口同时输入信号,就会发生冲突,所有接口都不会收到正确的帧。

如果适配器出现故障,集线器可以检测到它并与其断开连接。

3.3.4 以太网通道利用率

下图可以说明信道被占用时的情况,其中帧传输时间T0=帧长度/传输速率。

粘贴_图像.png

令=/T0 0,信道利用率非常高。相反,竞争周期比例越大,每次发生冲突都会浪费大量的信道资源,信道利用率显着降低。

要使变小,数据速率必须恒定,并且必须限制以太网连接长度,否则会太大,并且以太网帧长度不能太短,否则T0会太小。

理想的极限信道利用率Smax=T0/(T0+)=1/(1+),只有1才能具有较高的极限信道利用率。相反,对于1,每次碰撞都会浪费相对大量的数据传输时间。极限通道利用率远小于1,而以太网利用率达到30%,已经处于过载状态。

3.3.5 以太网MAC层

1.MAC层硬件地址

LAN 中的硬件地址成为MAC 地址或物理地址。

名称表示我们要寻找的资源,地址表示资源在哪里,路线告诉我们如何到达那里。

地址是指局域网中每台计算机的适配器ROM中固化的地址。即使地理位置发生变化,计算机在局域网中的地址也不会改变。目前,LAN适配器使用6字节的地址字段作为MAC地址,MAC地址也被用作适配器地址或适配器标识符。

适配器具有过滤功能。当发送MAC帧时,硬件用于检查MAC帧的目的地址。如果发送到本地站,则接受,否则丢弃。

1.MAC帧分为以下几种:

(1)单播帧,收到帧的MAC地址与本站的硬件地址相同

(2)广播帧,发送给本局域网内所有站的帧

(3) 组播帧,发送到本局域网内某些站点的帧

只有目的地址可以使用广播地址和组播地址

2.MAC帧的格式如下:

粘贴_图像.png

字段2的类型表示上层使用什么网络协议将接收到的MAC帧数据交给上层协议。 46个字节如下:帧的最小长度为64-6-6-2-4=46

FCS 是本文讨论的错误检测序列。

MAC子层找到帧末尾的位置(通过曼彻斯特编码)并找到前面4个字节的数据部分,并将其传递给上层协议。

当IP数据报小于46字节时,字符将被填充。当上层使用IP协议时,报头有总长度,接收端可以很容易地去掉填充的字节并恢复数据。

将8 个字节插入传输介质。 7个字节是前导码,用于让接收端适配器接收MAC帧并快速调整时钟频率以与发送端时钟同步。第二个字段是帧开始定界符。通知接收端准备好接收MAC帧,FCS不用来检测这8个字节。

需要注意的是,以太网不需要使用帧结束定界符,也不需要使用字节插入来保证透明传输(因为以太网传输帧,帧与帧之间存在间隙)。如果MAC帧有错误,即无效,则丢弃。以太网不负责重新传输丢失的帧。

3.4拓展以太网

3.4.1 在物理层扩展以太网

物理层扩展以太网采用集线器,通过集线器连接独立的以太网网络,实现通信。然而,这增加了数据冲突的可能性。

3.4.2 在数据链路层扩展以太网

1、以太网交换机的特点

交换机本质上是一个多接口桥。它的每个接口都连接到主机或另一个交换机。它处于全双工模式并具有并行性。它同时连接多个接口,允许多对主机同时通信。通信主机独占传输介质,不存在冲突传输。

交换机的总带宽是各部分带宽的总和,每个用户都独占该资源的访问权,因此分配给每个用户的带宽就是交换机的总带宽。

以太网交换机具有可以缓冲帧并使用存储转发方法进行错误检测的存储器。

2、交换机的自学习能力

粘贴_图像.png

A向B发送帧,帧从接口1进入交换机,查找转发表。一开始是空的,所以找不到。 A的MAC地址和接口名称被写入交换表中,然后需要将它们广播到交换机的其余部分。接口2和接口4分别被过滤掉。接口3收到此帧后,如果以后目的地址是A,会自动发送到端口1。例如B发送一帧到A,查找交换表后,会自动发送到端口1 ,然后将B的MAC地址和3写入交换表中。如果没有写入任何一行数据,就会设置一个类似于浏览器的cookie并过期。稍后会被清除,以确保交换表中的数据符合当前的网络情况。

3.4.3 虚拟LAN VLAN

粘贴_图像.png

我通过下面的例子来介绍VLAN

用户评论

眉黛如画

终于看到关于数据链路层的文章啦!

    有9位网友表示赞同!

歇火

我一直对网络协议很感兴趣,这篇文章能给我很多启发。

    有12位网友表示赞同!

(り。薆情海

希望能详细讲讲MAC地址和帧格式吧!

    有7位网友表示赞同!

金橙橙。-

这个级别的数据传输原理还是挺复杂的啊。

    有11位网友表示赞同!

搞搞嗎妹妹

数据链路层的应用场景有哪些呢?

    有10位网友表示赞同!

嗯咯

我记得之前学过几层网络模型,这篇文章会不会涉及到它们的关系?

    有16位网友表示赞同!

杰克

学习数据链路层感觉很有用,可以更深入地了解网络通信原理。

    有19位网友表示赞同!

繁华若梦

这周正好在啃协议书,刚好看到这篇文章了,太值了!

    有9位网友表示赞同!

别悲哀

对网络安全感兴趣的人应该要学习这些基础知识的吧?

    有11位网友表示赞同!

恰十年

数据链路层就是把数据打包发送到下一层的感觉吧?

    有7位网友表示赞同!

落花忆梦

想了解一些常见的数据链路协议,比如Ethernet?

    有11位网友表示赞同!

岁岁年年

文章能不能讲解一下数据链路层的错误检测机制?

    有17位网友表示赞同!

有一种中毒叫上瘾成咆哮i

学习完这篇文章之后,我能自己配置网络设备吗?

    有14位网友表示赞同!

作业是老师的私生子

我的路由器里应该会有一些与数据链路层相关的设置吧?

    有5位网友表示赞同!

素婉纤尘

数据的传输效率也会受到数据链路层的影响吗?

    有20位网友表示赞同!

孤独症

想了解一些关于虚拟局域网VLAN的知识。

    有11位网友表示赞同!

古巷青灯

学习完这篇文章,能更好地理解网络调试的过程吗?

    有11位网友表示赞同!

哽咽

数据链路层在云计算中有什么特殊作用吗?

    有20位网友表示赞同!

致命伤

最近在研究开源网络协议,这篇文章很有帮助!

    有18位网友表示赞同!

巷雨优美回忆

学习这些基础知识可以为我将来从事网络相关工作打下良好的基础。

    有18位网友表示赞同!

【互联网核心知识(三):深入解析数据链路层原理】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活

上一篇:《西方音乐史:音乐起源探秘(第二部分)》 下一篇:探索美学新境界:氧宜多Marcia 9月8日带你提升审美洞察力