数据链路层
文章目录
1. 基本概念
数据链路层属于计算机网络的低层,是五层协议中的第二层。数据链路层与物理层很相似,本质作用都是用来构建网络通信、访问通道,但它们所建立的通信通道是不一样的。
- 在物理层上构建的是物理链路,即是指在物理层设备(包括传输介质、物理接口和收发器等)和相应物理层通信规程作用下形成的物理线路,是永久存在的,且是不可删除的(除非物理拆除)
- 在数据链路层上构建的是逻辑链路/数据链路,即通信双方在需要进行数据通信时,在数据链路层设备和相应的通信规程作用下建立的逻辑链路,可以是永远存在的(如局域网中的以太网链路),也可以不是永久存在的(如广域网中的链路),是否永久存在要视具体的数据链路层服务类型而定
数据链路层的目的在于 —— 在原始的、有差错的物理传输线路的基础上,采取差错检测,差错控制和流量控制等方法,将有差错的物理线路改进成 逻辑上 的无差错的数据链路,以便向他的上一层网络层提供 高质量 的服务。请注意:高质量并不意味着可靠,数据链路层和物理层都无法向高层提供可靠服务。如何向高层提供可靠服务呢?这是我们在运输层需要解决的问题。
2. 三个基本问题
总结而言,数据链路层的目的和作用就是向网络层提供透明可靠的数据传输服务。为了达到该目的,数据链路层就要解决三个基本问题:
-
封装成帧
封装成帧就是在一段数据的前后分别添加首部和尾部,构成一个帧。此处的首部和尾部起到了一个帧定界的功能。
-
透明传输
这里的透明是指 —— 某一样实际存在的事物看起来好像不存在一样。
透明传输就是指:无论什么样的比特组合的数据,都能够按照原样没有差错地通过这个数据链路层。为了实现透明传输,可以采用字节填充 方法,在某些具有特殊含义的字符前插入转义字符。
-
差错检测
这里的错误是指比特差错等传输差错。在数据链路层中,广泛地采用了循环冗余检验(CRC)的检错技术
单凭三个基本问题仍无法确保提供高质量服务,还要采取一定的措施实现流量控制,避免造成网络拥塞甚至死锁,以及减少网络资源的浪费。流量控制机制有:
- 停止等待协议
每发送一个分组,必须要停下来等待,等接收方确认后才可继续发送下一个分组。如果没收到确认,就只能超时重传。
- 连续ARQ协议
由于停止等待ARQ协议信道利用率太低,所以需要使用连续ARQ协议来进行改善。这个协议会连续发送一组数据包,然后再等待这些数据包的ACK。
发送方采用流水线传输。流水线传输就是发送方可以连续发送多个分组,不必每发完一个分组就停下来等待对方确认。
- 滑动窗口机制
滑动窗口协议在在发送方和接收方之间各自维持一个滑动窗口,发送发是发送窗口,接收方是接收窗口,而且这个窗口是随着时间变化可以向前滑动的。它允许发送方发送多个分组而不需等待确认。
为什么必须解决三个基本问题呢?
- 封装成帧就是在一段数据前后分别添加首部和尾部。接收端以便从收到的比特流中识别帧的开始与结束,帧定界是分组交换的必然要求;
- 透明传输避免消息符号与帧定界符号相混淆;
- 差错检测防止差错的无效数据帧,浪费网络资源。
3. 协议分类
因为考虑到通信对象数量问题,所以将数据链路层协议主要分为了两类:
- 点对点协议 PPP(一对一)
- 使用了广播信道的数据链路层(一对多)
接下来对两种协议进行讲解
3.1 PPP协议
3.1.1 组成部分
PPP协议是计算机和 ISP 进行通信时所使用的数据链路层协议,其具有三个组成部分:
- 一个将IP数据报封装到串行链路的方法(物理链路都是串行传输信息)。PPP既支持异步链路(无奇偶检验的8比特数据),也支持面向比特的同步链路。
- 一个用来建立、配置和测试数据链路连接的链路控制协议LCP
- 一套网络控制协议NCP
3.1.2 PPP帧格式
PPP帧格式如下:
- 标志字段F:0x7E(01111110):表示一个帧的开始或者结束 标志字段就是PPP帧的定界符
- 地址字段A:0xFF(11111111)
- 控制字段C:0x03(00000011)
- 协议字段:
- 为0x0021时,PPP协议帧就是IP数据报
- 为0xC021时,信息字段就是PPP链路控制协议LCP的数据
- 为0x8021时表示网络层的控制信息。
- FCS:使用CRC帧检验的冗余码
PPP帧中的 标志字段F 实现了三个基本问题的中的封装成帧,FCS字段 进行了差错检测。为了保证实现透明传输,我们采用 字节填充 方法对信息部分中的和标志字段相同的字段进行处理。
3.1.3 工作状态
3.2 使用广播信道的数据链路层
广播信道可以实现一对多的通信。
3.2.1 局域网
其中,局域网使用的就是广播信道,局域网是指为一个单位所拥有,且地理范围和站点数目均有限的网络,具有以下优点:
- 具有广播功能,从一个站点可以很方便地访问全网,局域网上的主机可以共享连接在局域网上的资源
- 便于系统的扩展和逐渐演变,各设备的位置可灵活调整
- 提高了系统的可靠性(reliability)、可用性(availabiliti)、生存性(survivability)
局域网可以根据网络拓扑进行分类,大致分为以下三类:
- 星型网
- 环型网
- 总线网
将计算机与外界局域网链接起来的设备叫做 适配器,即网卡。适配器工作在物理层和数据链路层。
适配器的一些功能:
-
计算机与外界局域网的连接是通过适配器进行的
-
适配器上装有处理器和存储器,适配器的重要功能是进行数据的串并转换,由于数据率不同,还要进行缓存
-
适配器的CPU将自行判断是否收到有差错的帧,并丢弃,只有接收到正常帧时,才会以中断形式通知计算机CPU
-
适配器将收到的IP数据报上交给网络层,将从网络层获取的IP数据报组装成帧后发送到局域网
-
适配器具有过滤功能,只接收单播帧、广播帧或多播帧
3.2.2 以太网
以太网是速度较快,现应用较多的一种总线网。
最初的以太网标准有好几个,因此IEEE将数据链路层拆成了 逻辑链路控制LLC(现已成为历史) 和 媒体接入控制MAC
- 与接入到传输媒体有关的内容都放在MAC子层
- LLC子层与传输媒体无关
为了使通信简便,以太网采取了以下两种措施:
- 采取 无连接 的工作方式,即不必先建立连接就可以直接发送数据。当目的站收到差错帧时,就将帧丢弃,其他什么都不做,是否重传差错帧由高层决定。
- 以太网发送的数据都是采用 曼彻斯特编码 的信号
正是因为第一种措施的采取,数据链路层无法向高层提供可靠服务,所以只能说数据链路层向高层提供高质量的服务,而不是可靠服务!
3.2.3 CSMA/CD协议
总线上只允许一台计算机发送消息,这样可以避免碰撞,造成消息传输失败。CSMA/CD协议就是一种避免冲突以及冲突产生后的处理机制,更学术地讲,CSMA/CD协议实现的是带冲突检测的载波监听多路访问。
CSMA/CD协议的工作原理:
- 发送前先监听信道是否空闲,若空闲则立即发送数据;
- 在发送时,边发边继续监听;
- 若监听到冲突,则立即停止发送,等待一段随机时间(称为退避)以后再重新尝试
注:在使用CSMA/CD协议时,一个站不可能同时进行发送和接收,因此使用CSMA/CD协议的以太网不可能进行全双工通信。
4. MAC
4.1 MAC地址
在局域网中,硬件地址又称为物理地址或MAC地址,地址就是识别某个系统的重要标识符。用来定义网络设备的位置。
MAC集成在网卡,由48bit的16进制的数字组成,其中:
- 0 - 23位数字叫作组织唯一标志符 OUI
- 24~47位是由厂家自己分配,叫扩展标识符
- 第48位是组播地址标志位
网卡的物理地址通常是由网卡生产厂家写入网卡的EPROM芯片中,芯片中的数据可以通过程序进行擦写,它存储的是传输数据时真正赖以标识发出数据的电脑和接收数据的主机的地址。也就是说,在网络底层的物理传输过程中,数据传输是通过物理地址来识别主机的,它一定是全球唯一的。
可以在CMD中输入 ipconfig/all
查询计算机的MAC地址。
4.2 MAC帧
MAC帧格式由五个字段组成
- 前两个字段分别为6字节长的目的地址的mac地址和源地址的mac地址
- 第三个字段是2字节长的类型字段,用来标志上一层使用什么协议,0x0800表示上层使用 IP 数据报
- 第四个字段是数据字段
- 最后一个字段是4字节的帧检测序列FCS(使用CRC检验)
因为以太网采用的是曼彻斯特编码,当后面不再有信号传输的时候就认为是结束了,所以不需要再添加帧的结束标志。
IEEE802.3规定的无效MAC帧
- 帧长度不为整数字节
- FCS校验出错
- 收到的帧数据长度不在46-1500之间
5. 交换机
交换机分为二层交换机和三层交换机
- 二层交换机工作在TCP/IP对等模型的第二层,即数据链路层,它对数据包的转发是建立在MAC地址基础之上的,是直接连接用户终端的设备,离用户最近
- 三层交换机是具有三层交换设备的多端口交换机,可连接不同网络进行通信。
我们这里探讨的是二层交换机。二层交换机是集线器的升级,工作在数据链路层。它拥有一个MAC地址表,也就是说每台设备连入到交换机的时候都会被交换器“索要”自己的MAC地址,然后在内部创建一个MAC地址映射表。
交换机的工作过程:
- 当交换机从某个端口收到一个数据包,它首先读取包头中的源MAC地址,这样它就知道源MAC地址的机器是连在哪个端口上的
- 再去读取包头中的目的MAC地址,并在MAC地址表中查找相应的端口
- 如果表中有与这目的MAC地址对应的端口,则把数据包直接复制到这端口上
- 如果在表中找不到相应的端口则把数据包 广播 到所有端口上,当目的机器对源机器回应时,交换机又可以学习一目的MAC地址与哪个端口对应,在下次传送数据时就不再需要对所有端口进行广播了。这就是交换机的自学习。
理论上,只使用交换机就可以实现全球通信,但是在实际操作中是很难单凭交换机就实现全球通信。交换机的原理是将每一台计算机的MAC地址记录于自身的路由表中,接收到分组就在自身路由表中搜索对应的端口进行转发。因为计算机数量过多,路由表需要记录信息过多,每次进行信息检索都需要许多时间,导致效率低下,难以实现全球通信。
以上是数据链路层的大体内容。