计算机网络-数据链路层学习笔记

数据链路层

  在物理层的传输过程中,会使数据出现一定的误差。引入了数据链路层在物理层之上,采用差错检测、差错控制和流量控制等方法,来检测差错,从而向网络层提供高质量的数据传输服务。

  数据链路层包含两个子层

  1.LLC作为数据链路层的一个子层,使用MAC子层为其提供的服务,通过与对等实体LLC子层的交互为它的上层网络层提供服务。

 

  LLC包含可靠传输的方式,以及解决封装成帧,透明传送,差错控制。

 

  2.MAC子层是用来实现介质访问控制的网络实体。MAC子层主要功能包括数据帧的封装/拆封、帧的寻址与识别、帧的接收与发送、链路的管理、帧的差错控制及MAC协议的维护等。

 

  MAC子层包含:二层交换设备,以太网,CSMA/CD。

数据在每次经过路由器的时候都会在数据链路层检测是否有差错。R为路由器。

 

数据链路层解决的三个问题:封装成帧,透明传送,差错控制

 

概念:

 

1.数据链路层的信道类型:

  1.点对点信道:(一对一)两个设备一根线,从其中一个设备到另一个设备发送信息。

  2.广播信道:(一对多)一根信道上连有多个主机,每个主机都有可能收到信息,需要协议来协调发送。

 

2.链路与数据链路:

  1.链路:一条点到点的物理段,中间没有任何其他交换节点。

  2.数据链路:在链路上添加一定协议来传输数据,为数据链路。

 

3.帧:

  数据链路层在获得网络的发送来的数据包时,将数据封装,封装过后的新数据称为帧,其中封装了帧头,帧尾,来标记一个帧的开始和结尾,其中还含有物理层地址和校验和等信息。

 

4.解决封装成帧

  封装成帧的目的是标记一个帧的开始与结束。其中有几种方法:

    1.字节计数法:每个帧头都添加一个字段,字段写当前这帧的长度是多少,很好理解,但是容易出错,一旦其中一个数据出错往后的数据全部出错。

    2.字节填充的标志字节法:在帧头帧尾添加一个字节的标记(FLAG),从标记中就可以知道一个帧的长度,还解决了字节计数法的问题,当然这种方法也存在问题,当发送的数据里面存在我们的标记的时候,即这个表示是我们发送的数据在帧的中间,我们就会误认为帧在这里结束,解决方法类似与C语言的转移字符,如果是在数据中包含了标记(FLAG),就会在FLAG前面加上一个字节的转义符(ESC),当检测到FLAG的时候只用看见前面是否有ESC就可以了,同样若数据中出现了ESC就会在前面加ESC转义符。在数据被接收的时候就会去掉ESC来恢复原数据。里面还有很多情况比如数据中出现 ESC FLAG 的字段就转换成 ESC ESC ESC FLAG,第一个和第三个ESC便是加上的转义符。(缺点只适用与8比特(1字节)整数倍的数据,也就是只能在字节级别更改)

    3.比特填充的标志比特法:在帧头帧尾添加一个特殊的比特串01111110作为帧标记来表示一个帧的开始与结束,当然数据中也会出现这样的比特串,解决的方法就是在数据中只要连续的出现了5个1就自动的在后面添加一个0,保证了不会有6个1连续的出现,举个例子当一个帧为01111110(头)011111000 (数据)01111110(尾),那么接收之后就会变为01111110(头)01111100 (数据)01111110(尾),去掉了在数据部分的5个连续的1后面的一个0。(优点是可以适用与任意比特的传输)。

    4.物理层编码违禁法:将物理层中不会出现的编码(由编码规则而定)来作为帧界。(有点不会出现帧界的混淆)

 

5.解决透明传输

  透明传输是指不管所传数据是什么样的比特组合,都应当能够在链路上传送。也就是上面的出现了和标记信息一样的信息就采用填充法来解决和标记信息一样的比特流数据传输会出错的问题。

 

6.解决差错控制

  在传输过程中可能会出现比特差错即0变1,1变0,差错控制使接收放只接收正确的数据,若数据不正确则不接收(只检错不纠错)。

  常见的检错码

  1.奇偶校验码:是一种通过增加冗余位使得码字中"1"的个数恒为奇数或偶数的编码方法,分为奇校验和偶校验。

     奇校验:当前比特串中含有奇数个1,将冗余位置为0,否则置为1。

     偶校验:当前比特串中含有偶数个1,将冗余位置为0,否则置为1。

     局限:检测到的出错的信息是可靠的,但并不能保证检测正确的是可靠的(多个突变,校验仍然可能是正确的)

  2.校验和:对数据中数据位进行计算求出来的放置在消息的末尾。

  3.循环冗余校验码(CRC校验码):CRC校验也是在数据后放上校验码,校验码的个数会根据数据的个数大小变化。

    如何生成计算CRC校验码:

      1.几个概念

        1.多项式:生成多项式也就是一个01串 设多项式G(x)=X^3+X^2+1,我们可以看作G(x)=1*(X^3)+1*(X^2)+0*(X^1)+1*(X^0),只保留X前系数得二进制码1101。

        2.模二运算:可以理解为异或运算,其中0+0=0,0+1=1,1+0=1,1+1=0,记住的模二运算中加法没有进位,减法没有借位,也就是说1+1=0不往后进位。

      2.如何计算

        1.约定共同的生成多项式:收发的双方首先在事前约定一个相同的多项式。(生成多项式是规定好的不需要我们去关心)

        2.取生成多项式的二进制码位数r,在原数据位后添加r-1个零,得到新的数据n。

        3.对新的数据n作为被除数,生成多项式作为除数,做模二除法,得到余数为y。

        4.将新数据n和得到的余数y做模二减法,得到最终数据p(就是将末尾添加的r-1位零替换成余数y),发送数据p。

       3.接收检错

        1.接收到的数据作为除数,生成多项式作为除数,做模二除法。

        2.若余数为0,则数据无错,若有余数,则数据出错。

 

7.流量控制与可靠传输

  1.滑动窗口协议:

    1.一位滑动窗口:在接收方维护这一个希望接收的帧的一个窗口,每次发送方发送一个帧到接收方后,接收方会检测是不是自己需要的帧,若是则发送一个确认回去,若接收方没收到,一段时间以后(定时器超时),发送方没收到确认帧,则发送方重新发送刚刚发送的那个帧。这是一个停-等协议,发送方接收方需要等到上一个帧确认接收后才能发送下一个帧。在确认回传过程中,若定时器设置不合理会导致,发送方没有接收到确认时就定时器超时,这回导致一个信道中含有多个重复的帧,浪费资源。

    2.回退N帧:为了避免一位滑动窗口的问题,回退N帧协议可以一次性传多个帧也就是将滑动窗口从一位扩大到n位,我们在选取到合适的n的情况下,可以实现在发送完当前窗口的最后一帧时接收到当前窗口发送的第一帧的确认,这样窗口第一帧就确保了接收方的接收,滑动窗口向后滑动,继续发送新的帧。而回退N帧,则是代表在发送过程中发现其中一帧出问题了,但是已经发送了这个问题帧的后面的帧,那么要做的是就是从问题帧开始重新发送往后的所有帧。发送方要做的是在发送一个帧后启动这个帧的定时器,并且缓存这个帧待帧出现错误后重传,接收到确认之后滑动窗口,在接收方要做的是,一旦发现接收到的某一帧有问题或并未接受到,则后面接收到的数据帧全部丢弃。

    3.选择性重传协议:回退N帧是重新发送问题帧以后的所有帧,而选择性重传则是只重新发送问题帧,在接收方,如果是没问题的帧就直接上交,如果是有问题的帧,便把之后收到的帧缓存取来直到接收到重传的那一帧,在完成排序后一起上交。这个协议中发送窗口需要进行约束,发送窗口的值W,其中发送的数据的最大序列号S =(2^n-1),W<=(S+1)/2。接收窗口大于发送窗口。

8.几个协议

  1.ppp协议:在使用点对点数据通信(点对点通信就是两设备之间没有其他设备),PPP协议拥有数据链路的基本功能即封装成帧,透明传送和差错控制,但不具备流量控制功能和可靠传输机制。

其中首尾的F(7E)是帧的开始和结束,首部的A(FF)是地址(一般是固定的 因为点到点目的地址只有一个),C(03)控制字段,选择是没用的字段,都是一个字节长度。

协议字段(两个字节长)是

(1)当协议字段为0x0021时,PPP帧的信息字段就是IP数据报。
(2)当协议字段为0xC021时,PPP帧的信息字段就是PPP链路控制协议LCP的数据。
(3)当协议字段为0x8021时,PPP帧的信息字段就是网络层的控制数据。

 

 

尾部的FCS是帧检验序列。(1个字节长)

解决透明传输:头尾的标记字段是7E,若在数据出现7E 则替换为 7D 5E(俩字节),出现了7D则替换为7D 5D.也可以使用零比特填充的方法。

 PPP协议一半用于广域网。

 

  2.ALOHA协议(用于局域网,一条线路上链接有多个计算机)

    1.纯ALOHA协议:每个站点可以在任意时间发送自己数据,极其的任性,很容易发送冲突,信道利用率最高达到18.4%很低。

    2.分隙ALOHA协议:将时间分片,每一个时间片为分隙,每个发送方只能在时隙的开始发送,所以冲突只在时隙开始的发生,一旦一个帧占用了这个时隙,在这个时隙内就不会发生冲突了,计算出的信道利用率为可以达到36.8%。

 

  3.带冲突检测的载波侦听多路访问协议(CSMA/CD协议)(同样用于局域网):为了解决冲突问题(先听后发,边发边听)

    1.多点接入:一条线路上连接有多个计算机,如果同时发送数据就会发生冲突。

    2.载波监听:会监听信道,如果信道是空闲的就会立马发送数据,如果是不是就会等待(先听后发)。

    3.碰撞检测:如果成功发送了数据除了被接收方完好无损的接收还会出现两种情况1.两台计算机同时发送了数据,一定会碰撞。2.一台计算机先发送了数据,由于传播时延,另一台计算机还没有监听到,于是也发送了数据,也会碰撞。那么在出现碰撞的情况下,发送方也会监听到(边发边听)(在自己发送过程中接收到了其他信号,就是碰撞),那么发送方会停止发送数据,并且发送一个拥塞信号并广播,告诉这条信道上的所有计算机出现了碰撞,等信道空闲之后,设定一个随机时间,等经过了这个随机时间之后在开始监听信道发送。

碰撞检测的检测时隙宽度要求等于两个最远计算机之间的传输时间(来回时间),可以在一个时隙内可以检测到最远距离的冲突。

发送有效帧的时间大于两个最远计算机之间的传输时间(来回时间),也就是说发送的时间要大于一个来回时间用来保证在能够发送时监听到最远距离发生的碰撞。

基本退避时间为争用期2τ具体的争用期时间是51.2μs(就是最远一来一回的时间)

最小帧长为64字节

 

 

 

9.以太网概述

  以太网是当今现有局域网采用的最通用的通信协议标准。以太网提供的服务是不可靠服务,最大努力的交付,和无差错接收(只接受无差错的数据)。经典以太网中使用CSMA/CD协议来保证使数据。以太网包含着OSI参考模型的最后两层。以太网处理的帧叫做以太帧。

  IEEE802.3协议规定了运行在各种介质上的1M-10M速度的CSMA/CD协议的标准

   以太网帧格式

 

  从左到右分别是前导码(7 Bytes)、帧起始定界符(1 Bytes)、目的MAC地址(6 Bytes)、源MAC地址(6 Bytes)、类型/长度(2 Bytes)、数据和填充字段(48~1500 Bytes)、帧校验序列(4 Bytes)

  MAC地址:也称为局域网地址,物理地址,MAC地址用于在网络中唯一标示一个网卡,每一个网卡都有一个MAC地址,并且是全球唯一的。

  以太帧有很多种类型,常见的有以太 II 帧和IEEE802.3帧。其中如果是IEEE802.3帧帧起始定界符为1表示一个帧的开始,如果是以太 II 帧则是0。第五个字段(长度/类型字段)中IEEE802.3帧这个字段代表长度,而以太 II 帧代表数据的类型。

 

 

 以下是抓到的数据包。

 

 

 其中Frame 就是这个数据包的概述

而Ethernet II就是就是我们抓到的以太网II帧 查看一下

 

 

    

 

 

 

 

 里面包含了目的MAC地址,源MAC地址,和数据类型是IPV4。

而我们上面所看的帧头部(前8字节)和尾部校验和,在计算机收到这个数据包的时候就已经去掉了,剩下的数据部分就是下面的Internet protocol的网络层的内容了。

 

10.数据链路层设备

  1.交换机,网桥:网桥用来连接不同网段。网桥的两个端口分别有一条独立的交换信道,不是共享一条背板总线,可隔离冲突域。网桥比集线器(Hub)性能更好,集线器上各端口都是共享同一条背板总线的。后来,网桥被具有更多端口、同时也可隔离冲突域的交换机(Switch)所取代。

    网桥和交换机将两个相似的网络连接起来,并对网络数据的流通进行管理。设备将两个局域网连接在一起时,若两个网络的帧格式不同,网桥可以对他们重新封装变成合适的帧,也可以对帧进行缓存来适应不同的发送接收速度。

    当帧到达网桥时,网桥都需要做出决策,是转发还是广播这个帧,在网桥中有个MAC表支持学习的功能,当某一帧到达网桥,他会解封帧,提取里面的数据首先记录这个帧的源MAC地址来自哪个端口将这一信息记录到MAC表中,在查找MAC表中是否含有对应的目的地址对应了端口,如果有则直接将帧转发到对应的端口,否则就广播这个帧,发送到已经连接的端口,还有一种情况在查找的表后发现数据送来的端口就是要转发的端口,那么网桥将会丢弃这个帧,因为这两计算机位于同一条信道上,源主机发送帧时,一条信道的上的所有计算机都可以接收到这个帧,网桥没必要转发一次了。

  2.网卡

  网卡提供MAC地址,数据的封装与解封,链路管理。网卡既是物理层的设备也是数据链路层的MAC子层的d设备。

 

11.生成树协议

  在连接多个局域网的时候,经常用不止一条线来连接,来保证可靠性,但是这样就很容易形成环结构,很有可能会让数据帧无线的在环上无限传输,形成网络风暴。也会让交换机在MAC地址表学习的时候会让学习的端口不稳定。为了避免这个问题,用生成树协议来使从一点到另一点的路径只有一条,将图转换为树。

  原理:生成树协议工作原理:任意一交换机中如果到达根网桥有两条或者两条以上的链路.生成树协议都根据算法把其中一条切断,仅保留一条.从而保证任意两个交换机之间只有一条单一的活动链路.因为这种生成的这种拓扑结构.很像是以根交换机为树干的树形结构.故为生成树协议。

  当生成树中某些端口失效了 ,生成新的生成树。

 

12.虚拟局域网(VLAN)

  虚拟局域网(VLAN)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,相互之间的通信就好像它们在同一个网段中一样,由此得名虚拟局域网。

  基于端口的VLAN,在交换机内部有一个VLAN表,来标定哪些是虚拟局域网端口。

  假如一台交换机上有一个VLAN vlan内包含AB两个主机 而CD两个主机是连在普通端口上。那么C发送的帧交换机要交付给A的时候是无法做到的,AB是无法转发到的。只有AB是相互连通。他们在物理上是连通的但是在逻辑上是不通的。

 

posted @ 2020-04-19 20:11  esyc  阅读(762)  评论(0编辑  收藏  举报