我是靠谱客的博主 缥缈小鸭子,最近开发中收集的这篇文章主要介绍计算机网络浅谈(三)数据链路层(1)写在前面数据链路层,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

友情链接

计算机网络浅谈(一)总括
计算机网络浅谈(二)物理层

写在前面

上一篇大致讲解了计算机网络物理层的相关要点,物理层主要需要掌握的要点及信号以及信道的相关特性,对于信号编码方式以及信道复用的掌握是重中之重,这次复习数据链路层的相关要点,也可以让我本人进行一下复习。

数据链路层

概述

数据链路层是TCP/IP协议栈中组成网络接口层的主要部分,可以说数据链路层是联系物理层次,并且为重要的网络层做好基本铺垫的一个层次,属于中流砥柱的地位。而从数据链路层开始,才真正的进入了计算机网络的主要核心层次。

定义

数据链路层的定义可以概括为通过封装成帧的形式,控制比特流在特定链路上不断传输,并最终正确交付给目的主机的层次。
从定义中可以看出本句话的三个主要要点,也是所有讲数据链路层都会提到的三个问题:(1)封装成帧(2)透明传输(3)差错控制

数据链路层三个问题的讨论

我们既然引出了这三个主要问题,那么就需要了解一下它们各自的基本含义:

封装成帧

封装成帧主要目的是将网络层交下来的IP数据报通过加装控制信息(即添加首部、尾部)来封装成一个一个单独的帧进行传输,通过控制帧的形式来有效实现在相邻节点之间的传输。所以帧就有着开头和结尾的独特标志SOH(start of head)和EOT(end of transmition),不同的协议标志会有所不同。

透明传输

对于计算机网络来说,网络接口层属于TCP/IP协议栈最底层,上层在进行处理时要尽量避免对比特流信息的直接处理,即不对数据做任何额外操作,只是加上控制信息(添加首部),并不需要知道数据部分的内容是什么,那么数据链路层则必须要做到这一点才能为上层提供更为简单的服务。
而透明传输解决的主要问题就是解决帧起始标志和结束标志误判的情况
由于帧的起始和结束标志可能会出现在数据部分中,这就很有可能在接受帧的时候分错帧,所以要用某些方式来对数据进行填充操作,防止进行误判。(下面会讲到)

差错控制

在数据链路层,差错控制意味着要对数据部分进行校验。由于网络层了解的人都知道,只是负责进行分组转发的功能,所以对丢失或者接收差错的帧就需要进行校验并丢弃,这是一种最基本的差错处理方式。

数据链路层的通信方式

数据链路层有着两种基本的通信方式:(1)点对点通信(2)广播通信
这无论对于数据链路层还是网络层,其处理方式都是截然不同的;在数据链路层,基本的通信方式就是点对点通信,因为其消耗资源有限,所以不受到限制;而广播通信即多对一、多对多通信,对于数据链路负担较大,所以只是适合于在局域网中进行。

点对点通信

点对点通信即单点传输,是由明确目标以及明确链路的通信方式,其中点对点通信的基本协议为PPP协议,HDLC协议,但是HDLC协议基本退出历史舞台,所以就基本介绍PPP协议。

PPP协议

点对点协议是一种简单的、无流量控制、无纠错、无序号的传输协议,其最主要还是解决了数据链路层的三个基本问题,并且通过与ISP进行连接获取到相应IP地址而进行上网的协议。
PPP协议主要有三个部分组成:
(1)将IP数据报封装到串行链路传输
(2)链路控制协议LCP
(3)网络控制协议NCP

基本传输步骤

(1)用户使用调制解调器呼叫路由器(进行拨号),进入链路连接状态
(2)通过LCP协议开始协商一些配置选项,进行相关鉴别工作,最终进入网络层协议状态。
(3)网络控制协议NCP通过加载相关协议模块(一般为IPCP)进行网络层相关配置
(4)最终进入链路打开状态,两个PPP端点可以互送LCP帧
(5)传输结束时传送LCP中止请求,链路断开

PPP协议要点——透明传输实现

PPP协议的透明传输使用了字节填充、零比特填充,方法相当简单,这里进行简述。
字节填充是在正常传输情况下使用的,由于PPP协议的SOH(Start of Head)和EOT(End of Transmition)的标志位0x7E,所以就需要防止数据段出现0x7E,那么对于这几种情况进行改动:
(1)出现0x7E则更改为两个字节(0x7D, 0x5E)
(2)出现0x&7D的情况则也转变为两个字节(0x7D,0x5D)
(3)如果出现ACSII码的控制字符(小于0x20),则需要在控制字符前加0x7D
零比特填充则是PPP协议在SONET/SDH链路上传输时使用的方式,方式非常简单,由于0x7E的二进制为01111110,则要保证数据中没有6个连续的1即可,即在连续5个1的情况下立即在后面填入一个0,在接收时再将0去除即可。

差错控制方式

介绍了一部分透明传输的方式,那么差错控制方式也是必须要谈一下了。
数据链路层的差错控制方式非常简单,即和组成原理中的磁盘校验一样的方式——CRC循环冗余校验码。基本方式即计算机根据数据的位数选取特定的除数k(位数为n),进行异或除法,取到的余数位数为n-1,将余数加载帧的FCS帧检验字段,当数据到达时,使用相同的除数进行相除,如果余数为0则认为帧正确,如果余数不为0则直接丢弃当前帧,让发送方进行重传。

广播传输方式

广播传输方式是数据链路层的又一大基本功能,由于进行数据传输时有时确实需要同时发给多个目的主机,那么就需要一种广播的机制来完成相关事宜,由此不得不提到局域网的概念。

局域网

局域网在网络层次结构中属于第三级(广域网、城域网、局域网、个人区域网),属于比较小的网络范围,其主要特点是网络为一个单位所有,且地理范围和站点数量均有限。
只有这样,才可能进行广播通信,不然想在广域网中进行广播,其消耗的资源将是巨大的。
局域网的主要特点是:
(1)具有广播功能(2)便于系统的扩展和维护(3)提高了系统的可靠性、可用性和生存性。
那么知道了局域网的基本特点后,如何构造这个局域网才能完成我们所需要的广播功能呢?

网络拓扑结构

局域网的网络拓扑结构主要有下面几种
(1)总线型网络
(2)星型网络
(3)环形网络
前两种拓扑结构比较相像,因为前两种都有一个类似“中枢”的机构,可以完成多台主机的相互连接
而环形网络一般使用场景比较少,最出名的是令牌环网。

广播带来的问题

那么网络搭建好了,问题又多了起来,对于上述这几种网络拓扑结构,确实很好的将各个计算机连接了起来,非常便于帧的转发以及广播,但是在信道传输中,由于共享部分信道,所以难免会出现信息碰撞的问题,那么这又怎么解决呢?下面有两种解决方式:
(1)静态划分信道,如上一节所讲,进行信道复用。
(2)动态划分信道,这里则分为两种方式,一种是动态接入、一种是受控接入,从简单的解释来讲,一种是由协议来为我们进行实现的,而另一种则是人工进行分配信道,达到不碰撞的目的。

下一节会继续梳理数据链路层的广播相关问题,谢谢观赏!

最后

以上就是缥缈小鸭子为你收集整理的计算机网络浅谈(三)数据链路层(1)写在前面数据链路层的全部内容,希望文章能够帮你解决计算机网络浅谈(三)数据链路层(1)写在前面数据链路层所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部