数据链路层的基本概念以及基本问题
数据发送模型
主机通过电话网连接到路由器R1,路由器R1到达局域网路由器R2,R2连接广域网,再到达局域网中的另一台主机。
数据链路层的信道类型
分为两种类型
点对点信道:这种信道使用一对一的点到点通信方式。
广播信道:这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。
链路与数据链路
链路是一条点对点的物理线路段,中间没有任何其他的转换点。
数据链路:必须有通信协议来控制数据的传输。将这些协议加到链路上就变成了数据链路。
网卡(适配器)就是实现这些协议的硬件和软件。通常情况下,适配器都包括了数据链路层和物理层两层的功能。
传输对象
数据链路层传送的是帧
帧有开始和结尾部分。都是0101这种二进制形式。通过物理层的比特流或者光信号发给另一台计算机的数据链路层,接收方主机的数据链路层会解析发送帧的开头和结尾部分。再向上发送给网络层。
数据链路层的三个基本问题
封装成帧
封装成帧就是在一段数据的前后分别添加首部和尾部的标记,然后就构成了一个帧。确定了帧的界限。
首部和尾部最重要的作用就是进行帧定界。
帧如果未发送结束,发送端出现了问题,只能重新发送帧。接收端不会接受一半的帧(不完整的帧)。因此接受端接受的帧,开始和结束的标识符都不能缺少。
透明传输
当我们在发送的原始数据中含有开始符“SOH”或者结束符“EOT”是,如果不加额外的处理,那么系统会将原始数据中的”SOH“和“EOT”作为开始或结束符,这就引发了数据传送错误的情况。
用字节填充法解决透明传输
发送端的数据链路层在数据中出现控制字符“SOH”和“EOT”,将原始数据中这些控制字符的前面添加上“ESC”符号,这种做法被称为字节填充。而ESC字符在这里的作用就是转义字符。
如果转义字符ESC也出现在原始数据中了,那就在转义字符前面再加上一个转义字符。当接收端收到两个连续的转义字符时就删除前面一个。因为这种技术是在传输过程中填充的,所以到最后接收方会将这些转义字符去掉,因此对接收方和发送方来讲原始数据到最后没有被改变,这个过程也就是透明的了。
差错控制
传输过程中可能会出现’`比特差错’:1可能变为0,0也可能变为1.
在一段时间内,传输错误的比特占所传输比特总数的比率被称为误码率 BER
为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。
通过循环冗余检验(CRC)来进行差错检测,得到FCS(帧检验序列)
循环冗余校验的计算过程
CRC差错检测技术
仅用循环冗余校验CRC差错检测技术只能做到无差错接受。
“无差错接受”是指:“凡是接受的帧,我们都能以接近于1的概率认为这些帧 在传输过程中没有产生差错”,也就是说:“凡是接收端数据链路层接受的帧都没有传输差错(有传输差错的帧就直接丢弃了)”
要想做到可靠传输就必须加上确认和重传机制。考虑:帧重复、帧丢失、帧乱序的情况。
可以说CRC是一种无比特差错,而不是无传输差错的监测机制。
使用点对点信道的数据链路层
点对点协议PPP
通过电话线一个主机连接到局域网,网络运营商分配IP,有费用才能拨号上网。
PPP协议应该满足的要求
- 简单
- 封装成帧
- 透明性
- 多种网络层协议
- 差错检测
- 检测连接状态
- 最大传送单元
- 网络层地址协商
- 数据压缩协商
PPP协议不需要满足的要求
- 纠错
- 流量控制
- 序号
- 多点线路
- 半双工或单工链路
PPP协议的组成
PPP协议有三个组成部分
数据链路层协议可以用于异步串行或同步串行介质。
使用LCP(链路控制协议)维护数据链路层连接
网络控制协议NCP允许点到点连接使用多层网络层协议。
PPP协议的帧格式
- 帧的首部:开始标识F占1个字节,用十六进制7E表示;A占1个字节,C占一个字节,协议占2个字节。
- IP数据报也就是信息部分不超过1500个字节
- FCS占2个字节
- 帧的尾部:包含FCS(帧检验序列)和尾部标识7E占据1个字节。
PPP的协议字段有以下几种类型,表示信息部分是代表什么。
-
0x0021–PPP帧的信息字段就是IP数据报
-
0xC021–PPP帧的链路控制数据
-
0x8021–表示这是网络控制数据
-
0xC023–安全认证PAP
-
0xC025–信息字段是LQR。
-
0xC223–信息字段是安全性认证CHAP。
字节填充
如果信息字符安出现了标志字段的值,可能会被误认为是标志字段,解决方法:
- 将信息字段中出现的每个0x7E字节转变为 (0x7D,0x5E)
- 将信息字段中出现的每个0x7D字节转变为 (0x7D,0x5D)
- 若信息字段出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加上一个0x7D。同时将该字符的编码改变。
零比特填充
PPP协议用在SONET/SDH链路时,是使用同步传输一连串的比特。这时候PPP协议采用零比特填充方法来实现透明传输。
只要在发送端发现有5个连续的1,则就在5个1的后面填充一个0,接收端对比特流进行扫描,将这5个连续的1后面的一个0删除。
PPP协议之所以不使用序号和确认机制的原因
-
在数据链路层出现差错的概率不大时,使用简单的PPP协议较为合适
-
在因特网环境下PPP的信息字段放入的数据是IP数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的。
-
帧检验序列FCS字段可以保证无差错接收。
PPP协议的工作状态
当用户拨号接入ISP时,路由器对拨号进行确认,建立物理连接。主机接着向路由器发送一系列的LCP(链路控制协议)分组,这些分组选择一些PPP参数,进行网络层配置,NCP(网络控制协议)给新接入的主机分配临时的IP地址,最终通行完毕时,NPC会回收IP地址释放数据链路层连接,释放物理层连接。
使用广播信道的数据链路层
局域网的拓扑:星形网,总线网,环形网,树形网。
局域网的特点和优点
局域网特点:网络是一个单位所拥有的,且地理范围和站点数目均有限。
优点:
- 具有广播功能,从一个站点很方便的访问全网。局域网上的主机可共享连接在局域网上的各种硬件和图软件资源。
- 便于系统的扩展和逐渐的演变,各设备的位置可灵活调整和改变。
- 提高了系统的可靠性,可用性和生存性。
以太网
最初的以太网是将许多计算机都连接到一根总线上。当初认为这样的链接方法简单可靠,因为总线上没有元器件。
但是在通过一条信道链接多个主机,在同一时刻只能有一台主机发数据,另一台接受。其余的主机不能进行操作必须等到这两台操作完成后才能发收数据。
其实B向D发送数据,ACE都可以接受数据包但是因为MAC地址不匹配所以不接受。这就产生了安全隐患。
载波监听多点接入/碰撞检测(CSMA/CD协议)
以太网使用CSMA/CD协议
CSMA/CD协议表示载波监听/碰撞检测
- 多点接入:表示多台计算机以多点接入的方式连接在一根总线上。
- 载波监听:是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机再发送数据,如果有,就暂时不发送数据,以免发生冲突。
- 碰撞检测:就是计算机发送数据检测信道上的电压变大了,就代表发送数据时有冲突。
因为当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大。
当检测到的信号电压摆动值超过了一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。
所谓的碰撞就是冲突。
每一个正在发送数据的站,一旦发现了碰撞就会停止发送,等一段随机时间后再次发送。
CSMA/CD协议最重要的特点就是半双工通信,他不是全双工的。
争用期
最先发送数据帧的站,在发送数据帧后最多经过时间2τ(两倍的端到端的时延)就可以知道发送的数据帧是否发生了碰撞。这段时间被称为争用期。
经过争用期这段时间如果没有检测到碰撞,才肯定这次发送不会发生碰撞。
对于10Mb/s的以太网,在争用期内发送512bit,就是64字节。
以太网在发送数据时,如果前64直接未发生冲突,则后续的数据就不会发送冲突。
最短有效帧长
- 如果发生冲突,那就一定在发送的前64字节之内。
- 由于检测到冲突就停止发送,所以发生冲突的话,发送出的数据一定小于64字节。
二进制指数类型退避算法
- 发生碰撞后站在停止发送数据后,在一个随机时间重发数据。
- 首先基本退避时间一般就设为争用期 2τ。
- 定义参数k, k = Min[重传次数,10]
- 从整数集合[0,1,…,(2^k-1)]中随机取出一个数,作为r.
- 重传的所隔时间就是r倍的基本退却时间。
- 当重传次数等于16时,仍然不成功就丢弃该帧,并向高层报告。
以太网的信道利用率
争用期长度是2τ,端到端传播时延的两倍。帧长设为L,数据发送速率设为C(b/s),所以发送时间T0=L/C;
而一个帧,从开始发送到中间发生碰撞,重传数次,到发送成功,这是发送的平均时间。
信道利用率a = τ/T0,它是以太网,端到端时延t 与 帧的发送时间T0之比。
信道利用率趋近于0表示发生的碰撞立即可以检测出来,立即停止发送,因而利用率很高。
a越大,就代表发送过程中碰撞次数越多,花费的时间也越多,因此利用率越低。
信道利用率的最大值Smax
-
当数据发送速率一定时,以太网连线的长度受到限制,否则t的数字就会太大,a也就越大。
-
以太网的帧长不能太大,否则T0会变小,a值会变大。
什么时候信道利用率达到最大呢?
在理想条件下,各个站之间发送数据都不产生碰撞的条件下,总线一旦空闲就有某一个站立即发送数据。
发送一帧占用线路的时间是T0+t,而帧本身的发送时间是T0,于是理想条件下a的最大值为
S m a x = T 0 T 0 + t = 1 1 + a Smax = frac{T0}{T0+t} = frac{1}{1+a} Smax=T0+tT0=1+a1MAC层的硬件地址
硬件地址又称为物理地址或者MAC地址,MAC地址由48位的二进制组成,IEEE的注册管理机构RA负责向厂家分配地址字段的前24位,地址字段中的后24位直接由厂家自行设置
发往本站的帧有三种类型
-
单播帧:一对一
-
广播帧:一对多
-
多波帧:多对多
无效的MAC帧怎样判断?
帧的长度不是整数个字节;
用收到的帧检验序列FCS是否有差错;
数据字段的长度不在46~1500字节之间。
有效的MAC帧长度为64~1518字节之间
对于检测出无效的MAC帧就直接丢弃。
帧与帧之间的最小间隔是9.6微秒,香港与96比特发送的时间。这样做是为了让刚刚收到的数据帧的站的接收缓存来得及清理,做好下次接收的准备。
扩展以太网
从物理层考虑
用集线器扩展局域网的优缺点
优点:
使原来不同碰撞域的局域网上的计算机能够进行碰撞域的通信
扩大局域网的传播范围
缺点:
碰撞域增大了,但是吞吐量降低了。
如果不同的碰撞域使用不同的传送数据率,那么就不能使用集线器将他们互相连接起来。
网桥
网桥有两个接口,一个站表。具有自主学习功能,当一台主机A将数据发送到另一台设备B上时,网桥刚开始不知道目标B的MAC地址,所以直接广播发送,然后记录原MAC地址所在的接口;当B向A发送数据时,站域中因为之前存储过A的MAC地址所在的端口,因此直接发送给A不必进行广播发送。
网桥对于各个设备来说是透明的,设备之间不必关注传输的帧是否经过了网桥的转发和存储,也就是说网桥对各个站来说是不可见的。网桥是即插即用的设备,标准是IEEE802.1D。
VLAN(虚拟局域网)
LAN 是局域网的简写,交换机的出现使得虚拟局域网成为可能,虚拟局域网是由一些局域网网段构成的与物理位置无关的逻辑组。
这些网段具有某些共同的需求。
每个VLAN的帧都有一个明确的标识符,指明发送这个帧的工作站是属于哪一个VLAN。
VLAN是在LAN的基础上的划分,可以将一个局域网根据不同的需求划分成不同的VLAN,不同VLAN之间不能通信,互不影响,同一个VLAN下可以收发数据。
高速以太网
速率>=100Mb/s的以太网称为高速以太网。
在双绞线上传送100Mb/s基带信号的星形拓扑以太网,人使用IEEE802.3的CSMA/CD协议,100BASE-T以太网又称为快速以太网。
100Base-T的特点
可在全双工方式下工作而无冲突发生。因此,不使用CSMA/CD 协议。MAC帧格式仍然是802.3标准规定的。
吉比特以太网
允许在1Gb/s下全双工和半双工两种方式工作。使用802.3协议规定的帧格式。
在半双工方式下使用CSMA/CD协议,全双工方式不需要使用CSMA/CD协议。不需要使用载波延伸和分组突发。与10BASE-T和100BASE-T技术向后兼容。
能通信,互不影响,同一个VLAN下可以收发数据。
高速以太网
速率>=100Mb/s的以太网称为高速以太网。
在双绞线上传送100Mb/s基带信号的星形拓扑以太网,人使用IEEE802.3的CSMA/CD协议,100BASE-T以太网又称为快速以太网。
100Base-T的特点
可在全双工方式下工作而无冲突发生。因此,不使用CSMA/CD 协议。MAC帧格式仍然是802.3标准规定的。
吉比特以太网
允许在1Gb/s下全双工和半双工两种方式工作。使用802.3协议规定的帧格式。
在半双工方式下使用CSMA/CD协议,全双工方式不需要使用CSMA/CD协议。不需要使用载波延伸和分组突发。与10BASE-T和100BASE-T技术向后兼容。