数据链路层负责在相邻的节点之间传送一组位信息。通常,这些位组被称为帧或包。网络层将数据单元传送给数据链路层。在这个阶段,数据链路层为其添加报头和尾部信息,接下来它就是要传送给物理层的数据单元。
报头包括地址和其他控制信息。这一级的地址指的是网络中接收帧的相邻节点的物理地址。因此,这些地址随着帧在从源节点到目的地节点的路由上经过不同的节点而发生变化。终端节点的地址,也就是源节点和目的地节点的地址已经是网络层传送到数据链路层的数据单位的组成部分。所以,它们并不是在数据链路层添加或删除的报头和报尾的内容。因而,它们并不随包在源和目的地之间的不同节点上移动而变化。
数据链路层还要进行流量控制。它会根据CPU的处理速度、传输速度、缓冲区大小以及拥塞情况确定是否可以将帧/包发送给相邻的节点,如果可以发送,以什么样的速度发送帧/包。当然,一定要确认介质空闲才可以传送帧/包。
如果连接是多点连接(也就是传输介质是共享的),那么就要解决谁在什么时间可以发送多大数据量的问题。这是局域网环境中常出现的典型问题,通常由媒介存取控制(Media Access Control,MAC)协议解决。因此,在局域网中,数据链路层被分为两个子层。其中,LLC执行常用的数据链路层功能,如错误控制和流量控制等。
概而言之,数据链路层具有以下功能。
寻址:添加包含相邻节点物理地址的报头和报尾,并在成功传送消息后将其删除。
流量控制:通过调整发送的数据量,来避免在接收方的缓冲区中写入过多的内容。
媒介存取控制:在局域网中,它可以决定由谁在什么时间发送多大的数据量。
同步:报头包含指明帧到达接收方的时间的位。它还包括时序同步位,为了正确认出该位,它必须知道位的发送时间间隔。报尾除了包含错误控制位,还标识帧结束。
差错控制:它会进行循环冗余码(CRC)校验,以确保帧的正确性。如果出现帧错误,它就要求重新传输该帧。这里包含了多种方案(积极应答、消极应答、回退n步、滑动窗口等)。
节点之间的传送:它最终负责整个帧/包可以无错地传送到下一个相邻的节点(节点之间的传送)。
还没有评论,来说两句吧...