数据链路层
- 使用的信道主要两种:
- 点对点信道
- 广播信道—— 一对多
包含的内容
- 点对点/广播- 特点,所用协议的特点
- 三个基本问题:封装成帧、透明传输、差错检测
- 以太网MAC层的硬件地址
- 适配器 转发器 集线器 网桥 以太网交换机 的作用 使用场合
点对点信道
-
数据链路
在一条线路上传送数据,一条物理线路是必要的,还要 通信协议——来控制数据的传输。实现这些协议的软硬件加到链路上,构成数据链路。
常用网络适配器来实现协议 -
帧
帧是协议数据单元
帧:帧头 帧尾 物理层地址 校验值 -
数据链路层在进行通信主要步骤
(1)结点A的数据链路层把网络层给的IP数据报 添加 首部、尾部 封装成帧
(2)A把封装好的帧发给B
(3)如果B收到的帧无差错,则提取出IP数据报给上面的网络层;否则丢弃
三个基本问题
1.封装成帧
- 在一段数据前后分别添加首部、尾部,构成一个帧
- 接收端收到 比特流后——根据首部、尾部标记——识别帧的开始、结束
2.透明传输
- 是指不管所传数据是什么样的比特组合,都能按照原样没有差错的通过这个数据链路层。帧中有首部和尾部,如果帧的数据部分含有和首部尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。当所传数据中的比特组合恰巧与某一个控制信息完全一样时(即出现帧定界错误时),就必须采取适当措施,使接收方不会将这样的数据误认为是某种控制信息。
- 为解决透明传输问题,得尽量使出现的 SOH EOT 在接收端不被解释为控制字符:
在发送端数据中出现 SOH EOT 前面插入一个 转义字符 “ESC” ,(1B/00011011)。在接收端删除ESC——称为字节填充。
若ESC出现在数据中,方法就是在ESC前再插入一个ESC,接收端收到这样的连续两个ESC,删除一个就行了。 - 这个过程透明传输的内容是转义字符,用户察觉不到转义字符的存在。
- 就变成了: ESC SOH 数据 ESC EOT
3.差错检测
- 使用循环冗余检验CRC——检错技术
原理
-
1.在发送端把数据划分为组,每组k比特。
在数据M后添加供差错检测的n位冗余码,构成一个帧(k+n)位发送出去。 -
2.用二进制的模2运算(异或,相同为0,不同为1。加法时不进位)。
事先商定好长度为(n+1)位的除数P,在M后添加n个0后除以P得到余数R(n位)。余数R作为冗余码接在M后发送出去。 -
帧检验序列:FCS,在数据后面添加的冗余码
-
3.接收端把收到的帧除以同样的除数P,得到余数R。
若余数R=0,判定此帧没有差错,接受。
若余数R≠0,判定此帧有差错(无法确定哪一位或哪几位出差错),丢弃。 -
步骤:
分组——每组k比特——加n位冗余码——k+n位
模2运算——n+1位 除数p——每组后加n个0,除以p——得余数R——R加在M后面
收到——除以除数P——得到余数R——为0——可以——不为0——有错——丢弃
仅采用CRC校验不能使数据链路层变成可靠传输。因为CRC校验只能做到对帧的无错接受,但不能保证帧没有丢失、重复或失序。
PPP协议
- 是用户计算机和ISP进行通信时所使用的数据链路层协议——ISP即互联网服务提供商
特点
1、简单:接收那边,每收到一个帧,就CRC检验;正确,接收;错误,丢弃就vans了嗷,无后续操作。
2、封装成帧:规定特殊字符作为帧定界符,使接收端能从比特流中找出帧开始、结束位置
3、透明性:见“透明传输”,要有措施能解决与帧定界符雷同的情况的方法
4、多种网络层协议:得能在同一条物理链路上同时支持多种网络层协议(IP、IPX)
5、多种类型链路:能在多种类型链路上运行
6、差错检测
7、检测连接状态:及时(<几分钟)自动检测链路是否处于正常工作状态
8、最大传送单元
9、网络层地址协商
10、数据压缩协商
PPP协议不需满足的要求:
1、纠错
2、流量控制
3、序号
4、多点线路
5、半双工或单工链路
PPP组成
- PPP协议有三个组成部分:
1、一个将IP数据报封装到串行链路的方法:PPP支持异步或同步链路
2、一个用来建立、配置 测试数据链路连接的链路控制协议—LCP,LCP建议并维护数据链路连接,身份验证、计费功能,只有这层通了,网络层才能通信。
3、一套网络控制协议NCP,其中每个协议支持不同的网络层协议(一套,多个的意思)
帧格式
1、各字段的意义
PPP帧的首部
- 首部中的标志字段F(Flag),规定为0x7E,标志字段表示一个帧的开始。(符号0x表示它后面的字符是用十六进制表示的。十六进制的7E的二进制表示是01111110)
- 首部中的地址字段A规定为0xFF(即11111111)。
- 首部中的控制字段C规定为0x03(即00000011)。
- 首部中的2字节的协议字段:
(1)当协议字段为0x0021时,PPP帧的信息字段就是IP数据报。
(2)当协议字段为0xC021时,PPP帧的信息字段就是PPP链路控制协议LCP的数据。
(3)当协议字段为0x8021时,PPP帧的信息字段就是网络层的控制数据。
PPP帧的信息字段部分
信息字段的长度是可变的,不超过1500字节。
PPP帧的尾部
- 尾部中的第一个字段(2个字节)是使用CRC的帧检验序列FCS。
- 尾部中的标志字段F(Flag),规定为0x7E,标志字段表示一个帧的结束。(符号0x表示它后面的字符是用十六进制表示的。十六进制的7E的二进制表示是01111110)
注:标志字段就是PPP帧的定界符。连续两帧之间只需要用一个标志字段。如果连续出现两个标志字段,就表示这是一个空帧,应当丢弃。
2、字节填充 —— PPP使用异步传输
- 当PPP使用异步传输(逐个字符的传送)时,它把转义符定义为0x7D,并使用字节填充。
- RFC1662规定了如下填充方法:
(1)把信息字段中出现的每一个0x7E字节转变为2字节序列(0x7D,0x5E)。
(2)若信息字段中出现一个0x7D的字节(即出现了和转义字符一样的比特组合),则把转义字符0x7D转变为2字节序列(0x7D,0x5D)。
(3)若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如,出现0x03(在控制字符中是“传输结束”ETX)就要把它转变为2字节序列的(0x7D,0x31)。 - 由于在发送端进行了字节填充,因此在链路上传送的信息字节数就超过了原来的信息字节数。但接收端在接收到数据后再进行与发送端字节填充相反的变换,就可以正确地恢复出原来的信息。
3、零比特填充——PPP使用同步传输
- 当PPP使用同步传输(一连串的比特连续传送)时,使用零比特填充实现透明传输。
- 零比特填充的具体方法:
(1)在发送端先扫描整个信息字段(通常使用硬件实现,但也可以用软件实现,但是会慢一些)。
(2)只要发现有5个连续的1,则立即填入一个0。
(3)接收端在收到一个帧时,先找到标志字段F以确定帧的边界,接着再用硬件对其中的比特流进行扫描,每当发现5个连续1时,就把5个连续1后的一个0删除,以还原成原来的信息比特流。
- 因此通过这种零比特填充后的数据,就可以保证在信息字段中不会出现连续6个1。
工作状态
- 右侧箭头说明,PPP协议涉及物理层、网络层
- PPP链路初始化过程:
- 用户拨号进入ISP,建立了物理连接:用户到ISP;用户向ISP发送LCP分组(封装成多个PPP帧),以便建立 LCP连接 。再 配置网络层 ,NCP给新用户 分配 临时 IP地址 。这样,用户电脑成为互联网上的一个有IP地址的主机了。
- 当用户通信完了,NCP释放网络层的连接,回收IP地址;然后LCP释放数据链路层连接;最后释放物理层的连接。
总结
- 链路静止-建立物理层-链路建立-pc发LCP-NCP分配IP地址-链路打开,网络层建立。(释放时倒过来)
详解
-
起始、终止状态都是 “链路静止” 状态,用户电脑与ISP路由器之间没有物理层的连接
-
用户通过调制解调器呼叫路由器(如鼠标点击连接按钮),路由器检测到这个载波信号。双方建立物理层连接后,PPP进入 “链路连接” 状态, 目的 是 建立链路层LCP连接
-
LCP就协商配置,就是发送LCP的配置请求帧,是个PPP帧;链路另一端可发这几种响应之一:
1)配置确认帧——接受所有选项
2)配置否认帧——理解但不接受所有选项
3)配置拒绝帧——有的选项无法识别/无法接受,要协商 -
协商结束后,就建立了LCP链路,进入了 “鉴别” 状态;开始去鉴别身份:失败—— “链路终止” ;成功—— “网络层协议”
-
在 “网络层协议” 状态:PPP两端的网络层可运行不同的网络层协议,但又仍然可以用同一个PPP进行通信
-
配置完成后,进入可进行 数据通信 的 “链路打开” 状态:两端可以向对方发送分组,还有回送请求LCP分组、回送回答LCP分组,来 检查链路的状态
-
数据传输结束,由一端发出 终止请求 LCP分组请求终止链路连接,收到终止确认 LCP分组后,转到 “链路终止” 状态。
若有故障,也会从“链路打开”转到“链路终止”。 -
当调制解调器载波停止后,回到 “链路静止” 状态