概述
文章目录
- 1.为什么设置数据链路层
- 2.数据链路层解决了什么问题
- 2.1.封装成帧
- 2.2.透明传输
- 2.3.差错校验
- 2.4.MAC寻址
- 3.链路层向网络层提供的服务
- 3.1.无确认的无连接服务
- 3.2.有确认的无连接服务
- 3.3.有确认的面向连接服务
1.为什么设置数据链路层
数据链路层最基本的服务是将源计算机网络层来的数据可靠的传输到相邻节点的目标计算机的网络层
- 物理层的线路有传输介质与通信设备组成,比特流在传输介质上传输时一定会存在误差,而设置数据链路层目的就是为了在存在差错的物理层的基础上,采用差错检测,差错控制和流量控制等方法,将有差错的物理线路改进为无差错的数据链路,向网络层提供高质量的数据传输服务
- 对于网络层,由于数据链路层的存在,网络层不需要知道物理层具体采用了哪种传输介质与通信设备的,是采用模拟通信方法,还是采用数字通信方法。只要接口关系与功能不变,物理层所采用的传输介质与通信设备的变化对网络层不会产生影响。
2.数据链路层解决了什么问题
2.1.封装成帧
就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
下图展示的如何封装成帧:
但是同时带来了一个问题(如下图),为了解决这个问题,提出了透明传输
2.2.透明传输
用字节填充法解决透明传输问题。发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(十六进制数1B)。
2.3.差错校验
传输过程中可能会产生bit差错:0变成1,1变成0.
在一段时间内,传输错误的比特率占所传输比特总数的比率称为误码率BER(bit error rate)。
为了保证数据的可靠性,需要各种差错检测措施,引入了循环冗余检验CRC
,将CRC
的余数作为FCS
在数据后面添加冗余码成为帧检验序列FCS
2.4.MAC寻址
这是数据链路层中的MAC子层主要功能。这里所说的“寻址”与“IP地址寻址”是完全不一样的,因为此处所寻找地址是计算机网卡的MAC地址,也称“物理地址”、“硬件地址”,而不是IP地址。在以太网中,采用媒体访问控制(Media Access Control, MAC)地址进行寻址,MAC地址被烧入每个以太网网卡中。这在多点连接的情况下非常必需,因为在这种多点连接的网络通信中,必须保证每一帧都能准确地送到正确的地址,接收方也应当知道发送方是哪一个站。
3.链路层向网络层提供的服务
3.1.无确认的无连接服务
“无确认的无连接服务”是指源计算机向目标计算机发送独立的帧,目标计算机并不对这些帧进行确认。这种服务,事先无需建立逻辑连接,事后也不用解释逻辑连接。正因如此,如果由于线路上的原因造成某一帧的数据丢失,则数据链路层并不会检测到这样的丢失帧,也不会恢复这些帧。出现这种情况的后果是可想而知的,当然在错误率很低,或者对数据的完整性要求不高的情况下(如话音数据),这样的服务还是非常有用的,因为这样简单的错误可以交给OSI上面的各层来恢复。如大多数局域网在数据链路层所采用的服务也是无确认的无连接服务。
3.2.有确认的无连接服务
为了解决以上“无确认的无连接服务”的不足,提高数据传输的可靠性,引入了“有确认的无连接服务”。在这种连接服务中,源主机数据链路层必须对每个发送的数据帧进行编号,目的主机数据链路层也必须对每个接收的数据帧进行确认。如果源主机数据链路层在规定的时间内未接收到所发送的数据帧的确认,那么它需要重发该帧。 这样发送方知道每一帧是否正确地到达对方。这类服务主要用于不可靠信道,如无线通信系统。它与下面将要介绍的“有确认的面向连接服务”的不同之处在于它不需要在帧传输之前建立数据链路,也不要在在帧传输结束后释放数据链路。
3.3.有确认的面向连接服务
大多数数据链路层都采用向网络层提供面向连接确认服务。利用这种服务,源计算机和目标计算机在传输数据之前需要先建立一个连接,该连接上发送的每一帧也都被编号,数据链路层保证每一帧都会被接收到。而且它还保证每一帧只被按正常顺序接收一次。这也正是面向连接服务与前面介绍的“有确认无连接服务”的区别,在无连接有确认的服务中,在没有检测到确认时,系统会认为对方没收到,于是会重发数据,而由于是无连接的,所以这样的数据可能会复发多次,对方也可能接收多次,造成数据错误。这种服务类型存在3个阶段,即:数据链路建立、数据传输、数据链路释放阶段。每个被传输的帧都被编号,以确保帧传输的内容与顺序的正确性。大多数广域网的通信子网的数据链路层采用面向连接确认服务。
最后
以上就是无语向日葵为你收集整理的数据链路层简介1.为什么设置数据链路层2.数据链路层解决了什么问题3.链路层向网络层提供的服务的全部内容,希望文章能够帮你解决数据链路层简介1.为什么设置数据链路层2.数据链路层解决了什么问题3.链路层向网络层提供的服务所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复