你想要的数据链路层,都在这里了!

java1234

共 5610字,需浏览 12分钟

 ·

2020-07-28 17:30

点击蓝色“程序员的时光 ”关注我 ,标注“星标”,及时阅读最新技术文章

写在前面:

小伙伴儿们,大家好!这篇计算机网络数据链路层总结了很久,图文并茂,绝对是干货类型!喜欢的话多多支持哦~

思维导图:

image-20200720095701480

一、数据链路层的基本概念;

  • 作用:
    数据链路层解决的是将源计算机网络层来的数据可靠地传输到相邻节点的目标计算机的网络层。
  • 功能:
    如何将数据组合成数据块(在数据链路层中将这种数据块称为帧,帧是数据链路层的传送单位);   如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使之与接收方相匹配;在两个网路实体之间提供数据链路通路的建立、维持和释放管理。
  • 链路:
    链路(Link)是指的从一个节点到相邻节点的一段物理线路(有线或无线),而中间没有任何其他的交换节点;
  • 数据链路:
    数据链路(Data Link)则是另一个概念,这是因为当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输;
  • 数据链路和帧:
    数据链路层把网络层交下来的数据封装成帧发送到链路上,以 及把接收到的帧中的数据取出并上交给网络层。在因特网中, 网络层协议数据单元就是IP数据报(或简称为数据报、分组或 包)。数据链路层封装的帧,在物理层变成数字信号在链路上 传输。
    image-20200718093949351
    这次我们只探讨数据链路层,就不考虑物理层如何实现比特传输的细 节,我们就可以简单的认为数据帧通过数据链路由节点A发送到节点B。
    image-20200718094058278

二、三个基本问题;

1,封装成帧;
概念:
封装成帧,就是在将网络层的IP数据报的前后分别添加首部和尾部,这样就构成了一个帧。
帧定界符:
不同的数据链路层协议的帧的首部和尾部包含的信息有明确的规定,帧的首部和尾部有帧开始符和帧结束符,称为帧定界符。接收端收到物理层传过来 的数字信号读取到帧开始字符一直到帧结束字符,就认为接收到了一个完整的帧。在数据传输中出现差错时,帧定界符的作用更加明显;
image-20200718095243963
2,透明传输;
帧开始符和帧结束符:
帧开始符和帧结束符最好是不会出现在帧的数据部分的字符,通常我们电脑键盘能够输入的字符是ASCII字符代码表中打印字符,在ASCII字符代码表中,还有非打印控制字符,在非打印字符中有两个字符专门用来做帧定界符,代码SOH(Start Of Header)作为帧开始定界符,对应的二进制编码为0000 0001,代码EOT(End Of Transmission)作为帧结束定界符。
image-20200718153309037
概念:
当传送的帧使用文本文件组成的帧时(文本文件中的字符都是从键盘上输入的),其数据部分显然不会出现像SOH或EOT这样的帧定界控制字符。可见不管从键盘上输入什么字符都可以放在这样的帧中传输过去,因此这样的传输就是透明传输。
解决办法:
为了解决透明传输的问题,就必须设法使数据中可能出现的控制字符“SOH”和“EOT”在接收端不被解析为控制字符。
发送端的数据链路层在数据中出现控制字符”SOH”和”EOT”的前面插入一个转义字符”ESC”(其十六进制编码是1B)。而在接收端的数据链路层在将数据送往网络层之前删除这个插入的转义字符。这种方法称为字节填充(byte stuffing)。 如果转义字符也出现在数据当中,那么解决方法仍然是在转义字符的前面插入一个转义字符。因此,当接收端收到连续的两个转义字符时,就删除其中前面的一个。
image-20200718154101255
3,差错检验;
传输差错:
现实的通信链路都不会是理想的。这就是说,比特在传输过程中可能会 产生差错:
第一类是1可能会变成0,而0也可能变成1,这就叫做比特差错;另一类就是收到的帧并没有出现比特错误,但却出现了帧丢失帧重复帧失序
误码率:
就是在一段时间内,传输错误的比特占所传输比特总数的比率,称之为误码率。例如,误码率为10 ^ (-10)时,表示平均每传送10^10个比特就会出现一个比特的差错。误码率与信噪比有很大的关系,如果提高信噪比,就可以使误码率减小。
循环冗余检验CRC:
为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种 差错检测措施。目前在数据链路层广泛使用了循环冗余检验CRC(Cyclic Redundancy Check)的差错检验技术。
image-20200718155819071
在数据后面添加的冗余码称为帧检验序列FCS(frame check seqeunce)。CRC不是获得FCS的唯一方法。
特点:不能确定出错的bit的是哪一位;可能会出错,但只要经过严格的挑选,并且除数位数足够大,就可以极大减少出错概率;CRC只能做到无差错接受(意思是传输过程没有差错,有差错的一律丢弃);要做到可靠传输,必须加上确认和重传机制。

三、点对点信道的数据链路层;

1,概念;
点到点信道是指的一条链路上就一个发送端和接收端的信道,通常用在广域网链路。
image-20200718161125914
2,ppp协议;
现在使用最多的数据链路层协议是点对点协议PPP,用户使用拨号电话线接入因特网时,一般都是使用PPP协议。
image-20200718163356439
PPP协议应满足:
简单;封装成帧;透明性;多种网络层协议;多种类型链路;差错检验;检测连接状态;最大传送单元;网络层地址协商;数据压缩协商;
PPP协议帧格式;
标志字段F = 0x7E 地址字段A = 0xFF,它并不起作用 控制字段C = 0x03 PPP协议是面向字节的,所以所有的PPP帧的长度都是整数字节。
image-20200718163833167

四、广播信道的数据链路层;

1,概念;
广播信道的数据链路层通常用在局域网链路。
image-20200718165624385
2,共享通信媒体;
静态划分信道(麻烦):频分复用;时分复用;波分复用;码分复用;动态媒体接入控制(多点接入):随机接入(主要是以太网);受控接入,如多点线路探询(polling),轮询(不采用了)。
3,CSMA/CD协议;
总线型网络使用CSMA/CD协议进行通信,即带冲突检测的载波侦听多点接入技术。
即便检测出总线上没有信号,开始发送数据后也有可能和迎面而来的信 号在链路上发生碰撞。比如,A计算机发送的信号和B计算机发送的信号在链路C处发生碰撞,碰撞后的信号相互叠加,在总线上电压变化幅度将会增加,发送方检测到 电压变化超过一定的门限值时,就认为发生冲突,这就是冲突检测。
image-20200718171850800
4,CSMA/CD的重要特性;
使用CSMA/CD协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工);每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能;这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率。

五、以太网;

1,初识以太网;
最初的以太网是将许多计算机都连接到一根总线上,当初认为这样连接即简单又可靠,因为总线上没有有源器件。总线上每一个主机都能检测到B发送的数据。但是只有D的地址和数据帧首部写入的地址一致,所以只有D接收。其余计算机都能检测到这不是发送给他们的数据帧,所以就丢弃这个数据帧。这是一种具有广播特性的总线上实现了一对一通信。这种方式不安全。
image-20200718174134919
2,以太网提供的服务;
以太网提供服务是不可靠的交付,即最大努力的交付;当接收站收到的有差错的数据帧时就丢弃此帧,其它什么也不做,差错的纠正由高层来处理;如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新帧发送。
3,以太网的星型拓扑结构;
物理上是星型,逻辑上是总线型。为了降低成本,最初由粗的同轴电缆变成细的同轴电缆最后变成无屏蔽双绞线。每个站需要用两对双绞线,分别用于发送和接收;在星形的中心增加了一种可靠性高的设备,为集线器(hub)。
image-20200718174403918
4,集线器的特点;
集线器使用电子器件来模拟实际电缆线的工作,因此整个系统仍然是像一个传统的以太网那样运行。由于集线器使用了大规模集成电路芯片,所以可靠性更高;使用集线器逻辑上仍然是一个总线网,各工作站使用的还是CSMA/CD协议,共享逻辑网络上的总线;集线器像一个多接口的转发器,工作在物理层。
image-20200718174500172
5,信道利用率;
争用期长度为2t;帧长为L bit,数据发送旅为C b/s,帧的发送时间为L/C = T0 秒。一个帧从开始发送,经可能发生的碰撞后,将再次重传多次,直到发送成功且信道转为空闲(即再经过t使得信道上没有信号在传播)时为止,是发送一帧所需的平均时间。
image-20200718174700562
定义a = t / T0,是单程端到端时延t与帧发送时间T0的比值。a越小,说明碰撞检测越快,信道利用率高。当数据率(网速)一定时,以太网的连线长度受到限制,否则t会太长;以太网的帧长不能太短,否则T0太小,使a太大。
信道利用率的最大值:
假设理想状态下,以太网个展发送的数据都不会碰撞,一旦总线空闲就能有站立即发送数据,所以没有争用期;发送一帧需要占用总线T0+t,而帧本身需要发送时间为T0,于是理想情况下极限信道利用率Smax = T0 / (T0 + t) = 1 / (1 + a).

六、MAC层;

1,MAC层的硬件地址;
硬件地址 = 物理地址 = MAC地址 MAC地址前3个字节(24位)是厂家分配的地址字段,后3个字节(24位)是厂家自定义,称为扩展标识符;一个地址块可以产生2^24个地址,这种48位地址称为MAC-48,通用名为EUI-48,这就是MAC地址;MAC地址实际上是每一个站的名字或标识符。
2,适配器检查MAC地址;
适配器从网络上每收到一个MAC帧就要用硬件检查MAC帧中的MAC地址:如果是发往本站的帧就收下,然后进行其它处理;否则丢弃。发往本站的帧包括:单播帧(unicast)(一对一) 广播帧(broadcast)(一对全体) 多播帧(multicast)(一对多)
3,MAC帧的格式;
6 + 6 + 2 + 46 + 4 =64 byte,以太网的帧最短是64个字节,这也就是为什么IP数据报的最短长度为46字节;
image-20200718182239717
前8个字节的作用是实现比特同步,第一个字段共7个字节,称为前同步码,作用是实现快速MAC帧的比特同步;第二个字段是帧开始定界符,表示后面的信息是MAC帧。
image-20200718182518751
4,无效的MAC帧;
帧的长度不是整数个字节;用收到的帧检验序列FCS查出有错误;数据字段的长度不在46-1518字节内;有效的MAC帧长度为64-1518字节之间;对于检查出来的无效MAC帧简单的丢弃。
5,帧间最小间隔;
帧间最小间隔为9.6微秒。相当于96bit的发送时间。一个站在检测到总线空闲时,还需要等待9.6微秒后才能再次发送数据;这样做是为了使刚刚收到的数据帧的站接收缓存来得及清理,做好接收下一帧的准备。

七、扩展以太网;

1,在物理层考虑扩展;
距离扩展:
主机使用光纤和一对光纤调制解调器连接到集线器。
image-20200718184554565
数量扩展:
集线器集联,使网络中计算机数量增加,但是会造成效率降低,成为一个大的冲突域。
image-20200718184651612
2,在数据链路层考虑扩展;
使用网桥优化以太网:
网桥工作在数据链路层,它根据MAC帧的目的地址对收到的帧进行转发。网桥具有过滤帧的功能。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是现检查此帧的目的MAC地址,然后再确定将该帧转发到哪一个接口。
image-20200718190109952
透明网桥:
透明指局域网上的站点不知道所发送的帧将经过几个网桥,因为网桥对于各站点是看不见的,也不需要网络管理员配置网桥的MAC地址表,因此我们称透明网桥。
image-20200719183245604
交换机:
随着网桥的接口的增加, 后来网桥和集线器合并了,计算机可以直接和交换机连接,这就是交换机。
image-20200720093406137

八、高速以太网;

1,概念;
速率在100Mb/s以上的以太网称为高速以太网。
image-20200720094032007
2,特点;
使用交换机组建的100BASE-T以太网,可在全双工方式下工作而无冲突发生(注意,如果交换机上某一路连接着集线器(半双工),则这一路不能实现全双工)而无冲突,此时不使用CSMA/CD协议。MAC帧格式不变,仍是802.3 标准。最短帧长度不变,但是一个网段的最大电缆长度减少到100m。帧间间隔从9.6微秒缩小到0.96微秒。


这篇计算机网络笔者总结了很久,把数据链路层的基本知识都涉及到了,实属不易,希望得到大家支持!
这里给我的读者些许Java福利资源:关注公众号《程序员的时光》,后台回复666即可获取!
image-20200720104839941



往期推荐


好了,今天就先分享到这里了,下期继续给大家带来计算机网络的讲解!欢迎关注我的原创技术公众号~

浏览 23
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报