-
数据链路层基本问题
2020-07-20 12:38:45封装成帧# 封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,然后就构成...发送端的数据链路层在数据中出现控制字符SOH或EOT的前面插入一个转义字符ESC(其十六进制编码是1B)。 字节填充(byte stuffing)封装成帧#
封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。
首部和尾部的一个重要作用就是进行帧定界。
在这里插入图片描述透明传输#
若传输的数据是ASCll码中“可打印字符(共95个)“集时,就正常。
若传输的数据不是仅由“可打印字符”组成时,就会出问题。
在这里插入图片描述
用字节填充法解决透明传输的问题
发送端的数据链路层在数据中出现控制字符SOH或EOT的前面插入一个转义字符ESC(其十六进制编码是1B)。
字节填充(byte stuffing)或字符填充(character stuffing)—接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
如果转义字符也出现数据当中,那么应在转义字符前再插入一个转义字符。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
在这里插入图片描述
差错控制#
传输过程中可能会产生比特差错:1可能会变成0而0也可能变成1。
在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate)。
误码率与信噪比有很大的关系。
为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。
循环冗余检验CRC(Cyclic Redundancy Check)在发送端,先把数据划分为组。假定每组k个比特。
假设待传送的一组数据M=101001(现在k=6)。我们在M的后面再添加供差错检测用的n位冗余码一起发送。
冗余码的计算用二进制的模2运算进行20乘M的运算,这相当于在M后面添加n个0。
得到的(k+n)位的数除以事先选定好的长度为(n+1)位的除数 P,得出商是Q而余数是R,余数R比除数P少1位,即R是n位。
计算过程
在这里插入图片描述10100是要传输的数据,则在后面添加n个0,再除以n+1位数,这里是添加3个0,所以除以1101四位数(不一定是1101,自定义)
高位是1则够除,商1
高位是0不够除,商0
减的时候,上下相同为0,上下不同为1
然后把得到的余数001添加到原数据后面,就是101001001,传输完后,再用这个数除以之前的1101,如果得到0就说明传输过程中没有差错
帧检验序列FCS
刚才最后得到的余数,就是在数据后面添加上的冗余码,称为帧检验序列FCS(Frame Check Sequence)循环冗余检验CRC和帧检验序列FCS并不等同。
CRC(Cyclic Redundancy Check)是一种常用的检错方法,而FCS是添加在数据后面的冗余码
FCS(Frame Check Sequence)可以用CRC这种方法得出,但CRC并非用来获得FCS唯一方法。
小结:CRC差错检测技术#
仅用循环冗余检验CRC差错检测技术只能做到无差错接受(accept)“无差错接受”是指:“凡是接受的帧(即不包括丢弃的帧),我们以非常接近于1的概率认为这些帧在传输过程中没有产生差错”。也说:“凡是接收端数据链路层接受的帧都没有传输差错”(有差错的丢弃而不接受)。
要做到“可靠传输”(即发送什么就收到什么)就必须再加上确认和重传考虑:帧重复、帧丢失、帧乱序的情况
可以说CRC是一种无比特差错,而不是无传输差错的检测机制0Sl/RM模型的观点:数据链路层要做成无传输差错的!但这种理念目前不被接受!
-
第四章数据链路层4.1使用点对点信道的数据链路层
2020-03-30 16:08:28在网络层加上IP地址,在数据链路层加上帧头和帧尾,校验值,和mac地址。 数据链路层的三个基本问题 封装成帧 透明传输 用控制字符进行帧定界 造成的问题:当在数据部分出现和帧尾相同的码时,被接受端误以为是一...
在网络层加上IP地址,在数据链路层加上帧头和帧尾,校验值,和mac地址。
数据链路层的三个基本问题- 封装成帧
- 透明传输
用控制字符进行帧定界
造成的问题:当在数据部分出现和帧尾相同的码时,被接受端误以为是一个帧,后面的都被当做无效帧丢弃。
解决方法:
- 差错控制
数据链路层只确保接收正确数据不负责纠错,纠错在传输层实现。
需要在传输的数据上加上帧检验序列来进行差错检测,通常使用循环冗余检验(CRC)。
在原来的数上加几个0,除数是一个随机n数,位数永远比被除数加的0多1。
除的每一位之间做异或运算,最后算出一个余数,作为帧检验序列加到传输的数据后面。
接收端将守到的数据做除法来除除数,如果余数为0则没差错,反之亦然,并不接受数据。
-
数据链路层解决的三个问题
2019-04-13 13:39:10帧包含:帧头、帧尾、物理层地址、检验值 1、封装成帧 封装成帧就是在一段数据的前后分别添加首部和...发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是...1、封装成帧
封装成帧就是在一段数据的前后分别添加首部、尾部和帧检验序列 ,然后就构成了一个帧。
注:首部和尾部的一个重要作用就是帧定界。2、透明传输
发送数据帧时,加上转义字符“ESC”,以及接收数据帧时,去掉转义字符,得到真实数据,这就叫做透明传输。
- 发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是1B)。
- 接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
注意:如果转义字符“ESC”也出现在数据当中,那么应当在转义字符前插入一个转义字符。
3、差错检测
传输过程中可能会产生比特差错:1可能会变成0,0可能会变成1,为了检查传输是否正确,需要在原始数据后加上一个帧检验序列(FCS)。
循环冗余检验(CRC)是常用的帧检验算法
1)原始数据添加帧检验序列:
假设传输数据为101001,我们在该序列后加几位零,变成101001000,再除以一个四位数(序列后加0个数+1),例如1101。除法最后的余数(001)作为帧检验序列(FCS),所以最后传输序列变成101001001。
注意:除法的余数为被除数和除数做不进位加法的结果。
2)接收端校验数据:
用接收端收到的序列除以同一个除数1101,如果最后余数为0,则传输的数据正确,接收端接收;否则传输的数据出错,接收端会丢弃该数据。
如果接收到101001001,我们做计算101001001/1101(同样用不进位加法),最后余数为零,所以传输数据正确。3)循环冗余检验的特点:
- 这种检测方法并不能确定究竟是哪一个或哪几个比特出错。
- 只要经过严格的挑选,并使用位数足够多的除数P,那么出现检测不到差错的概率就很小。
-
数据链路层
2019-07-22 17:36:59数据链路层 数据链路层的主要问题 ...发送端的数据链路层在数据中出现控制字符的前面插入一个转义字符,而在接收端的数据链路层把数据送往网络层之前删除这个插入的转义字符。 差错检测 数据链...数据链路层
数据链路层的主要问题
-
封装成帧
在网络层的IP数据报前面和后面分别添加上首部和尾部,就构成了一个帧。首部和尾部的一个重要作用就是帧定界。
每一种数据链路层协议都规定了所能传送的帧的数据部分长度上限-最大传送单元MTU。
-
透明传输
发送端的数据链路层在数据中出现控制字符的前面插入一个转义字符,而在接收端的数据链路层把数据送往网络层之前删除这个插入的转义字符。
-
差错检测
数据链路层目前广泛使用循环冗余检验CRC(Cyclic Redundancy Check)的检错技术。
CRC:
在要传送的数据M(k位比特)后添加n位冗余码,然后构成一个帧发送出去,一共发送(k+n)位。
收发双方事先约定长度为(n+1)的除数P.
发送方:
- 用二进制的模二运算(加减法不进位)计算M乘以2的n次方,即在M后面添加n个0.
- 得到的(k+n)位的数除以长度为(n+1)为的除数P,得到余数R(n位)
- 余数R就作为冗余码拼接在M后面发送出去。
接收方:
- 把收到的每一帧都除以除数P(模二运算)
- 检查余数,若余数R=0,则帧无差错。
在数据链路层,发送端冗余码的生成和接收端的检验都是通过硬件完成的。
-
对于通信质量良好的有线传输链路,数据链路层不使用确认和重传机制,由上层协议完成。
-
对于通信质量较差的无线传输链路,数据链路层使用确认和重传机制。
-
-
记录一个在写数据链路层SR协议时出现的问题(水)
2020-05-12 23:20:19虽然在“datalink.h”中所给Frame的结构是seq在ack之前,但是如果这样建立frame的结构体,会出现通信期间如下图的问题 原因暂时未知 解决的办法就是将帧结构改成ack在seq之前 typedef struct { seq_nr kind;... -
数据链路层是如何实现发送端和接收端联手进行检错的_计算机网络3数据链路层...
2020-11-23 17:03:54初步了解数据链路层3.1 数据传输的三个基本问题1)封装成帧:在一段数据前后分别添加首部和尾部,构成一个帧2)透明传输:发送端的数据链路层在数据中出现控制字符“SOH”和“EOT”的前面插入转义字符“ESC”(其十六... -
云计算!数据链路层初解
2021-03-30 16:25:42数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。 PUD数据单元为帧。 2.数据链路层功能 (一)数据线路建立维护拆除-逻辑链接 ... -
数据链路层之透明传输
2019-04-25 23:36:53发送端的数据链路层,在含有开始,结束和这字符本身的二 进制编码插入“ESC”字符,才发送给接收端的数据链路层, 然后接收端的数据链路层再把对方加的字符删掉,才发给自 己的网络层 也就是说,“ESC”字符的加加... -
计网--数据链路层(1)--基本问题
2020-08-05 22:30:03数据链路层–三个基本问题 1. 封装成帧 定义 网络层的数据报交付给数据数据链路层,数据链路层需要在报文(一般是IP数据包)的前后加上首部和尾部,将报文封装,区分开来。 如果不使用首部和尾部进行帧定界,会出现... -
数据链路层传输故障分析
2019-05-26 08:49:30依据链路层发送与接收的帧格式,说明在数据链路层、网络层、传输层接收数据的过程中,出现以下情况时,可能出现的问题是什么? A) 利用网络助手可以在接收端接收到发送端发来的数据,但利用自己编写的链路层接收... -
网络2——数据链路层
2012-06-12 09:36:041、使用点对点信道的数据链路层 数据链路层协议有许多种,但有三个基本问题是共同的。这三个问题是:封装成帧,透明传输,...透明传输:发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符 -
浅析数据链路层的介质访问控制
2021-01-24 16:10:23摘 要:数据链路层为网络提供了介质访问控制的服务,介质访问控制服务解决的是当局域网(LAN)中公共信道出现信道资源竞争时,如何合理分配信道的使用权的问题。介质访问控制在实现方式上可以分为静态分配和动态分配... -
网络原理之数据链路层
2020-01-05 07:39:40数据链路层传输的是帧,有帧头和帧尾。常常在对等的两个数据链路层之间画出 一个数字管道。 三个要解决的基本问题。 封装成帧:确定帧的界限。首部和尾部重要作用就是给帧定界,MTU部分最大不能超过1500个字节。 ... -
数据链路层—三个基本问题
2015-11-24 17:47:02本文主要介绍数据链路层传输数据需要注意的最基本的三个问题 当我们需要传输数据的时候,我们应该这考虑:首先,将数据封装成帧(帧是数据链路层的基本单位),考虑去怎么封装,才能让接受端识别一个完整的帧,... -
计算机网络之数据链路层要点笔记
2020-04-06 00:22:04两种信道 点对点信道和广播信道 两种链路 ...字符填充方式:发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”,在接收端的数据链路层在把数据送往网络层之... -
网络协议 第二层 数据链路层
2020-10-31 22:56:15这几个问题,都是第二层,数据链路层,也即 MAC 层要解决的问题。MAC 的全称是 Medium Access Control,即媒体访问控制。控制什么呢?其实就是控制在往媒体上发数据的时候,谁先发、谁后发的问题。防止发生混乱。这... -
计算机网络——数据链路层、网络层
2015-11-17 11:00:51在数据链路层中,最重要的概念就是帧,数据是一帧一帧在链路中进行传输的,在这层的协议比较多,但是有三个基本问题是:封装成帧,透明传输,差错检测。 2.为了解决非ASCII码的数据进行传输可能会出现非透明传输,... -
计算机网络---数据链路层
2020-03-09 15:54:59数据链路层为什么需要数据链路层一些基本概念数据链路层功能封装成帧透明传输差错检测信道类型 为什么需要数据链路层 物理层解决了相邻结点(主机,路由器)透明传输比特的问题,物理层没有解决比特传输出现的错误的... -
计算机网络-数据链路层
2020-07-08 16:12:15数据链路层 基本概念 信道类型 点对点信道 广播信道 链路 一条点到点的物理线路段 数据链路 (网卡)除了物理线路外,还有通信协议控制数据的传输 帧 加上了帧头、帧尾、校验值、物理地址的数据包 封装成... -
网络分层之物理层和数据链路层
2020-07-14 16:36:12数据链路层 Hub采取的是广播模式,容易出现问题。为了解决这些问题,就需要数据链路层出马,也就是MAC层(媒体访问控制)。 大家都在发,会不会产生混乱?有没有谁先发、谁后发的规则? 方式一:分多个车道。每个车... -
第三章 数据链路层
2018-01-23 10:48:31链路是一个结点到相邻结点的一...发送端的数据链路层在数据中出现控制字符“SOH”或"EOT"的前面插入一个转义字符“ESC"。如果转义字符也在数据中,那再加一个。 3、差错检测 比特差错 误码率BER 循环冗余检验CRC(添 -
认识数据链路层(二)
2019-10-13 17:07:44认识数据链路层二、链路层的三个基本问题1、 封装成帧何为封装成帧用控制字符进行帧定界帧定界符的作用引入控制字符后出现的问题2、透明传输采用字节填充法实现透明传输接收端如何处理接收到的帧3、差错检测差错检测... -
计算机网络(二、数据链路层)
2020-03-03 21:45:24数据链路:由物理传输线路和控制传输的通信协议构成,现在常用网络适配器来实现(适配器一般包括数据链路层和物理层的功能)。 数据链路层的三个基本问题:封装成帧、透明传输、差错检测。 一、封装成帧 封装成帧...