「计算机网络」第三章:数据链路层
温馨提示:这篇文章已超过622天没有更新,请注意相关的内容是否还可用!
3.1 数据链路层的基本概念3.1.1 数据链路层的简单模型
数据链路层不关心物理层解决的问题,只关心帧头帧尾和校验。
3.1.1 数据链路层的信道类型
->点到点信道:这种信道使用一对一的点对点通信方式。
->广播信道:广播信道上的主机很多,需要专用的共享信道协议来协调主机的数据发送。
3.1.2 链路与数字链路
->链路(link)——是一条点到点的物理线路段,中间没有任何其他的交换节点。一条链路只是一条通路的一个组成部分。
->数据链路(data link)——除了物理线路外线路和链路的区别,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。最常用的方法是使用适配器(网卡)来实现这些协议的硬件和软件。一般的适配器都包括了数据链路层和物理层这两层的功能。
3.1.3 帧
在网络层,给数据包增加了接收端和发送端的IP地址。在数据链路层里,增加了帧头帧尾,MAC地址和校验值。
3.2 数据链路层解决的基本问题3.2.1 封装成帧(framing)
就是在一段数据的前后分别添加帧头和帧尾,构成一个帧,确定帧的界限。
但是,可能会出现以下问题,
3.2.2 透明传输
用字节填充法解决透明传输问题。发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(十六进制数1B)。
字节填充(byte stuffing)或字符填充(character stuffing)——接收端的数据链路层在数据送往网络层之前杀出插入的转义字符。
如果转义字符也出现在数据之中,那么应该在转义字符前插入一个转义字符。当接收端收到连续的两个转义字符时,就删除前面的那一个。
3.2.3 差错校验
传输过程中可能会产生bit差错:0变成1,1变成0.
在一段时间内,传输错误的比特率占所传输比特总数的比率称为误码率BER(bit error rate)。
误码率和信噪比的关系很大。
为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检验措施。
->循环冗余检验CRC:
除数必须比后面添加的0的位数多一位,可以是任意的二进制数。每一步运算其实是不进位的加法。下图的001就是FCS帧检验序列。接收端计算101001001(也就是原数据加上FCS)除以1101,如果商为0,意味着传输过程没有差错,就接受,否则丢弃。
在数据后面添加的冗余码称为帧检验序列FCS(frame check seqeunce)。CRC不是获得FCS的唯一方法。
特点:
不能确定出错的bit的是哪一位;
可能会出错,但只要经过严格的挑选,并且除数位数足够大,就可以极大减少出错概率;
CRC只能做到无差错接受(意思是传输过程没有差错,有差错的一律丢弃);
要做到可靠传输,必须加上确认和重传机制。
3.3 两种情况下的数据链路层
3.3.1 使用点对点信道的数据链路层(广域网)
(1)PPP协议(point to point protocol),是数据链路层协议,例如用户使用拨号上网。
(2)PPP协议应该满足:
简单;封装成帧;透明性;多种网络层协议;多种类型链路;差错检验;检测连接状态;最大传送单元;网络层地址协商;数据压缩协商;
(3)PPP协议不需要满足:
纠错;流量控制;序号;多点链接;半双工或单工连接。
(4)PPP协议的组层部分:
数据链路层协议可以用于异步串行或同步串行介质;
使用LCP(链路控制协议)建立并维护数据链路连接,可以实现身份验证和欠费管理;
网络控制协议(NCP)允许在点到点连接上使用多种网络层协议,如下图;
(5)PPP协议帧格式
标志字段F = 0x7E
地址字段A = 0xFF,它并不起作用
控制字段C = 0x03
PPP协议是面向字节的,所以所有的PPP帧的长度都是整数字节。
(6)字节填充(类似于透明传输)
此时,信息部分是以字节为单位的。
将信息字段中出现的每个0x7E字节转变成为2字节序列(0x7D,0x5E);
将信息字段中出现的每个0x7D字节转变成为2字节序列(0x7D,0x5D);
将信息字段中出现的每个ASCII码控制字符(小于0x20字符),在前面加入一个0x7D;
(7)0比特填充(类似于透明传输)
此时,信息部分是二进制流。PPP协议在SONET/SDH链路时,是使用同步传输。
在发送端,只要发现有5个连续的1,则填充一个0,接收端删掉对应的0。
(8)PPP协议不使用序号和确认机制的原因
在数据链路层出现错误的概率不大时,使用较简单的PPP协议较为合理;
在Internet环境下,PPP的信息字段放入的数据是IP数据报。数据链路层的可靠传输并不能保证网络层的传输也是可靠的;
帧检验序列FCS字段可以保证无差错接受。
(9)PPP协议的工作状态
当用户拨号接入ISP(网络运营商)时,陆游去的调制解调器对拨号进行确认,建立物理连接;
PC机箱路由器发送一些列的LCP(链路控制协议)分组(封装成多个PPP帧);
这些分组及其响应选择一些PPP参数,和进行网络层配置,NCP(网络控制协议)给新接入的PC机分配一个临时的IP地址,使PC机成为Internet上的一个主机;
通信完毕后,NCP释放网络层连接,收回原来分配出去的IP地址;
接着,LCP释放数据链路层连接;
最后释放的事物理层连接。
3.3.2 使用广播信道的数据链路层(局域网)
一般是总线型。
(1)局域网的拓扑
(2)共享通信媒体
静态划分信道(麻烦):
频分复用;时分复用;波分复用;码分复用;
动态媒体接入控制(多点接入):
随机接入(主要是以太网);受控接入,如多点线路探询(polling),轮询(不采用了)。
(3)认识以太网
最初的以太网是将许多计算机都连接到一根总线上,当初认为这样连接即简单又可靠,因为总线上没有有源器件。
总线上每一个主机都能检测到B发送的数据。但是只有D的地址和数据帧首部写入的地址一致,所以只有D接收。其余计算机都能检测到这不是发送给他们的数据帧,所以就丢弃这个数据帧。
这是一种具有广播特性的总线上实现了一对一通信。这种方式不安全。
(4)带冲突检测的载波监听/碰撞检测
CSMA/CD:
Carrier Sense Multiple Access with Collision Detection
多点接入:
许多计算机以多点接入的方式连接在一根总线上。
载波监听:
每一个站在发送数据之前都先要用电子技术检测一下总线时候有其它计算机在发送数据信号,如果有则不发送数据,以免发生碰撞;
(5)碰撞检测
碰撞检测就是计算机边发送数据边检测信道上信号电压的大小。
当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大;
当一个站检测到信号地哪呀摆动值超过一定的门限值时,就认为总线上至少有两个站在同时发送数据,表明产生了碰撞;
碰撞就是冲突,碰撞检测也称冲突检测。
检测到碰撞后:
在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息;
每一个正在发送数据的站,一旦发现总线上出现了碰撞,就立即停止发送,避免浪费网络资源,等待一个随机的时间后再次发送。
(6)传播时延对载波监听的影响
在2t时间内,可能存在碰撞。
(7)CSMA/CD的重要特性
使用CSMA/CD协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工);
每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能;
这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率。
(8)争用期
最先发送数据帧的站,在发送数据帧后至多经过时间2t(2倍的端到端往返时延)就可知道发送的数据帧是否发生了碰撞。
经过争用期这段时间还没有检测到碰撞,就可以肯定不会发生碰撞;
以太网的争用期:
->以太网的端到端往返时延2t称为争用期,或碰撞窗口,通常取51.2微秒为争用期的长度;如果网线过长,会导致争用期时间的延长,这也是为什么网线一般不超过100m;
->对于10Mb/s的以太网,在争用期可以发送512bit,也就是64 byte;
->以太网在发送数据的时候,若前64字节没有冲突,后续也不会发生冲突;
最短有效帧长:
->如果发生冲突,一定是前64字节;
->由于一旦发生冲突就立刻停止,所以已发送的数据一定小雨64字节;
->以太网规定了最短有效帧长为64字节,凡事小雨64字节的帧一定是因为冲突而异常终止的无效帧。
(9)二进制指数类型退避算法
发送碰撞的站在停止发送数据后,要推迟一个随机事件才能发送数据。
确定基本退避时间,一般是争用期2t;
定义参数k = min(重传次数,10);
从整数集合{0,1,…,2^k-1}中随机取出一个数,记为r线路和链路的区别,重传所需的时延就是r倍的基本退避时间;
当重传达16次时仍不能成功时就丢弃该帧,并向高层报告。
3.4 以太网
3.4.1 以太网的两个标准
DIX Ethernet V2一般是指这个。
IEEE 802.3 两个标准差别很小。
以太网 是满足DIX Ethernet V2标准的局域网。
3.4.2 以太网与数据链路层的2个子层
为了使数据链路层更好的适应多种局域网标准,802委员会把局域网拆分为:
->逻辑链路控制LLC(Logical Link Control)子层;
->媒体接入控制MAC(Medium Access Control)子层。
与接入到传输媒体有关的内容都放在MAC子层上,而LLC子层与传输媒体无关,不管什么协议的局域网对LLC子层都是透明的;
由于局域网标准一般是DIX Ethernet V2而不是IEEE 802.3,所以802.2标准的LLC子层作用已经不大了,很多厂商适配器没有LLC协议;
3.4.3 以太网提供的服务
以太网提供服务是不可靠的交付,即最大努力的交付;
当接收站收到的有差错的数据帧时就丢弃此帧,其它什么也不做,差错的纠正由高层来处理;
如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新帧发送。
3.4.4 以太网的星型拓扑结构
物理上是星型,逻辑上是总线型。
为了降低成本,最初由粗的同轴电缆变成细的同轴电缆最后变成无屏蔽双绞线。每个站需要用两对双绞线,分别用于发送和接收;
在星形的中心增加了一种可靠性高的设备,为集线器(hub)。
3.4.5 集线器的特点
集线器使用电子器件来模拟实际电缆线的工作,因此整个系统仍然是像一个传统的以太网那样运行。由于集线器使用了大规模集成电路芯片,所以可靠性更高;
使用集线器逻辑上仍然是一个总线网,各工作站使用的还是CSMA/CD协议,共享逻辑网络上的总线;
集线器像一个多接口的转发器,工作在物理层。
3.4.6 10Base-T 基于集线器的以太网标准
它的通信距离稍短,每个站到集线器的距离不超过100m。
这种10MB/s的无屏蔽双绞线星形网的出现,能降低成本和提高可靠性。
10Base-T的出现有很大的意义,类似标准有100Base-FX,10Base-T,100Base-T4.
3.4.7 信道利用率
争用期长度为2t;帧长为L bit,数据发送旅为C b/s,帧的发送时间为L/C = T0 秒。
一个帧从开始发送,经可能发生的碰撞后,将再次重传多次,直到发送成功且信道转为空闲(即再经过t使得信道上没有信号在传播)时为止,是发送一帧所需的平均时间。
定义a = t / T0,是单程端到端时延t与帧发送时间T0的比值。a越小,说明碰撞检测越快,信道利用率高。
当数据率(网速)一定时,以太网的连线长度受到限制,否则t会太长;
以太网的帧长不能太短,否则T0太小,使a太大。
3.4.8 信道利用率的最大值
假设理想状态下,以太网个展发送的数据都不会碰撞,一旦总线空闲就能有站立即发送数据,所以没有争用期;
发送一帧需要占用总线T0+t,而帧本身需要发送时间为T0,于是理想情况下极限信道利用率Smax = T0 / (T0 + t) = 1 / (1 + a).
3.5 MAC层
3.5.1 MAC层的硬件地址(MAC地址)
硬件地址 = 物理地址 = MAC地址
MAC地址前3个字节(24位)是厂家分配的地址字段,后3个字节(24位)是厂家自定义,称为扩展标识符;
一个地址块可以产生2^24个地址,这种48位地址称为MAC-48,通用名为EUI-48,这就是MAC地址;
MAC地址实际上是每一个站的名字或标识符。
3.5.2 适配器检查MAC地址
适配器从网络上每收到一个MAC帧就要用硬件检查MAC帧中的MAC地址:
->如果是发往本站的帧就收下,然后进行其它处理;
->否则丢弃。