数据链路层
一、数据链路层的基本概念
1、链路(link)是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。
- 一条链路只是一条通路的一个组成部分。
2、数据链路(data link) 除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
- 现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。
- 一般的适配器都包括了数据链路层和物理层这两层的功能。
注:数据链路层传输的是帧
二、链路层环境
1、链路层协议
- 任务:通过单段链路,点到点传送上层数据报
- 定义了链路两端结点间交互的帧格式,以及发送和接收帧时的操作
2、两种网络链路类型
- 点对点链路:由链路一端的单个发送结点和链路另一端的单个接收结点组成。这种链路使用一对一的点对点通信方式。
- 广播链路:能够让多个发送结点和接收结点都连接到单一的,共享的广播信道上。这种链路使用一对多的广播通信方式。因广播链路上连接的主机很多,必须使用专用的共享链路协议来协调这些主机的数据发送。
3、链路层环境重要特点
- 一条路径上的不同链路可运行不同的链路层协议
- 链路层协议提供的服务可以不同
- 通信环境较为简单
三、链路层协议的设计问题
1.成帧
将数据报封装进帧,加上首部和尾部,帧定界问题
2.媒体访问
规定了结点在链路上传输帧的规则
如何共享媒体,如何访问信道?
用媒体访问控制(MAC)协议协调结点之间的帧传输
3.相连结点间的可靠交付
- 是网络中基础性问题(无差错的传输每个帧)
- 在比特差错低的链路很少使用 (光纤,双绞线)
- 无线链路: 高差错率则需要
4.流量控制
相邻发送和接收结点间的步调协调(防止接收结点缓冲区溢出)
5.差错检测
- 差错由信号衰减、噪声所致
- 接收方检测出差错,将帧丢弃
- 发送方负责重传
- 通常用硬件实现
6.纠错
接收方识别和纠正比特差错,而不采取重传
三、数据链路层协议的三个基本问题
1、封装成帧
1)在一段数据的前后分别添加首部和尾部,构成一个帧。
2)首部和尾部的一个重要作用就是进行帧定界(即确定帧的界限)。
(1)面向字节的协议——用控制字符作为帧定界符
- 控制字符 SOH (Start Of Header) 放在一帧的最前面,表示帧的首部开始。
- 控制字符 EOT (End Of Transmission) 放在一帧的末尾,表示帧的结束。
(2)面向比特的协议
- 面向比特的协议把帧看成比特的集合
- 用特别的比特序列表示帧的开始和结束(01111110)
2、透明传输
指某一个实际存在的事物看起来却好像不存在一样。
注:“在数据链路层透明传送数据”表示:无论发送什么样的比特组合的数据,这些数据都能够按照原样没有差错地通过这个数据链路层。
3、差错控制
1)在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)。
2)为了保证数据的可靠传输,在数据传输出现错误后,有两种处理方法,一是检错重发;二是前向纠错。
3)两种检错方法比较
注:1、差错检测不是100%可靠! 协议可能漏掉某些差错,但是非常少 较大的EDC字段产生更好的检测和纠正
2、 一种优秀的差错检测方法应当满足: 加入的冗余信息较少,而能检测出所有的差错。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!