计算机网络--三.链路层

数据链路使用的信道主要有两种类型
1.点对点的信道,这种信道使用的一对一的点对点的通信方式。
2.广播信道,这种信道使用一对多的广播通信方式。

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

数据链路:在链路的基础上加上控制信息的传输的协议的软件和硬件就是数据链路。常用的方法是使用网络适配器。在点对点的数据链路层协议数据单元为帧,在因特网中,网络层的协议数据单元就是 IP 数据报,简称数据报,分组和包,数据链路把网络层交下来的数据进行封装成帧发送到链路上。
通信时数据链路的主要步骤有:
(1)数据链路层把网络层交下来的 IP 数据报添加首部和尾部封装成帧。
(2)把封装好的帧发送给另一个结点的数据链路层。
(3)若收到的帧无差错,就提取出 IP 数据报上交给网络层,否则丢弃。

三个问题

1.封装成帧
IP 数据报为帧的数据部分,添加首部和尾部构成一个完整的帧,首部和尾部的一个重要的作用就是进行帧定界,此外还有很多必要的控制信息,每一种链路层协议都规定了所能传送的帧的数据部分的长度上限==最大传送单元 MTU 。
2.透明传输
因为有首部和尾部有帧定界,如果数据部分出现相同的字符就需要进行一定的标明,这种方法称为字节填充或者字符填充,即在控制字符之前加转义字符,若转义字符也出现则同样在此字符之前加转义字符。
3.差错检测
比特在传输的过程中由0变1,由1变0 叫比特差错。传输错误的比特占所有比特的总数的比率称为误码率,BER .提高信噪比可降低误码率。
循环冗余检验 CRC
在发送端,先把数据划分为组,假定每组K个比特。现假定待传送的数据M = 101001(k=6)。CRC运算就是在数据M后面添加提供差错检测的n位冗余码,然后构成一个帧发送出去,一共发送(k+n )位。在所要发送的数据后添加冗余码。用二进制的模2运算进行2^n乘M的运算,这相当于在M后面添加n个0 ,得到的(k+n )位的数除于收发双方实现商定的长度为(n + 1)位的除数P,得出的商是Q而余数是R(n位,比P少一位)。
举例:M = 101001 (即 k = 6),除数P 为1101 (即 n = 3),3位,比P少一位(模2 除法可简单为 异或运算,相同为 0 不同为 1)

image

这种为进行检错而添加的冗余码称为帧检验序列 FCS,如果传输过程中无差错那么经过的CRC 检验后得出的余数 R 就为0,没有差错就接受,若出现差错就丢弃。显然如果不以帧为单位来传送,就无法加入冗余码进行差错检测,在数据链路层使用循环冗余校验 CRC 差错检测检测技术只能做到对帧的无差错检测接收,即无比特的差错的传输,但这不是可靠的传输,(可靠传输即发送端发什么接收端就收到什么),过去OSI 需要链路层向上提供可靠的传输,因此增加了帧编号,确认和重传机制。现在由于通信链路质量的改善采用了区别的对待的方法:
1.对质量良好的有线传输,改正差错的任务由上层协议完成
2.对质量差的无线传输,使用确认和重传机制。

点对点协议 PPP

PPP 协议就是用户计算机和 ISP 进行通信时所使用的数据链路层协议。
PPP 协议满足的需求:
1.简单:对数据链路层的帧,不需要纠错,不需要序号,也不需要流量控制。
2.封装成帧:允许规定特殊的字符最为帧定界符
3.透明性:有效解决帧定界一样的比特组合。
4.多种网络层协议,同一条物理链路上同时支持多种网络层协议
5.多种类型链路,能在多种类型链路上运行。
6.差错检测:能够检测并丢弃有差错的帧
7.检测连接状态:能够自动检测链路是否处于正常的工作状态
8.最大的传送单元,这里指的是最大的数据部分,MTU
9.网络层地址协商:既可以对两个网络的地址进行协商知道和配置
1.数据压缩协商:对数据进行压缩
PPP协议组成
1.一个将 IP 数据报封装成串行链路的方法。
2.一个用来建立,配置测试数据链路连接的链路控制协议。
3.一套网络控制协议 NCP.
PPP 协议的帧格式

image

F 是标志字段即开始与结束, A 是地址字段(1111 1111),C 是控制字段,协议字段可标识为( IP 数据报,链路控制协议 LCP,网络层的控制数据 ),FCS 是帧检验序列。
字节填充和零比特填充
但信息出现和标志字段一样的比特时就需要进行填充,当 PPP 使用的异步传输,使用字节填充,当使用的是同步传输,是使用零比特填充,(同步传输是一连串的比特传送,异步传送是逐个字符传送)
PPP 协议的工作状态

使用广播信道的数据链路层协议

局域网的数据链路层

局域网具有广播功能,从一个站点可以很方便的访问全网,局域网的主机可以共享连接在局域网上的个各种硬件和软件资源。局域网按网络拓扑进行分类,有星型网(集线器和双绞线),环形网和总线网。局域网可使用多种传输媒体,双绞线为主流,光纤可用于数据更高时。
共享信道需要解决如何使大量的用户合理的共享通信媒体资源。
1.静态划分信道,比如之前的频分服用,时分复用等,这种方式代价高,不适合局域网。
2.动态媒体接入控制,也叫多点接入。

(1)随机接入,所有用户可随机的发送信息,恰两个用户发送信息是就产生碰撞,需要有解决碰撞的协议。
(2)受控接入,所有用户服从一定的控制,比如有分散控制的令牌环局域网和集中控制的多点线路探询或者成为轮询。

1.以太网
以太网是一个符合 DIX 标准的局域网。局域网的数据链路层拆成两个子层,及逻辑链路控制层 LLC 子层和媒体接入控制 MAC 子层。与传输媒体有关的内容都放在 MAC 子层。
2.适配器的作用
计算机与外界局域网的连接是通过通信适配器,适配器又称网络接口卡,简称网卡。适配器的功能有:

1.进行串行(计算机和适配器)和并行转换(适配器与局域网)。
2.对数据进行缓存。
3.安装设备驱动程序在操作系统中。
4.实现以太网的协议。

适配器接收和发送帧的时候不使用 CPU,可以直接把帧丢弃。若收到正确的帧使用中断通知计算机并交付给网络层。计算机的硬件地址就在适配器的 ROM 中,计算机的软件地址 IP 地址则在存储器中。

CSMA/CD协议

最早的以太网是将许多计算机都连接到一根总线上。总线的特点当一台计算机发送数据的时候,总线上的所有计算机都能检测到这个数据。这就是广播通信方式。当需要在总线上进行一对一通信的时候,就需要使每一台计算机的网卡拥有一个与其他网卡都不同的地址。这个时候,在发送数据帧时,就需要表明数据帧接收站的地址。只有网卡地址与其相同时,才接受数据帧,否则丢弃帧.
以太网通信的两种方式
1.采用较为灵活的无连接的工作方式,即不必建立连接就可以直接发送数据。网卡对发送的数据帧不进行编号,也不要求对方发回确认。这样做可以使以太网工作起来非常简单。以太网所提供的服务是尽最大努力的交付,即不可靠的服务。同时同一时间只能允许一台计算机发送数据,协调的方式就是 CSMA/CD 即载波监听多点接入碰撞检测。
2.以太网发送的数据都使用曼彻斯特编码的信号。

CSMA/CD 协议的要点

多点接入说明是总线型网络,计算机以多点接入的方式连接在一根总线上,协议的实质是“载波监听”和“碰撞检测”。
载波监听就是利用电子技术检测总线上有没有其他计算机也在发送。载波监听实际上就是检测信道。在发送前,每个站不停地检测信道,是为了获得发送权;在发送中检测信道,是为了及时发现有没有其他站的发送和本站发送的碰撞,这就是碰撞检测。总之,载波监听是全程都在进行的。
碰撞检测就是边发送边监听。就是网卡边发送数据边检测信道上的信号电压的变化情况,以便判断自己在发送数据的时候其他站是否也在发送数据。当几个站同时在总线上发送数据时,总线上的信号电压变化幅度将会增大(互相叠加),当网卡检测到的信号电压超过一定的门限值时,说明总线上至少有两个站同时在发送数据,表明产生了碰撞(冲突),所以也称为冲突检测。这时,由于接收的信号已经识别不出来,所以任何一个正在发送的站就会立即停止发送数据,然后等待一段随机时间以后再次发送。
因为电磁波在总线上是以有限的速率传播的,所以可能出行监听信道为空闲但是发生碰撞。电磁波在1km电缆的传播时延约为5us(需要记住!)通常以把总线上的单程端到端的传播时延为 t,发送数据到检测到碰撞的时间最多是两倍的总线端到端的传播时延 2t。
在使用CSMA/CD协议时,一个站不可能同时进行发送和接收,进行的是半双工通信。
以太网端到端的往返时间 2t 称为争用期,又称碰撞窗口,一个站在发送完数据后,只有经过争用期才能肯定不会发生碰撞。
以太网使用截断二进制指数退避算法来确定碰撞后重传的时机。这种算法让发生碰撞的站在停止发送数据后,不是等待信道变为空闲后立即再发送数据,而是退避一个随机的时间。
1.协议规定了基本退避时间为2t,具体的争用期时间通常取51.2us,对于10Mb/s的以太网,在争用期内可发送512bit,即64字节,也就是说争用期为 512 比特时间。
2.从离散的整数集合【0,1,……(2^k-1)】中随机取一个数,记为r,重传应推后的时间就是r倍的争用期 ,k = min <重传次数,10>,当重传次数不超过10时,参数k等于重传次数;当重传次数超过10时,k就不再增大一直等于10
3.当重传16次仍然不能成功时(这表明同时打算发送数据的站太多,以致连续发生冲突),则丢弃该帧,并向高层报告
某个站发送了一个很短的帧,但发生了碰撞,但发生了碰撞,不过在这个帧发送完毕后才检测到发生了碰撞。已经没有办法中止帧的发送,因为已经发送完了。这个时候即使发生了碰撞,那么刚才的帧也无法进行重传,就会产生错误。数据帧能够重传的一个条件:以太网要实现重传,必须保证这个站在收到冲突信号的时候这个帧没有传完。所以基于这种情况,以太网规定了一个最短帧的长度为64个字节,即512bit。因为64字节正好是争用期长度,如果在争用期内没有发生碰撞,那么就不会发生碰撞了。因此,凡长度小于64字节的帧都是由于冲突而异常停止的无效帧。接收端收到这种帧会直接丢弃。(对于10Mb/s传统以太网而言)以太网上传播1km需要5us,以太网上最大的端到端的时延必须小于争用期的一半(25.6us),相当于以太网的最大端到端长度约为5km。实际上的以太网覆盖范围远没有这么大。因此实际的以太网都能在争用期51.2us内检测到可能发生的碰撞。以太网确定以51.2us作为争用期,不仅考虑了端到端时延,而且还考虑了好多其他因素
强化碰撞。当发送数据的站一旦发现发生了碰撞时,除了立即停止发送数据外,还要再继续发送32比特或48比特的人为干扰信号,以便让所有用户都知道发生了碰撞。
以太网还规定了帧间最小间隔为9.6us,相当于96比特时间,这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。
CSMA/CD协议的工作过程:
准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部,组成以太网帧,,放入网卡的缓存中,但在发送之前,必须先检测信道。
检测信道:不停地检测信道,一直等待信道空闲,并在96比特时间内信道保持空闲(保证了帧间最小时间间隔),就发送这个帧。
在发送过程中仍不停地检测信道,即网络适配器要边发送边监听。这里只有两种可能性:
1.发送成功:在争用期内一直未检测到碰撞,这个帧发送成功,回到(1)
2.发送失败:在争用期内检测到碰撞,这是立即停止发送数据,并按规定发送认为干扰信号。适配器接着就执行指数退避算法,等待r倍512比特时间后,返回到步骤(2),继续检测信道。若重传16次仍不能成功,则停止重传向上报错。
以太网每发完一帧,一定要把已经发送的帧暂时保留一下。如果在争用期内检测出发生了碰撞,那么还要在推迟一段时间后再把这个帧重传一次。

使用广播信道的以太网

以太网的 MAC 层

在局域网中,硬件地址又称为物理地址或者MAC地址(因为这种地址用在MAC帧中),一种48位的全球地址,是局域网上的每一台计算机中固化在网卡的ROM中的地址。MAC地址就是网卡的名字。另外,实际情况是如果连接在局域网上的主机或者路由器安装有多个适配器,那么这样的主机就有多个MAC地址。
MAC 帧的格式

image

因为曼彻斯特码的每一个码元正中间一定有一次电压的转换,所以发送完一个帧后,网络适配器接口的电压不再变化,接收方可以容易的找到结束的位置。
以太网传送数据的时候是以帧为单位的,各帧之间有一定的空隙,所以以太网不需要帧结束符也不需要字节插入保证透明传输。

扩展以太网

在物理层扩展:使用集线器,缺点:扩大了碰撞域,减少了吞吐量
在数据链路层:使用网桥,每一个以太网就称为一个网段。网桥依靠转发表转发帧,转发表也叫转发数据库或路由目录。优点:过滤通信量,扩大物理范围,提高可靠性,可互联不同物理层,不同 MAC 子层和不同速率。缺点:增加时延,没有流量控制,过多用户会产生广播风暴。
网桥还有透明网桥,源路由网桥,多接口网桥–以太网交换机。
举例:假定1km长的CSMA/CD网络的数据率为1Gb/s。设信号在网络上的传播速率为200000km/s。求能够使用此协议的最短帧长。

答:对于1km电缆,单程传播时间为1/200000=5为微秒,来回路程传播时间为10微秒,为了能够按照CSMA/CD工作,最小帧的发射时间不能小于10微秒,以Gb/s速率工作,10微秒可以发送的比特数等于10 * 10^-6/1 *10^-9=10000,因此,最短帧是10000位或1250字节长

假定站点A和B在同一个10Mb/s以太网网段上。这两个站点之间的传播时延为225比特时间。现假定A开始发送一帧,并且在A发送结束之前B也发送一帧。如果A发送的是以太网所容许的最短的帧,那么A在检测到和B发生碰撞之前能否把自己的数据发送完毕?换言之,如果A在发送完毕之前并没有检测到碰撞,那么能否肯定A所发送的帧不会和B发送的帧发生碰撞?(提示:在计算时应当考虑到每一个以太网帧在发送到信道上时,在MAC帧前面还要增加若干字节的前同步码和帧定界符)

答:设在t=0时A开始发送,在t=(64+8) * 8 =576比特时间(64 为 最小帧,8 为 同步码和帧定界符),A应当发送完毕。t=225比特时间,B就检测出A的信号,所以B 在此之后不会再发因为已经检测到冲突。只要B在t=224比特时间之前发送数据,A在发送完毕之前就一定检测到碰撞,所以停止发送,后进行退避规则进行发送。
如果A在发送完毕之前并没有检测到碰撞,那么就能够肯定A所发送的帧不会和B发送的帧发生碰撞(当然也不会和其他站点发生碰撞)。

在上题中的站点A和B在t=0时同时发送了数据帧。当t=225比特时间,A和B同时检测到发生了碰撞,并且在 t=225+48=273 比特时间完成了干扰信号的传输。A和B在 CSMA/CD 算法中选择不同的r值退避。假定A和B选择的随机数分别是rA=0和rB=1。试问A和B各在什么时间开始重传其数据帧?A重传的数据帧在什么时间到达B?A重传的数据会不会和B重传的数据再次发生碰撞?B会不会在预定的重传时间停止发送数据?

答:t=0时,A和B开始发送数据
T1=225比特时间,A和B都检测到碰撞
T2=225+48=273比特时间,A和B结束干扰信号的发送(48 为干扰信号数据)
T3=273+96+ 225+ 0 * 225 = 594 ,比特时间,A 开始发送(96 为帧间最小间隔,225 为发送干扰信号的传输)
T4=273+96+ 225 +1* 225 = 785 , 比特时间,B再次检测信道。如空闲,则B在T5=881比特时间发送数据、否则再退避。(T5=T4+96)
A重传的数据在819比特时间到达B,B先检测到信道忙,因此B在预定的881比特时间停止发送

参考资料《计算机网络》–谢希仁

猜你喜欢

转载自blog.csdn.net/m0_38089373/article/details/80635440