一、简介
数据链路层属于第二层,数据链路层试使用物理层提供的服务在通信信道上发送和接受比特。它要完成一系列的功能包括:
(1)向网络层提供一个定义良好的服务接口。
(2)处理传输错误。
(3)调节数据流,确保慢速的接收方不会被快速的发送方淹没。
为了实现这个目标,数据链路层从网络层获得数据包,然后将这些数据包封装成帧(frame)以便传输。每个帧包含一个帧头、一个有效载荷(用于存放数据包)以及一个帧尾。
如下图所示:
一般情况下数据链路层会为上层提供以下服务:
(1)无确认的无连接服务
(2)有确认的无连接服务
(3)有确认的有连接服务
数据链路层为上层提供的最复杂的服务就是有确认的连接服务,采用这种服务,源机器和目标机器在传输任何数据之前要建立一个连接。连接上发送的每一帧都被编号,数据链路层确保发出的每一帧都会真正被接收方收到。
当使用面向连接的服务时,数据传输必须经历三个阶段。在第一个阶段要建立连接,双方初始化变量和计数器,这些变量和计数器记录了哪些帧已经被接收到,哪些帧还没有被接收到。在第二个阶段,才真正传输一个或者多个数据帧。第三个阶段也是最后一个阶段,连接被释放,所有的变量、缓冲区以及其他用于维护该连接的资源也随之释放。