计算机网络——数据链路层

  先区分一个概念,数据链路和链路到底有啥不同?链路也叫link,单单指传输的通道,而数据链路则在链路基础上增加一些协议等东西,总体来说是包含关系。
  再问自己一个问题,数据链路层到底干什么的?如果从之前对于功能的描述看,数据链路层负责向网络层提供服务,并兼有差错检测,链路管理等一些功能。对于数据链路层来说,作为物理层上层,传输时候已经屏蔽到真实传输中的各种介质了。所以我认为所有链路都是相同的(这个说法其实不是很严谨,链路是相对于线路而言的一个概念,链路层又是不同的角度和内涵)
  教材上指出这章研究的是在没有路由器参与下,局域网中主机与主机之间的数据传输。按照物理层的说法,数据传输分为有线无线。同样数据链路层中有线方式对应点对点信道,无线方式对应广播信道。给我的整体感觉,课程在讲授过程中重点放在了数据如何在信道中传输,即在传输过程中的真实情况,顺利也好,不顺利也罢。下面还是按教材知识点走一遍:
  数据链路层围绕三个基本问题:封装成帧,透明传输,差错检测。
  封装成帧:即将数据包切分并在经过数据链路层时加入头部尾部(其他层次只加了头部,这个有尾部),形成的数据包叫做帧。帧有大小限制,叫最大传送单元MTU(Maximum Transfer Unit)。有一个特殊情况,当数据是由可打印的ASCII码组成的文本文件时,帧定界可以使用特殊的帧定界符(帧开始符(SOH),帧结束符(EOT))。这个帧定界符也是几个二进制编码,这就留下了一个问题:虽然有了帧定界符之后可以对帧进行区分,但同是字符,数据内容与帧定界符相同怎么办?那就会导致提前中止的情况发生啊,这个在后面的透明传输做了解释。
  封装成帧的过程明白了,那为啥要封装成帧呢?我觉得这个还是源于分组转发的特性吧。概念上我们说分组,实际传输中就是分帧。所以也可以认为帧是最小的传输单位吧!
  透明传输:之前一直很疑惑透明传输是一个概念还是一个动作。其实透明传输指无论所传送的数据是什么样的组合,都应该能在链路上传输(源自百度百科)。所以我们需要做到透明传输。结合之前的封装成帧,如果不出现之前那种特殊情况,顺顺利利的传输,我愿称之为透明传输~但墨菲定律告诉我们,坏事总会到我头上,如果特殊情况发生怎么办?所以我们需要一种方法来将非透明传输变成透明传输。先来看看聚焦的问题:就是定界符和数据相同引发的冲突,只要把两者区分开就可以了。于是使用字节填充(字符填充)的方法:在SOH和EOT之前加入转义字符ESC(1BH/00011011B),当数据到达的时候再将转义字符删去,还原原数据。那再特殊一点儿呢?比如原数据中包含转义字符呢?那就在之前再加一个,以此类推,总是选择删去一个转义字符的方式。
  差错检测:唉?据我所知,数据链路层不是提供可靠传输的吧,那为啥有差错检测呢?是这样的,数据链路层虽然不是可靠传输,但是尽最大可能的传输,也叫无差错传输。如果在数据链路层就检测出错误了,那没必要向上传递了(有点儿像筛子的作用)。采取的常规方法就是直接扔掉检验方法就是循环冗余检验CRC了(具体的我就不说了,我也不会,需要可自行百度
  插一下,无差错传输和可靠传输有啥区别呢?无差错传输指有错可以被检测的传输,可靠传输指概率为1的传输就是百分百正确啦,这个交给高层(运输层)解决。
  再插一下,网上有种说法之前数据链路层也可以提供可靠传输,通过HDLC协议。那为啥这个慢慢就没落了呢?其实这个和网络层的传输有关系,数据链路层的可靠传输不一定能够保证网络层的可靠啊!如果网络层出了问题,数据链路的可靠就没用了呀!所以把对于可靠性传输放在了传输的最后一层——运输层。
  说完了三个基本问题,再聊聊两种基本方式:点对点协议PPP,广播信道——CSMA/CD
  点对点协议PPP
  PPP全名Point-to-Point Protocol(在传感器网络里面最后一个P十有八九都是协议的意思)。PPP协议专门用于在用户和服务器之间传输信息了。PPP比较有意思的是在填充字节的方式上分了两种:字节填充和零比特填充。
  字节填充指当信息字段种出现和标志字段一样的比特时,使用字节填充转义字符的方式区分。
  零比特填充指数据传输过程中发现有连续的五个1后面加一个0作为了分界符,这样和标志字段就不会有冲突了。
  那两个有啥区别呢?字符填充多用于异步传输,零比特填充多用于同步填充。那异步和同步传输有啥区别呢?同步传输指收发两端时钟频率同步,并且连续发送数据流,效率比较高。异步传输指一次发送一个字节,过了一段儿时间后再发一个,属于单字节的发送,效率比较低。(这也间接的解释了为啥异步通信不需要零比特填充,因为单字节的发送出现连续5个以上1的可能性比较小啊~)。(我再留个参考资料,可以看看:https://blog.csdn.net/w1234567465/article/details/107964352link
  PPP是点对点的通信,自然就需要建立连接,整个过程状态图如下:
在这里插入图片描述
PPP还有两个相关的协议,不过我不会,就简单记录下吧,感兴趣再查:LCP,NCP。
  广播信道——CSMA/CD
  可能由于效率的原因,PPP不太适合大规模网络。用的更多的是以太网,里面的思想就是共享信道。共享信道有两种方式:静态划分和动态接入。静态划分就是第二章介绍的那些时分复用,频分复用等等。动态接入又分为两种:随机接入和受控接入。受控接入包括轮询或者令牌环,这是一种无冲突的方式,适于大规模数据传送,不过不是课程讲授的重点。我们学的是动态接入,这里举一个代表性的协议——载波监听多点接入/碰撞检测CSMA/CD(Carrier Sense Multiple Access with Collision Detection)。
  首先明确CSMA/CD的使用场景为以太网(802.3)中。解读这个协议可以从名字上看,基本包括三大类:载波监听,多点接入,碰撞检测。其特点可总结为16个字:边听边发,先听再发,碰撞停止,延迟重发
  注意:在讨论CSMA/CD时,我们假设是单向信道,同一时间只能单向传输一组数据
  多点接入:对于共享信道来说,这是一个共同的特点。说明所有节点都可以接入到信道中发送数据。并且在理论上所有节点等概率发送数据,也就是公平性。这个特点也就导致了其存在数据冲突的可能。
  载波监听:其实真正的载波监听在物理层,物理层通过电子技术检测总线上的信号强度,确定当前是否有数据在发送。对于数据链路层来说这只是一种方法,只是突出监测信道判断是否可发送这一功能。
  碰撞检测:这属于这个协议的一大特点,边发送数据边监听信道是否发生碰撞。
  什么是碰撞呢?这是网络中一个比较常见的概念,指数据传送过程中发生冲突,简单点儿说就是在不允许同时发送多组数据的地方发送了多组数据。
  那如果发生了碰撞怎么办呢?就会按照特定的退避算法进行等待,等到退避时间过后再次发送。退避算法书上就说了二进制退避算法(在0-2^k-1倍争用期中挑选一个作为退避时间)。但其实还有更多高级的方法,感兴趣可以自行百度。
  什么叫争用期呢?指的是能够检测到碰撞的最大时间。如果争用期一过,没有发生碰撞,即发送成功。争用期的长度是二倍的传输时间,原因下面这个图可以很好的解释:
在这里插入图片描述
  由于数据传输的速率基本上是确定的,争用期也是个定值,争用期中发送到信道的数据量也是定值。以太网为了判断是否碰撞发生,利用了这个特性,确定64字节为最小帧长。小于64字节的认为发生了冲突,视为无效帧,直接丢弃。
  还有一个强化碰撞的概念,指发现碰撞发生后除了停止数据再发送32比特或者48比特的人为干扰信号。作用其实也很明显,告诉其他节点当前发生了碰撞,不要送了~
  因为有了碰撞的可能,以太网每发送一帧后会将已发送的帧暂时保留一下,如果碰撞后可以以此再次重发。
  路由器可以连接网络(稍后在网络层会进行介绍)。网络中也可以包含多个以太网,虽然是网络之间相连但仍属于数据链路层的范畴。也叫做以太网的扩展,通过扩展可以增大网络的覆盖范围。在物理层和数据链路层都可以进行扩展,只不过使用的工具不同。物理层使用集线器,数据链路层使用交换机。那集线器和交换机有什么区别呢?它们的共同作用都是实现局域网下主机的互联,但集线器是广播转发,也就是说当多台主机(A,B,C)相连时,A给B发送的信息C也能收到,不太方便嘛!而且也不能同时发送。交换机就是一种改良,它可以为通信双方建立专门的通信链路,但这个过程对用户透明。看上去和集线器一样都是统统连到上面。这篇文章解释的不错:https://blog.csdn.net/pcwl1206/article/details/83856741link。那为啥说集线器是在物理层,交换机是在数据链路层呢?可以理解成集线器只是进行了简单的处理,而交换机做了更为复杂的操作符合于数据链路层的特征。(参考资料:https://zhidao.baidu.com/question/503892795392046844.htmllink
  有一种说法管数据链路层又叫MAC(medium access control)层,之间是什么关系呢?其实数据链路层包含了两部分(也叫两个子层):MAC层和LLC(logical link control)层。那为啥现在不提LLC了呢?其实上面做过一点铺垫,LLC实际上是在HDSL的基础上发展起来的,是为了面向连接的可靠接受。但根据上面的分析实际数据链路层不需要做到可靠接受,所以LLC慢慢就消失了,只剩下MAC,也就用MAC来代替数据链路层了。
  在数据传送过程中,要想精准传输,需要了解到设备物理地址,也叫MAC地址/硬件地址。现在设备的MAC地址都固化在网卡中了,可以上网查查怎么看自己的MAC地址,简单的方法是在cmd里输入config /all(方法:http://www.xiuchuang.com/question/1801.html)。MAC地址是48位,可以看到是6组。(之前都记不住,现在看一下清楚明了啊~)
  虚拟局域网听起来像是一种网络的名字,但实际上它是一种服务。通过虚拟局域网可以在不同交换机管理下的主机间实现通信,就像墙与墙之间的小门,交流方便,但钥匙有专人保管。(想了解可以看看这个:https://blog.csdn.net/qq_37653144/article/details/80397396link
  随着现代社会的需求,高速率成为了追求。教材中列举了几个高速以太网的例子,比如100BASE-T(100代表带宽为100Mbit/s,base代表基带信号,T代表双绞线星形拓扑)。其他了解了解就行了,脑子内存不够放了呀~
  使用以太网进行宽带接入还是比较有意思的,它融合PPP和以太网,搞了一个PPPoE,我看不太懂,感兴趣的可以看看:https://www.jb51.net/network/67473.htmllink

因作者水平有限,如有不足之处,请在下方评论区指正,谢谢!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机网络中,物理层、数据链路层和网络层是构成OSI参考模型的三个重要层级。物理层负责传输原始的比特流,数据链路层在物理层的基础上为网络层提供服务,主要是将网络层交付的数据报可靠传输到对方主机的网络层。而网络层则负责管理网络中的数据通信,将数据从源端经过若干个中间节点传送到目的地。 物理层主要负责传输数据的基本单位比特,通过物理连接来提供可靠传输数据链路层位于网络层和物理层之间,负责数据链路的建立、维护和拆除,并实现帧的包装、传输、同步、差错恢复和流量控制。以太网是最常用的数据链路层协议。网络层则进一步管理网络中的数据通信,负责将数据从源端通过中间节点传送到目的地。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [408计算机网络学习笔记——数据链路层](https://blog.csdn.net/JiangNan_1002/article/details/124369273)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [计算机网络通信基础 物理层与数据链路层](https://blog.csdn.net/qq_45927266/article/details/120955930)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [一文看懂数据链路层和网络层的区别](https://download.csdn.net/download/weixin_38731385/14831340)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值