数据链路层基本概念
数据链路层的简单模型
image.pngimage.png
数据链路层的信道类型
- 数据链路层使用的信道主要有以下俩种类型:
1、点对点信道:这种信道使用一对一的点对点通信方式
2、广播信道:这种信道使用一对多的广播通信方式,因此过程比较复杂,广播信道连接的主机很多,因此必须使用专用的共享信道协议协调这些主机的数据发送
链路与数据链路
- 链路:是一条点对点的物理线路段,中间没有任何其他的交换节点
一条链路只是一条通路的一个组成部分 - 数据链路:除了数据链路外,还必须有通信协议来控制这些数据的传输,若把实现这些协议的硬件和软件加到链路上,就构成了数据链路
**1、现最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件
2、一般的适配器都包括了数据链路层和物理层这俩层的功能
帧
-
数据链路层传送的是帧
image.png
数据链路层要解决的三个基本问题
1、封装成帧
- 封装成帧就是在一段数据的前后分别添加首部和尾部,然后构成了一个帧,确定了帧的界限
-
首部和尾部的一个重要作用就是进行帧定界
计算机A到计算机B有一根网线,计算机A会发送很多数据包到计算机B,如果这些数据包没有开头和结尾标志,计算机B接收就会发生混乱
image.png
2、透明传输(用字节填充法解决透明传输的问题)
- 发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是1B)
- 字节填充或字符填充——接收端的数据链路层在将数据送往网络层之前删除插入的转移字符
-
如果转义字符也出现数据当中,那么应在转移字符前插入一个转义字符,当接收端收到连续俩个转义字符时,就删除其中前面的一个
image.png
3、差错检测
- 传输过程中可能会产生比特差错:1变成0,而0也会变成1,在一段时间内,传输错误得比特占所传输比特总数的比率称为误码率BER
- 误码率与信噪比有很大的关系
- 为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施
- 数据链路层只能保证不出错,不能纠错,数据链路层只能保证无差错的接收,可靠性传输有错要求重发是传输层的事
循环冗余检验的计算过程
image.png帧检验序列FCS
- 在数据后面加上的冗余码称为帧检验序列FCS,循环冗余检验CRC和帧检验序列FCS并不等同
1、CRC是一种常用的检错方法,而FCS是添加在数据后面的冗余码
2、FCS可以用CRC这种方法得出,但CRC并非用来获得FCS的唯一方法
接收端对收到的每一帧进行CRC检验
- 检验:
1、若得出的余数R=0,则判定这个帧没有差错,就接受
2、若余数R不等于0,则判定这个帧有差错,就丢弃 - 特点:
1、但这种检测方法并不能确定究竟是哪一个或哪几个比特出现了差错
2、只要经过严格的筛选,并使用位数足够多的除数P,那么出现检测不到的差错的概率就很小很小
点到点通信数据链路层协议PPP(大部分为广域网之间)
-
大家用ADSL拨号上网,家里的猫到电信设备中间只有一根线连接,这就是点到点通信,它们之间使用的协议就是ppp协议,这是点到点之间的协议,ppp协议是数据链路层协议
image.png - 现在全世界使用的最多的数据链路层协议是点对点(Point-to-Point)
- 用户使用拨号电话线接入因特网时,一般都是使用ppp协议
PPP协议应该满足的要求
1、简单--这是首要的要求
2、封装成帧
3、透明性
4、多种网络层协议
5、多种类型链路
6、差错检测
7、检测连接状态
8、最大传送单元
9、网络层地址协商
10、数据压缩协商
PPP协议不需要满足的要求
1、纠错
2、流量控制
3、序号
4、多点线路
5、半双工或者单工链路
PPP协议的组成
- 1992年制订了ppp协议,经过了1993年和1994年的修订,现在的ppp协议已成为因特网的正式标准(所有设备都可以使用,不是厂家专有的协议)
-
PPP协议有三个组成部分
1、数据链路层协议可以用于异步串行或同步串行介质
2、他使用LCP(链路控制协议)建立并维护数据链路连接
3、网络控制协议(NCP)允许在点到点连接上使用多种网络层协议,如图所示
image.png
PPP协议的帧格式
image.png- 标志字段F = 0x7E(符号0x表示后面的字符是用十六进制表示,十六进制的7E的二进制表示是01111110)
- 地址字段A只置为0xFF,地址字段实际上并不起作用
- 控制字段c通常置为0x03
- ppp是面向字节的,所有得ppp帧的长度都是整数字节
字节填充
- 问:
信息字段中出现了标志性的值,可能会被误认为是“标志”,怎么办? -
答:
1、将信息字段中出现的每个0x7E字节转变成为2字节序列(0x7D,0x5E)
2、若信息字段中出现0x7D的子节,则将其转变为2字节的序列(0x7D,0x5E)
3、若信息字段中出现ASCLL码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变
image.png
零比特填充方法
- ppp协议用在SONET/SDH链路时,是使用同步传输(一连串的比特连续传送),这是ppp协议采用零比特填充方法来实现透明传输
- 在发送端,只要发现有5个连续的1,则立即填入一个0,接收端对帧中的比特流进行扫描,每当发现5个连续的1时,就把这5个连续1后的一个0删除
不适用序号和 确认机制
- ppp协议之所以不使用序号和确认机制是出于以下的考虑:
1、在数据链路层出现差错的概率不大时,使用比较简单的ppp协议较为合理
2、在因特网环境下,ppp的信息字段放入的数据是ip数据报,数据链路层的可靠传输并不能保证网络层的传输也是可靠的
3、帧检验序列FCS字段可保证无差错接收
PPP协议的工作状态
image.png广播信道的数据链路层(大部分为局域网之间)
局域网的拓扑
image.png局域网的特点与优点
- 局域网最主要的特点是:网络为一个单位所拥有,且地理范围和站点数目均有限
- 局域网具有以下一些优点:
1、具有广播功能,从一个站点可很方便的访问全网,局域网上的主机可共享连接在局域网上的各种硬件和软件资源
2、便于系统的扩展和逐渐地演变,各设备的位置可灵活的调整和改变
3、提高了系统的可靠性、可用性、生存性
共享通信媒体
- 就是一堆计算机共享线路的话,如何实现这种通讯
静态划分信道 - 频分复用
- 时分复用
- 波分复用
- 码分复用
动态媒体接入控制 - 随机接入(主要被以太网采用)
- 受控接入,如多点线路探寻或轮询(目前不被采用)
认识以太网
image.png- 总线上的每一个工作的计算机都能检测到B发送的数据信号,由于只有计算机D的地址与数据帧首部写入的地址一致,因此只有D才接收这个数据帧
- 其他所有的计算机都检测到不是给他们的数据帧,因此就丢弃这个数据帧而不能够收下来
- 具有广播特性的总线上实现了一对一的通信
载波接听多点接入/ 碰撞检测,以太网使用CSMA/CD协议
- “多点接入”表示许多计算机以多点接入的方式连接在一根总线上
- “载波监听”是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞
- “载波监听”就是用电子技术检测总线上有没有其他计算机发送的数据信号
碰撞检测
- “碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小
1、当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)
2、当一个站检测到的信号电压摆动值超过了一定的门限值时,就认为总线上至少有俩个站在同时发送数据,表明产生了碰撞
3、所谓“碰撞”,就是发生了冲突,因此“碰撞检测”也称为“冲突检测” -
检测到碰撞后
1、在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来
2、每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立刻停止发送免得继续浪费资源,然后等待一段随机时间后再次发送
image.png
传播时延对载波侦听的影响
什么是以太网
- DIX Ethernet V2 是世界上第一个局域网产品(以太网)的规约
- IEEE的802.3标准:DIX Ethernet V2标准与IEEE的802.3标准只有很小的差别,因此可以将802.3局域网简称为“以太网”
- 严格来说,“以太网”应当是指符合DIX Ethernet V2标准的局域网(只要满足载带冲突检测的波侦听多路访问技术(CSMA/CD)的都算是以太网)
以太网与数据链路层的俩个子层
- 为了使数据链路层能更好的适应多种局域网标准,802委员会就将局域网的数据链路层拆成俩个子层:
1、逻辑链路控制LLC子层
2、媒体接入控制MAC 子层 - 与接入到传输媒体有关的内容都放在MAC子层,而LLC子层则与传输媒体无关,不管采用何种协议的局域网对LLC子层都是透明的
- 由于TCP/IP体系经常使用的局域网是DIX Ethernet V2而不是802.3标准中的几种局域网,因此现在802委员会制定的逻辑链路子层LLC的作用已经不大了
- 很多厂商生产的适配器上就仅装有MAC协议而没有LLC协议
以太网提供的服务
- 以太网提供的服务是不可靠的交付,即尽最大努力的交付
- 当接收站收到有差错的数据帧时就丢弃此帧,其他什么也不做,差错的纠正由高层来决定
- 如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新的数据帧来发送
以太网的拓扑(星型拓扑)
- 传统以太网最初是使用粗同轴电缆,后来 演进到细同轴电缆,最后发展为使用更便宜更灵活的双绞线,不用电缆而使用无屏蔽双绞线,每个站需要用俩对双绞线,分别用于发送和接收
-
这种以太网采用星型拓扑,在星型的中心则增加了一种可靠性非常高的设备,叫做集线器
image.png
集线器的一些特点
- 集线器是使用电子器件来模拟实际电缆的工作,因此整个系统仍然像一个传统的以太网那样运行,集线器使用了大规模的集成电路芯片,因此这样的硬件设备的可靠性已经大大提高了
- 使用集线器的以太网在逻辑上仍是一个总线网,各工作站使用的还是CSMA/CD协议,并共享逻辑上的总线
-
集线器很像一个多接口的转发器,工作在物理层
image.png
10Base-T
- 国际互联网组织把这个用集线器连接的以太网规定了一个标准10Base-T(一般都是基带信号,就是数字信号)
- 10Base-T的通信距离稍短,每个站到集线器的距离不超过100m,这种10Mb/s速率的无屏蔽双绞线星型网的出现,即降低了成本,又提高了可靠性
- 10Base-T双绞线以太网的出现,是局域网发展史上的一个非常重要的里程碑,它为以太网在局域网中的统治地位奠定了牢固的基础
以太网的信道利用率
-
一个帧从开始发送,经可能发生的碰撞后,将再重传数次,到发送成功且信道转为空闲(即再经过时间t使得信道上无信号在传播)时为止,是发送一帧所需的平均时间
image.png
image.png
image.png
以太网帧格式
MAC层的硬件地址(MAC地址)
- 在局域网中,硬件地址又称为物理地址或mac地址
- 802标准所说的'地址'严格来说应当是每一站的”名字“或标识符
- 但鉴于大家都已经习惯了将这种48位的"名字"称为地址,所以沿用这种不规格的说法
1、IEEE的注册管理机构RA负责向厂家分配地址字段的前三个字节(即高位24位)
2、地址字段中的后三个字节(即地位24位)由厂家自行分配,称为扩展标识符,必须保证生产出的适配器没有重复地址
3、一个地址快可以生成2的24次方个不同的地址,这种48位地址称为MAC-48,它的通用名称是EUI-48
4、“MAC地址”实际上就是适配器地址或适配器标识符EUI-48
适配器检查MAC地址
- 适配器从网络上每收到一个MAC帧就首先用硬件检查MAC帧中的MAC地址
1、如果是发往本站的帧则收下,然后再进行其他的处理
2、否则就将此帧丢弃,不在进行其他的处理 - 发往本站的帧包括以下三种帧:
1、单播(一对一)
2、广播(一对全体)
3、多播(一对多)
MAC帧格式
-
常用的以太网MAC帧格式有俩种标准:
1、DIX Ethernet V2标准
2、IEEE的802.3标准
最常用的MAC帧是以太网v2格式
image.png
无效的MAC帧
- 帧的长度不是整数个字节
- 用收到的帧检验序列FCS查出有差错
- 数据字段的长度不在46~1500字节之间
- 有效的MAC帧 长度为64~1518字节之间
对于检查出的无效帧MAC帧就简单的丢弃,以太网不负责重传丢弃的帧
扩展以太网
距离扩展 100M 光纤
在物理层考虑扩展
例:某大学有三个系,各自有一个局域网
image.png
image.png
- 用集线器扩展局域网优点
1、使原来属于不同局域网上的计算机能够进行跨碰撞域的通信
2、扩大了局域网覆盖的地理范围 - 用集线器扩展局域网缺点
1、碰撞域增大了,但总的吞吐量并未提高
2、如果不同的碰撞域使用不同的数据率,那么就不能用集线器将它们互连起来
在数据链路层考虑扩展
- 在数据链路层扩展局域网是使用网桥
- 网桥工作在数据链路层,它根据MAC帧的目的地址对收到的帧进行转发
-
网桥具有过滤帧的功能,当网桥收到一个帧时,并不是向所有得接口转发此帧,而是先检查此帧的目的mac地址,然后再确定将帧转发到哪一个接口
image.png
如上图所示:
在俩个集线器之间接入一个网桥,网桥的作用就是学习并记录MAC地址,例,当ma要像mb发送数据,ma会将数据发给所有设备,包括网桥,网桥这时候也不知道mb是接口哪侧的,所以就发给了接口右侧,并且记录并保存了ma的mac地址,知道ma是接口左侧的,当有左侧有数据发给ma时,网桥不会再将数据转到右侧了,因为他知道ma是左侧的,以此类推,网桥会知道所有计算机的mac地址并连通俩个集线器,使冲突变小,效率变高
image.png
如上图所示:
当网桥的口有很多时,它的接口将不会再连集线器,会直接连计算机
image.png
如上图所示:
此时的网桥就不叫做网桥了,叫做交换机,具有和网桥相同的功能,使计算机通信变成了一对一,并且交换机是有缓从的,先过来的数据先存,存了再发,就不存在冲突了,能够实现全双工通信
优化以太网
- 优化以太网,网桥设备,交换机,端口带宽独享,安全,基于MAC地址转发,通过学习构建MAC地址表
小结:自学习与帧转发
- 网桥收到一帧后先进行自学习,查找转发表中与收到帧的原地址有无相匹配的项目,如没有,就在转发表中增加一个项目(原地址,进入的接口和时间),如有,则把原有的项目进行更新
- 转发帧,查找转发表中与收到帧的目的地址有无相匹配的项目
1、如没有,则通过 所有其他接口,(但进入网桥的接口除外)按进行转发
2、如有,则按转发表中给出的接口进行转发
3、若转发表中给出的接口就是该帧进入网桥的接口,则应丢弃这个帧(因为这时不需要经过网桥进行转发)
网友评论