数据链路层

来源:互联网 发布:网络机柜插座接线图 编辑:程序博客网 时间:2024/04/19 23:06

信道类型:点对点信道—使用一对一的点对点通信方式,广播信道—使用一对多的广播通信方式,使用专用的共享信道协议来协调这些主机的数据发送。
链路与数据链路:链路是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换节点。而数据链路则是另一个概念,在线路上进行数据传输的时候,除了物理线路之外,还必须有必要的通信协议来控制数据的传输,实现这些协议的硬件和软件加到链路上,就是构成了数据链路。现在一般使用网络适配器实现这些协议,一般网络适配器包括数据链路层和物理层两层功能。
数据链路层把网络层交下来的数据构成帧发送到链路上,同时把链路上的帧中的数据取出并传递给网络层。网络层协议数据单元就是IP数据报。
点对点信道:在数据链路层进行通信时主要步骤如下:(1)把网络层叫下来的IP数据报添加头部和尾部,封装成帧。(2)把封装成帧的数据报发送给下一个结点。(3)把从下层接收到的帧进行检验是否有差错,若无差错就提取其中IP数据报上交给上面的网络层。否则丢弃这个帧
三个基本问题:封装成帧,透明传输,差错检测。
封装成帧:首部和尾部的一个重要作用就是进行帧定界。首部与尾部还包括许多必要的控制信息。发送时从首部开始发送,数据链路层的协议对帧的首部和尾部格式有明确的规定。为了提高效率,应该使得数据部分长度大于首部与尾部长度。但是每一个数据链路层协议都限定了数据部分的长度上限—最大传送单元。出现传输差错时更明显,检测是否有首部和尾部,即可知道是否传输一个完整的帧(SOH,EOT)
透明传输:数据部分不允许有跟首部与尾部(帧界定符)相同的比特编码,否则就会出现帧定界的错误。如数据为文本文件组成的帧,显然不会出现SOH,EOT这样的字符,可见无论怎么从键盘输入都可以放在帧中去,这样的传输就是透明传输。但当数据部分为非ASCII码的文本文件时,如果数据部分恰好出现SOH,EOT这样的字符,数据链路层就会错误的找到边界,把部分帧接受而把剩下的丢弃。这样就不是透明传输。透明传输定义是无论什么样的比特组合都可以百分之百的通过这个数据链路层,因此对传输的数据来说,就看不见数据链路层有什么妨碍数据的传输,数据链路层对数据来说是透明的。想要解决透明传输问题,可以在数据部分中出现的控制字符之前加入转义字符ESC(1B),封装是加入,提取数据时删除这些加的转义字符,这种方法称为字节填充或者字符填充。注意:若是数据部分有转义字符ESC,同样在之前加入ESC
差错检测:比特在传输过程中产生的差错,如0变1,1变0等叫做比特差错。传输错误所占的比特总数的比率叫做误码率(BER)。提高信噪比可以降低误码率。目前数据链路层广泛使用了循环冗余检验(CRC)技术。帧检测序列FCS是添加在数据后面的冗余码。在接收端对收到的帧进行检验后,若余数为0,则接受,反之就舍弃。
可靠传输:传送端发送什么,接收端就接收什么,而不是仅仅是接受正确的。因此要和差错检测后接受的区分开。在数据链路使用CRC只能保证无比特差错,而不能保证传输差错,传输差错包括帧丢失,重复或失序。现在为了实现可靠传输,进行区别对待,即对通信质量好的传输链路不使用确认和重传机制,而不好的则使用,这样可以提高通信效率。
点对点协议:是用户计算机和ISP进行通信时所使用的数据链路层协议。PPP(点对点协议)的帧格式是在首部和尾部分别为四个字段和两个字段。首部为F(标致字段flag 为0x7E)A(地址字段0xFF)C(控制字段0x03)协议,其中前三个都是一个字节,协议为两个字节,当协议字段为0x0021时,帧信息部分就是IP数据报,若为0xC021,则信息字段就是PPP链路控制协议LCP的数据,若为0x8021表示为网络层的控制数据,其中AC两个并没有携带帧信息。尾部 为FCS(CRC的帧检测序列,冗余码)F(标致字段flag)。若两个帧连续出现,只需要一个F,两个F相连表示空帧。字节填充,此处的转义字符为0x7D,即在信息部分出现的0x7E之前加入转义字符,出现转义字符也是加一个转义字符,若出现ASCII的控制字符,就再之前加入0x7D,并且将编码变为2字节序列(如0x03应该变为0x23),然后在接收端进行相反的变换即可。零比特填充,就是在5个1后面添加0。
广播信道:主要代表局域网。局域网工作层次跨越数据链路层和物理层。其中数据链路层的技术内容比较丰富。共享信道 考虑如何方便的共享通信媒体资源。技术上有两种方法:(1)静态划分信道,如频分复用,时分复用,统计时分复用,波分复用,码分复用等,分配到了就不会冲突,但是代价较高,不适合局域网。(2)动态媒体接入控制,—–随即接入和受控接入,随机接入需要解决碰撞的协议。
以太网使用无源电缆作为总线传送数据帧。局域网的数据链路层分为两个子层,逻辑电路控制层(LLC)和媒体接入控制层(MAC)。其中LLC与传输媒体无关,与接入传输媒体有关的全部放入MAC层,MAC子层局域网对LLC层都是透明的。而现在许多适配器上只有MAC层,没有LLC层。适配器 是计算机与外界局域网的连接结点,他们是通过适配器进行连接的,也就是网络接口卡或者网卡。
CSMA/CD协议要点:多点接入,就是总线型网络,许多计算机都是连接在一根总线上,协议的实质是载波监听和碰撞检测。载波监听 就是用电子技术检测是否有其他的计算机也在发送。不管是在发送之前还是发送之中,每个站必须不停检测信道。后者是为了检测碰撞发生。碰撞检测 也就是便发送边监听,当其他的计算机也在发送时,总线上电压变化幅度会增大,当电压增幅超过一定的幅度,就认为这至少有两个站在同时发送数据,表明发生了碰撞。也就是发生了冲突,因此也叫冲突检测,这时候总线上传输信号会发生失真,无法恢复有用的信息出来,因此任何一个正在发送数据的站,一旦发生碰撞,适配器就要立即停止。免得进行无效发生,浪费资源。为什么之前监听了还会发生碰撞?因为电磁波是以有限的速率传输的,就像开会时中途会有停顿。以上看出,CSMA/CD协议不可能让一个站同时发送与接受,只能边发送边监听,因此这个协议只能进行半双工通信,双向交替通信
截断二进制指数退避算法:这种算法让发生碰撞的站在停止发送数据之后,不是等待信道空闲之后立即重发数据,而是推迟一个随机的时间。退避算法如下:(1)规定基本退避争用期为51.2us,对于10M/s的以太网,在争用期可发送512bit,即64字节,可以说争用期为512比特时间(2)从离散的整数集合[0,(2^k)-1]之间随机取一个数,记为r,重传应推迟后的时间就是r倍的争用期,当k>10时,k就是一直等于10(3)当重传达16次任不成功,就表明同时打算发送的数据太多,以至于连续冲突,则丢弃该帧,并向高层报告。注意:当一个帧很短小与512bit时,为了避免发送完成之前还没检测到碰撞,需要添加一些填充字符,凡长度小与64字节的帧都是由于冲突而异常终止的无效帧。强化碰撞概念,就是当发送数据比特的站一旦发生了碰撞,除了立即停止发送数据之外,还要继续发送32比特或48比特的认为干扰信号,以便让所有的用户知道现在已经发生了碰撞。以太网还规定了最小帧间间隔,为了使刚接收到的站的接受缓存来得及清理,做好接收下一个帧的准备。
CSMA/CD要点:(1)准备发送,添加首部和尾部,封装成帧,放入适配器缓存,发送之前,必须先检查信道(2)检测信道:若信道忙,则一直检测,直到信道空闲,若检测信道空闲并在96bit内保持空闲,就发送帧(3)边发送边监听。这里有两种可能性:一是发送成功,在争用期内一直未检测到碰撞,这个帧就能发送成功,发送完毕后就回到1.二是发送失败,在争用期检测到碰撞,立即停止发送数据,并按照规定发送干扰信号。适配器接着执行退避算法,等待r倍的512比特时间之后,返回步骤2,继续检测信道,若是16次之后也不成功,则停止重传,上报错误。以太网发送完帧之后还要在保留一下,如果在争用期发生碰撞,那么还要推迟一段时间,再把这个保留的帧重发一遍。
MAC层:硬件地址也叫做物理地址,或MAC地址(因为这种地址用在MAC帧中)。MAC地址存在适配器中,只要计算机的适配器没有换,那么这个计算机的MAC地址就不会随地理位置的改变而改变,反之,若是适配器进行更换,那么物理地址就会改变。MAC地址现在都是6字节的。可以供全世界使用。发往本站的帧有三种:单播,广播,多播,分别对应1对1,1对全体,1对部分。
数据链路层扩展以太网 需要使用的是网桥。网桥工作在数据链路层,它根据MAC帧的目的地址对收到的帧进行转发和过滤。网桥根据转发表来转发帧,转发表也叫做转发数据库或路由目录。透明网桥就是以太网的站点并不知道所发送的帧要经过哪几个网桥,以太网的站点都是看不见网桥的,透明网桥也是一种即插即用设备,不需要人工配置。通过自学习算法实现,简单来说,就是从哪个接口收到某个站点发送的帧,就能知道从哪个接口发送出去能到达这个站点,记录下来就可以逐步形成转发表。
网桥自学习和转发步骤:(1)网桥收到帧之后先自学习,若没有目的地址,就添加一项目写入进去,若存在就进行更新(2)转发帧,若查找到的帧的目的地址没有匹配项,就通过除进入网桥的接口之外的其他所有接口进行转发,若是有,就按照转发表中的接口进行转发。注意,要是转发表中的接口与进入接口相同,就进行舍弃。通过生成树算法,找出原来网络拓扑的一个子集,子集之中,整个网络不存在回路,即任何两个站之间只存在一条路径。生成树必须每隔一段时间进行更新。
多接口网桥—–以太网交换机或第二次交换机,表明交换机工作再数据链路层。
以太网交换机可以很方便实现虚拟局域网VLAN。虚拟局域网vlan是由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有某些共同的需求。每一个VLAN的帧都有明确的标识符,指明发送的帧工作在哪一个VLAN。虚拟局域网其实只是局域网给用户提供的一种服务,并不是一种新的局域网。每一个VLAN中的工作站可处在不同的局域网中,也可在不同的楼层。

0 0
原创粉丝点击