链路:从一个节点到相邻节点的一段物理线路
数据链路:将实现通信协议的硬件和软件加到链路上就构成了数据链路
三个基本问题
封装成帧
将网络层传输下来的分组添加首部和尾部就组成了帧,首部和尾部的作用是用来帧定界
透明传输
透明:某一个实际存在的事物看起来却好像不存在
透明传输意思就是对于数据来说,通过链路层的时候是没有任何改变的,数据感知不到链路层的存在。如果帧的数据部分含有帧界定的首部和尾部相同的部分,那么开始和结束位置就会被错误判定,为了解决这个问题,发送端的数据链路层通过插入转义字符的方式,接收端删除转义字符来还原原始数据,保证透明传输
差错检测
目前数据链路层广泛使用了循环冗余检测(CRC)的检错技术。
若在数据链路层仅仅使用CRC,则只能做到对帧的无差错接受(比特差),不能保证其是一个可靠传输
点对点协议PPP
互联网用户通常需要连接到某个 ISP 之后才能接入到互联网,PPP 协议是用户计算机和 ISP 进行通信时所使用的数据链路层协议
特点
满足的需求
简单、封装成帧、透明性、多种网络协议、多种类型链路、差错检测、检测连接状态、最大传送单元、网络层地址协商、数据压缩协商
组成
PPP协议一共三个组成部分
- 一个将IP数据报(分组)封装到串行链路的方法
- 一个用来建立、配置和测试数据链路连接的链路控制协议LCP
- 一套网络控制协议NCP
帧格式
各字段的意义
- 首部的第一个字段和尾部的第二个字段都是标志字段F(0x7E)作为PPP帧的定界符
- 首部中的地址字段A(0xFF)、C(0x03)至今没有意义
- 首部的第四个字段是两字节的协议字段,当其为0x0021时信息字段(数据字段)就是IP数据数据报,为0xC021时为LCP协议的数据,为0x8021表示这是网络层的控制数据
- 信息字段的长度可变,最多不超过1500字节
- 尾部中的第一个字段时是使用CRC的帧检验序列FCS
字节填充和零比特填充
当PPP使用异步传输时,它把转义字符定位0x7D并使用字节填充
PPP协议用在SONET/SDH链路时,使用同步传输并采用零比特填充实现透明传输,具体做法为:只要扫描信息时发现有5个连续的1,则立即填入一个0,这样保证了帧界定不会出错,并且在接受端删除第六个1保证了数据的透明传输
PPP协议的工作状态
上图为PPP协议的状态图,整个工作流程如下:
- 当个人电脑与路由器建立物理层连接时,PPP进入链路建立状态,目的为建立链路层LCP连接
- 发送LCP的配置请求帧,另一段发送响应帧(配置确认帧、配置否认帧、配置拒绝帧),LCP配置选项包括链路上的最大帧长、所使用的鉴别协议
- 协商完成后进入鉴别状态,可使用口令鉴别协议PAP或口令握手鉴别协议CHAP。若鉴别失败则进入链路终止状态,鉴别成功则进入网络层协议状态
- 在网络层协议状态,PPP链路的NCP协议根据网络层协议交换网络控制分组
- 网络层配置完毕后,近路链路打开状态,两个PPP断点可以彼此发送分组,还可以发送回送请求和回送回答LCP分组
- 传输结束后,一端可以发送终止请求LCP分组,当收到对方发来的终止确认LCP分组后,进入链路终止状态,当调制解调器停止后进入链路静止状态
使用广播信道的数据链路层
局域网的数据链路层
局域网是一种典型的广播信道,主要特点是网络为一个单位所拥有,且地理范围和站点数目均有限。
主要有以太网、令牌环网、FDDI 和 ATM 等局域网技术,目前以太网占领着有线局域网市场。
可以按照网络拓扑结构对局域网进行分类:
共享信道的两种技术方法:
- 静态划分信道:之前提到的各种复用技术,但代价过高不适合局域网
动态媒体接入控制
- 随机接入:可能会发生碰撞,必须有解决碰撞的网络协议
- 受控接入:轮询
CSMA/CD协议
广播通信方式:当一台计算机发送数据时,总线上所有计算机都能检测到这个数据
CSMA/CD 表示载波监听多点接入 / 碰撞检测,就是广播通信方式的一种协议,其要点如下:
多点接入
说明这是总线型网络,许多计算机以多点接入的方式连接到总线上
载波监听
不管在发送数据之前,还是在发送数据之中,每个站都必须不停地检测信道,发送之前检测是为了避免冲突,在发送之中如果发生碰撞就中断发射,这个就是碰撞检测
碰撞检测
在发送中,如果监听到信道已有其它主机正在发送数据,就表示发生了碰撞。虽然每个主机在发送数据之前都已经监听到信道为空闲,但是由于电磁波的传播时延的存在,还是有可能会发生碰撞
记端到端的传播时延为 τ,最先发送的站点最多经过 2τ 就可以知道是否发生了碰撞,称 2τ 为 争用期 。只有经过争用期之后还没有检测到碰撞,才能肯定这次发送不会发生碰撞
当发生碰撞时,站点要停止发送,等待一段时间再发送。这个时间采用 截断二进制指数退避算法 来确定。从离散的整数集合 {0, 1, .., (2k-1)} 中随机取出一个数,记作 r,然后取 r 倍的争用期作为重传等待时间
由此可见,在使用CSMA/CD协议时,一个站不可能同时进行发送和接受(但必须同时监听信道),因此使用此协议的以太网只能进行双向交替通信(半双工通信)
使用集线器的星形拓扑
以太网就是一种星形拓扑拓扑结构,并且在早期使用集线器连接
集线器的特点如下:
- 使用集线器的以太网在逻辑上仍然是一个总线网
- 集线器更像是一个多端口的转发器
- 集线器工作在物理层,每个端口只是进行简单的转发而不进行碰撞检测
以太网
信道利用率
假设发送时间为T0,那么成功发送一个帧需要占用信道的时间就是T0 + τ,那么信道的极限利用率就是:
MAC层
在局域网中,硬件地址被称为物理地址或MAC地址,这个地址用于唯一标识网络适配器(网卡),每一个网络适配器就拥有一个唯一的MAC地址
在数据链路层拓展
目前以太网使用交换机替代了集线器,下面是交换机的特点:
- 全双工工作方式
- 独占传输媒体,无碰撞传输数据
- 通过自学习方法,学习交换表(表中存储MAC地址到接口的映射),并且通过这种自学习能力实现了即插即用,不需要手动配置
下图中,交换机有 4 个接口,主机 A 向主机 B 发送数据帧时,交换机把主机 A 到接口 1 的映射写入交换表中。为了发送数据帧到 B,先查交换表,此时没有主机 B 的表项,那么主机 A 就发送广播帧,主机 C 和主机 D 会丢弃该帧,主机 B 回应该帧向主机 A 发送数据包时,交换机查找交换表得到主机 A 映射的接口为 1,就发送数据帧到接口 1,同时交换机添加主机 B 到接口 2 的映射。
虚拟局域网
虚拟局域网(VLAN)其实质是局域网给用户提供的一种服务而不是一种新型局域网
它通过建立与物理位置无关的逻辑组,只有在同一个虚拟局域网中的成员才会收到链路层广播信息,从而缩小广播范围提高安全性
例如下图中 (A1, A2, A3, A4) 属于一个虚拟局域网,A1 发送的广播会被 A2、A3、A4 收到,而其它站点收不到。
使用 VLAN 干线连接来建立虚拟局域网,每台交换机上的一个特殊接口被设置为干线接口,以互连 VLAN 交换机。IEEE 定义了一种扩展的以太网帧格式 802.1Q,它在标准以太网帧上加进了 4 字节首部 VLAN 标签,用于表示该帧属于哪一个虚拟局域网