数据链路层在网络体系结构中所处的地位
数据链路层在网络体系结构中处于关键的位置,它提供了物理传输的可靠性,并负责处理数据的错误检测、流量控制和介质访问等功能。它是网络通信的基础,为网络层提供了稳定的数据传输环境。
链路、数据链路和帧
链路
链路(Link)是指从一个节点到相邻节点的一段物理线路(有线或无线),而中间没有任何其他的交换节点。
数据链路(Data Link)是基于链路的。当在一条链路上传送数据时,除需要链路本身,还需要一些必要的通信协议来控制这些数据的传输,把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
计算机中的网络适配器(俗称网卡)和其相应的软件驱动程序就实现了这些协议。一般的网络适配器都包含了物理层和数据链路层这两层的功能。
桢
帧(Frame)是数据链路层对等实体之间在水平方向进行逻辑通信的协议数据单元PDU。
数据链路层的三个重要问题
封装成帧和透明传输
发送方的应用层将待传输的应用层协议数据单元交付给运输层,运输层为其添加一个运输层首部, 使之封装为运输层协议数据单元 并将运输层协议数据单元交付给网络层, 网络层位其添加一个网路层首部, 使之封装为网络层协议数据单元并将网路层数据单元交付给数据链路层, 数据链路层为其添加一个首部和尾部:
下图表示透明传输:
如果不解决上述问题,则数据链路层就会对上层交付的PDU的内容有所限制,即PDU中不能包含帧定界符。显然,这样的数据链路层没有什么应用价值。
如果能够采取措施,使得数据链路层对上层交付的PDU的内容没有任何限制,就好像数据链路层不存在一样,就称其为透明传输。
差错检测
发送方给接收方发送桢, 由于实际的通信链路都不是理想的, 表示比特的信号在信道上传输时不可避免的会产生失真 甚至出现误码, SO , 接收方收到该桢后 如何才能知道桢中出现了误码呢? 这就需要 差错检测: (奇偶校验 循环冗余校验两种算法)
可靠传输
如果数据链路层向其上层提供的是不可靠的传输服务, 则接收方的数据链路层丢弃有误码的桢即可.
若数据链路层向其上层提供的是可靠的传输服务, 这就需要数据链路层通过某种机制实现发送什么, 接收方都能正确收到.
总结
封装成帧和透明传输
数据链路层给上层交付下来的协议数据单元PDU添加帧首部和帧尾部,这称为封装成帧。
如果能够采取措施,使得数据链路层对上层交付的PDU的内容没有任何限制,就好像数据链路层不存在一样,就称其为透明传输。
差错检测
帧在传输的过程中可能出现误码。
接收方根据发送方添加在帧尾部中的检错码,可以检测出帧是否出现了误码。
可靠传输
不可靠传输服务:收到有误码的帧,直接丢弃,其他什么也不做;未收到发送方发送的帧,也不进行任何处理。
可靠传输服务:实现发送方发送什么,接收方最终都能正确收到。