数据链路层

  • 数据链路层
    • 帧同步功能
      • 使用字符填充的首尾定界符法
      • 使用比特填充的首尾标志法
      • 违法编码法
      • 字节计数法
    • 差错控制
    • 流量控制
      • 停止等待方案
      • 滑动窗口机制
  • MAC编址与数据帧封装
    • 数据链路层协议数据单元
    • 数据帧的格式
    • 帧头与帧尾
      • 帧头
      • 编址
      • 帧尾
    • 数据帧实例
      • IEEE 802.3 以太网帧
      • IEEE 802.11 WLAN帧
  • 高级数据链路控制协议
    • HDLC基本概念
      • HDLC的优点
      • HDLC的常用操作方式
      • HDLC帧格式
  • 点对点(PPP)协议
    • PPP基本概念
      • PPP帧格式
      • PPPoE
        • PPPoE发现阶段
        • PPP会话阶段

数据链路层

数据链路层是OSI参考模型中的第二层,介于物理层和网络层之间,它使用物理层提供的服务,并向网络层提供服务。

数据链路层的作用是将物理层传输的有可能出错的原始比特流连接改造成逻辑上无差错的数据链路。

数据链路层的基本功能是向网络层提供透明、可靠的数据传输服务。透明是指该层上传输的数据的内容、编码、格式没有限制;可靠是指用户免去对丢失信息、干扰信息、顺序不正确的担心。

数据链路层具备一系列功能,主要是:

  • 将数据组合成数据块,称为帧(Frame),帧是数据链层的传送单位。
  • 控制帧在物理信道上的传输,包括传输差错处理、调节发送速率以使之与接收方匹配。
  • 在两个网络实体间提供数据通路的建立、维持和释放管理。

帧同步功能

为了使传输中发生差错后只将出错的有限数据进行重发,数据链路层将比特流组织成帧以帧为单位传送。

帧的组织结构必须设计成使接收方对从物理层收到的比特流中进行帧识别,也能从比特流中区分出帧的起始与终止,这就是帧同步要解决的问题。

由于网络传输很难保证双方计时的正确和一致,所以不能依靠时间间隔关系来确定帧的起始与终止。常用的帧同步方法如下所述。

使用字符填充的首尾定界符法

该方法用一些特定的字符来定界一个帧的起始与终止。为了不使数据信息位中出现的特定字符被误判为帧的首尾定界符,可以在这种数据字符前填充一个转义控制字符(DLE)以示区别。但是这种方法使用起来比较麻烦,所用的特定字符依赖于所采用的字符编码,兼容性较差。

使用比特填充的首尾标志法

该方法以一组特定的比特模式(如01111110)来标志一帧的起始与终止,如HDLC协议即采用此方法。为了不使信息位中出现与该比特模式形似的比特串被误判为帧的首尾标志,可以采用比特填充的方法。比如,采用特定模式01111110,则如果信息中连续出现5个“1”,发送方自动在其后插入一个“0”,而接收方则做该过程的逆操作,即每接收到连续5个“1”,则自动删除其跟在后面的“0”,以恢复原始数据。

比特填充容易由硬件来实现,性能优于字符填充法。

违法编码法

该方法在物理层采用特定比特编码方法时采用。

例如,曼彻斯特编码方法,是将数据比特“1”编码成“高—低”电平,将数据“0”编码成“低—高”电平。而“高—高”电平和“低—低”电平在数据比特中是违法的。可以借用这些违法编码序列来界定帧的起始与终止。IEEE 802标准就使用这种定界方法。这种编码不需要借助任何填充技术,但它只适用于采用冗余编码的特殊编码环境。

字节计数法

该方法以一个特殊字符表征一帧的起始,并以一个专门字段来标明帧内的字节数。

接收方可通过对该特殊字符的识别从比特流中区分出帧的起始,并从该专门字段中读出该帧中的数据字节数,从而确定帧的终止位置。

面向字节技术的同步协议的典型实例是数字通信报文协议(Digital Data Communication Message Protocol,DDCMP)。

由于字节计数法中计数字段的脆弱性(其值一但出现错误将导致连续帧的传输错误)以及实现上的复杂性和不兼容性,目前,数据链路层采用的帧同步方法是比特填充法和违法编码法。

差错控制

通信系统必须具备发现(即检测)差错的能力,并采取措施纠正,使差错控制在尽可能小的范围内,这就是差错控制过程,也是数据链路层的主要功能之一。

接收方通过对差错编码(如奇偶校验码或CRC码)的检查,可以判定一个帧在传输过程中是否发生了差错。一旦发现差错,一般可以采用反馈重发的方法来纠正。这要求接收方收完一个帧之后,向发送方反馈一个接收是否正确的信息,使发送方做出是否需要重新发送的决定。发送方必须在收到接收正确的反馈信息后才能认为该帧已经正确发送完毕,否则需要重发直至正确为止。

物理信道的突发噪声可能完全干扰一帧,使整个数据帧或反馈信息帧丢失,这将导致发送方永远接收不到反馈信息,从而使传输过程停滞。为了避免出现这种情况,通常引入计数器(Timer)来限定接收方发回反馈信息的时间间隔。发送方发送一帧数据时同时也启动计时器,若在限定的时间间隔内未能接收到反馈信息,即认为计时器超时,则可认定传输的帧已出错或丢失,就需要重新发送。

由于同一帧可能被重复发送多次,可能导致接收方多次将同一帧递交给网络层。为了防止这种危险,可以采用对发送帧进行编号的方法,即每一个帧一个序号,从而使接收方区分是新的帧还是已经接收又重新发过来的帧,以此确定是否将帧递交给网络层。

数据链路层使用计时器和序号来保证每个帧最终都能被正确地发送给网络层一次。

流量控制

流量控制不是数据链路层特有的功能,许多高层协议中也提供流量控制功能,只不过控制的对象不同。

对于数据链路层来说,控制的是相邻两个节点之间数据链路上的流量,对于传输层来说,控制的是从源到最终目的之间的端到端的流量。

由于收发双方各自使用设备的工作速率和缓冲存储空间的差异,可能出现发送能力大于接收能力的情况。如果此时不对发送方的发送速率做适当的限制,前面来不及接收的帧将被后面不断发送来的帧“淹没”或“覆盖”,从而造成帧的丢失。由此可见,流量控制实际上是对发送方数据流量的控制,使其发送速率不至于超过接收方所能承受的能力。这个过程需要某种反馈机制,使发送方知道接收方的能力。需要一些规则,使得发送方知道什么情况下才可以接着发送下一帧,什么情况下必须暂停,以等待接收方的某种反馈信息后继续发送。

两种最常用的流量控制方法是:停止等待方案和滑动窗口机制。

停止等待方案

增加缓冲存储空间在某种程度上可以缓解收发双方在传输速率上的差异,但这终究是一种有限的方法。

一方面,系统不允许开设过大的缓存空间,成本也较高。另一方面,在速率显著失配且又传送大量数据的场合,仍会出现缓存不够的情况。

停止等待流量控制方案是一种相比之下更主动积极的方法。

其工作原理是:发送方发出一帧,等待应答信号到达后再发送下一帧;接收方每收到一帧后回送一个应答信号,表示愿意接收下一帧;如果接收方不回送应答,则发送方必须一直等待。

滑动窗口机制

为了提高信道的利用率,发送方可以不等待确认信息返回就连续发送若干帧。由于连续发送的多个帧未被确认,需要采用帧号区分这些帧。

这些尚未被确认的帧都可能出错或丢失而要求重发,要求发送方有较大的缓存保留未被确认可能要重发的帧。

但是缓存总是有限的,如果接收方不能以发送方的速率接收处理帧,则发送方还是可能用完缓存而暂时过载的。为此,在收到一个确定帧之前,对发送方可发送的帧的数目加以限制。这是由发送方保留在重发缓存中待确认的帧的数目来实现的。如果接收方来不及对收到的帧进行处理,则接收方就停发确认信息,此时发送方的重发表就会增长,当达到缓存的上限时,发送方就不再发送新的帧,直至再次收到确认信息位置。

此方案中,设置的待确认帧的数目的最大限度称为链路的发送窗口。显然,如果窗口设为1,则发送方仅能缓存一个帧,此时传输效率很低。故窗口应选择是接收双方尽量能处理所有的帧。还要考虑诸如帧的最大长度、可使用的缓存空间以及传输速率等因素。

重发表是一个连续序号的列表,对应发送方已经发送但尚未收到确认的那些帧。这些帧的序号有一个最大值,即为发送窗口的限度。所谓发送窗口就是指发送方已发送但尚未确认的帧序号列表的界,其上、下界分别称为发送窗口的上、下沿,上、下沿的间距称为窗口尺寸。接收方也有类似的接收窗口,它指示允许接收的帧的序号。

发送方每次发送一帧后,等待确认的帧的数目便增1,每收到一个确认信息后,待确认帧的数目便减一。“窗口”随着数据传送过程的发展而向前滑动,因此称为滑动窗口流量控制。当重发表的长度计数值(即待确认帧的数目)等于发送窗口尺寸时,便停止发送新的帧。滑动窗口机制的示意图如图所示。

MAC编址与数据帧封装

数据链路层实际上可以拆分为以下两个子层。

  • 逻辑链路控制层(LLC):这个较高的子层定义了向网络协议提供服务的软件进程。

    • 它在帧中添加信息,指出帧使用的网络层协议,这种信息让不同的第三层协议(如IPv4和IPv6)能够使用相同的网络接口和介质。
  • 介质访问控制层(MAC):这个较低的子层定义了硬件执行的介质访问流程。
    • 它根据介质的物理信号要求和使用的数据链路层协议类型,提供数据链路层编址和数据分隔。

下图说明了数据链路层是如何分为LLC和MAC子层的。LLC子层与网络层进行通信,MAC子层支持多种介质访问技术,例如,MAC子层与以太网技术通信,以便通过铜缆或光纤收发帧,MAC子层还与无线技术(如WLAN和蓝牙)通信,以便以无线方式收发帧。

数据链路层协议数据单元

数据链路层的数据单元是帧。虽然有不同的描述数据链路层帧的协议,但每种帧都有以下三个基本组成部分。

  • 帧头:包含控制信息(如地址信息),位于数据帧的开头位置。
  • 数据:包含第三层报头、传输层报头、应用层数据等数据信息。
  • 帧尾:包含添加到帧结尾的控制信息,用于检查错误。

由于协议的不同,帧结构及帧头和帧尾中包含的字段会存在差异。数据链路层协议描述了通过不同介质传输数据包所需的功能。协议的此类功能已经集成到帧封装中。当帧到达目的地后,数据链路层协议从介质上取走帧后,就会读取成帧信息并将其丢弃。为适应不同的传输环境,数据链路层协议使用不同的帧。

没有一种帧能够满足通过所有类型介质的全部数据传输需求,根据环境的不同,帧中所需要的控制信息量也相应变化,以匹配介质和逻辑拓扑的介质访问控制需求。

数据帧的格式

数据链路层协议需要控制信息才能使协议正常工作,通常需要解决以下几个问题。

  • 哪些节点正在进行通信?
  • 节点间通信何时开始?何时结束?
  • 节点通信期间发生了哪些错误?
  • 接下来哪些节点会参与通信?

数据在介质上传输时,将被转换成比特流(即1或0)。根据上述的帧同步方法,接收节点确定帧的起始位置,并要确定表示地址的信息。帧封装技术把比特流分为可读取的分组,并将控制信息作为不同字段值插入帧头和帧尾。这种格式让物理信号具备能被节点接收并且在目的地解码成数据包的结构,如图所示,通用帧格式包括以下几个字段。

  • 帧的开始和结束标志:MAC子层用它们来标示帧的开始和结束位置。
  • 地址:MAC子层用来表示源节点和目的节点。
  • 类型:LLC子层用来表示第三层协议类型。
  • 控制:标示特殊的流量控制服务。
  • 数据:包含帧的负载(即数据,含数据报头、数据段报头和应用层数据)。
  • 错误检查:包含数据后面的帧尾,这些字段用于检测传输错误。

帧头与帧尾

帧头

帧头包含了数据链路层协议针对特定逻辑拓扑和介质指定的控制信息。
帧控制信息对于每种协议均是唯一的。
第二层协议使用它来提供通信环境所需要的功能。典型帧头字段包括:

  • 帧的开始字段——表示帧的起始位置。
  • 源地址和目的地址——表示介质上的源节点和目的节点。
  • 优先级/服务质量字段——表示要处理的特殊通信服务类型。
  • 类型字段——表示帧中包含的上层服务。
  • 逻辑连接控制字段——用于在节点间建立逻辑连接。
  • 物理链路控制字段——用于建立介质链路。
  • 流量控制字段:用于开始和停止通过介质的流量。
    -拥塞控制字段——表示介质中的拥塞状态。
    以上字段名称是作为示例列出的非特定字段,不同数据链路层协议可能使用其中的不同字段。由于数据链路层协议的目的和功能与特定的拓扑和介质有关,因此,必须研究每种协议才能详细理解其帧的结构。

编址

数据链路层提供了通过共享本地介质传输数据时要用到的编址方法。这一层的设备地址称为物理地址(注意不是物理层地址)。

数据链路层地址包含在帧头中,它指定了帧在本地网络中的目的节点。帧头还可能包含帧的源地址。

与第三层逻辑地址不同,物理地址不会表示设备位于哪个网络。若将设备移至另一网络或子网,该设备仍使用同一个物理地址。

由于帧仅用于在本地介质的节点间传输数据,因此数据链路层的地址仅用于本地传送。该层地址在本地网络之外没有任何意义。

与第三层地址进行比较,数据包头中的第三层地址在路由过程中,无论经过多少跳,都会从源主机传送到目的主机。

如果帧的数据包必须传送到另一个网络,中间设备(路由器)将解封原始帧,为数据包创建一个新帧并将它发送到新网络中。新的帧必须使用恰当的源地址和目的地址,才能通过新介质传输数据包。

数据链路层中的编址需求取决于逻辑拓扑。仅具有两个互连节点的点对点拓扑不需要编址。对于这种拓扑,帧一旦传送到了介质上,就只有一个去处。

帧尾

数据链路层协议将帧尾添加到各帧的结尾处。典型的帧尾字段包括:

  • 帧校验序列——用于检查帧内容有无错误。
  • 停止字段——用于指明帧的结束,也用于向固定大小或小尺寸的帧添加内容。

帧尾的作用是确定帧是否无错到达,此过程称为错误检测。

通过将组成帧的各个位的逻辑或数学摘要放入帧尾中来实现错误检测。

帧校验序列(FCS)字段用于确定帧的传输和接收过程有无发生错误。

之所以在数据链路层添加错误检测,是因为数据是通过该层的介质传输的。

对于数据而言,介质是个存在潜在不安全因素的环境。介质上的信号可能遭受干扰、失真或丢失,从而改变这些信号所代表的各个位的值。通过使用FCS字段提供的错误检测机制,可找出介质上发生的大部分错误。

为确保在目的地接收的帧的内容与离开源节点的帧的内容相匹配,传输节点将针对帧内容创建一个逻辑摘要,称为循环冗余校验(CRC)值,此值将放入帧的校验序列(FCS)字段中以代表帧内容。

如果初始节点产生的CRC与接收数据的远端设备计算的校验值不匹配,即表明帧发生了错误。当帧到达目的节点后,接收节点会计算自身的逻辑摘要值(即CRC值),然后接收节点将比较这两个CRC值。如果两个值相同,则认为帧已按发送的原样到达。如果FCS字段中的CRC值与接收节点计算出的CRC值不同,帧会被丢弃,下图说明了CRC用于进行错误检测的原理。

通过比较CRC,帧的改变会被检查出来,CRC错误通常是由通信噪声或数据链路中的其他错误造成的。在以太网中,错误可能是由于冲突或传输了不该传输的数据。当然,也可能出现CRC比较结果正确,但实际帧已经损坏的情况,不过这种情况发生的概率很小。在计算CRC时,各个位中的错误有可能会相互抵消,这时应要求更上层的协议检测和纠正该数据错误。数据错误的纠正是指从传输的原始比特中恢复被损坏的数据,更复杂,也需要更多开销。数据链路层中使用的协议确定是否执行错误纠正,FCS的作用仅是检测错误,并非每个数据链路层协议都支持错误纠正。

数据帧实例

在TCP/IP网络中,所有OSI第二层协议与OSI的第三层网际协议配合使用。然而,实际使用的第二层协议取决于网络的逻辑拓扑以及物理层的实施方式。如果网络拓扑中使用的物理介质非常多,则正在使用的第二层协议数量也相对较多。第二层协议包括:

  • 以太网(Ethernet)协议;
  • 点对点协议(PPP);
  • 高级数据链路控制协议(HDLC);
  • 帧中继(Frame Relay)协议;
  • ATM(Asynchronous Transfer Mode,异步传输模式)。

下演示了一个用不同的数据链路帧将数据包传输通过Internet的例子。

常见的局域网帧是以太网帧和WLAN帧。

IEEE 802.3 以太网帧

以太网是IEEE 802.2和IEEE 802.3标准中定义的一系列互联网技术。

以太网标准定义了第二层协议和第一层技术。以太网是广泛使用的局域网技术,支持10 Mbps、100 Mbps、1 000 Mbps和10 000 Mbps的数据带宽。

OSI第一层和第二层的基本帧格式和IEEE子层在所有以太网形式中是一样的,但用于检测数据和将数据放置到介质上的方法在不同实施中有所不同。

以太网使用CSMA/CD介质访问机制,通过共享介质提供没有确认的无连接服务。共享介质要求以太网数据包头使用数据链路层地址来确定源节点和目的节点。与大部分LAN协议一样,该地址称为节点的MAC地址(也称物理地址)。以太网MAC地址为48位且通常以十六进制格式表示。

以太网帧据有多个字段,具体如下所述。

  • 前导码:用于定时同步,也包含标记定时信息结束的定界符。
  • 目的地址:48位目的节点MAC地址。
  • 源地址:48位源节点MAC地址。
  • 类型:指明以太网过程完成后用于接收数据的上层协议类型。
  • 数据或填充:在介质上传输的数据单元(PDU),通常为IPV4数据包。
  • 帧校验序列(FCS):用于检查损坏帧的CRC值。

IEEE 802.11 WLAN帧

IEEE 802.11无线局域标准是IEEE 802标准的扩展,它使用与其他IEEE 802 LAN相同的IEEE 802.2 LLC子层和48位编址方案。但是,MAC子层和物理层存在许多差异。在无线环境中,需要考虑一些特殊的因素。由于没有确定的物理连通性,因此外部因素可能干扰数据传输且难以进行访问控制。为了解决这些问题,无线标准定义了额外的控制功能。

IEEE 802.11 标准通常称为Wi-Fi,是一种争用系统,使用的是CSMA/CD介质访问流程。CSMA/CD为等待传输的所有节点指定了一个随机回退的过程。最可能发生介质争用的时间是在介质变为可用后。随机回退一段时间的机制可以大大降低访问冲突。

IEEE 802.11网络还使用数据链路来确认帧已经成功接收。如果发送节点没有检测到确认帧,原因可能是接收方没有收到原始数据帧或确认原始数据帧不完整,就会重传。这样明确的确认就可以克服干扰或其他无线电相关的问题。

IEEE 802.11支持的其他服务有身份验证、关联(到无线设备的连通性)和隐私(加密)。图所示为IEEE 802.11帧包含的字段,图中列出了2字节的帧控制字段的详细组成,如下所述。

  • 协议版本字段:正在使用的IEEE 802.11版本。
  • 类型和子类型字段:标示帧的控制、数据和管理三个功能之一。
  • 目的分布系统字段:对于发送目的为分布式系统的数据帧,设置为1。
  • 源分布式系统:对于离开分布式系统的数据帧没,设置为1。
  • 更多分段字段:对于具有其他分段的帧,设置为1。
  • 重试字段:如果帧为之前帧的重传,设置为1。
  • 电源管理字段:设置为1表示节点处于节电模式。
  • 更多数据字段:设置为1表示处于节电模式的节点,更多帧正在缓冲等待该节点。
  • 有线等级保密(WEP)字段:帧包含用于确定安全性的WEP加密信息,则设置为1。
  • 顺序字段:对于使用严格顺序服务类(不需要重新排序)的数据帧,设置为1。
  • 持续时间字段:根据帧类型的不同,代表传输帧所需要时间(单位为微妙)或传输帧的站点的关联身份(AID)
  • 目的地址(DA)字段:网络中最终目的节点的MAC地址。
  • 源地址(SA)字段:发送帧的节点的MAC地址。
  • 接收方地址(RA)字段:用于标识作为帧的及时收件人的无线设备的MAC地址。
  • 发射器地址(TA)字段:用于标识传输帧的无线设备的MAC地址。
  • 帧体字段:包含传输的信息,对于数据帧,通常为IP数据包。
  • 帧校验序列(FCS)字段:包含帧的32位冗余校验(CRC)。

高级数据链路控制协议

为了适应数据通信的需要,ISO、ITU-T以及一些国家和大的计算机制造公司,先后制定了不同类型的数据链路控制规程,根据帧控制的格式,可以分为面向字符型和面向比特型。

在字符型规程中,用字符编码集中的几个特定字符来控制链路的操作,监视链路的工作状态,例如,采用国际5号码中的SOH、STX作为帧的开始,ETX、ETB作为帧的结束。

面向字符型规程有一个很大的缺点,就是它与所用的字符集有密切的关系,使用不同字符集的两个站之间,很难使用该规程进行通信。面向字符型规程主要适用于中低速异步或同步传输,很适合于通过电话网的数据通信。

在面向比特型规程中,采用特定的二进制序列01111110作为帧的开始和结束,以一定的比特组合所表示的命令和响应实现链路的监控功能,命令和响应可以和信息一起传送。所以它可以实现不受编码限制的、高可靠和高效率的透明传输。面向比特型规程主要适用于中高速同步半双工和全双工数据通信,如分组交换方式中的链路层就采用这种规程。随着通信的发展,它的应用日益广泛。ITU-T制定的X.25、ISO制定的高级数据链路控制协议(HDLC)、美国国家标准ADCCP、IBM公司的SDLC等均属于面向比特型的规程。

目前,用于广域网的数据链路层协议主要有HDLC和点对点协议(PPP),广域网的二层封装技术还包X.25、帧中继(Frame Relay)、ATM等,图所示为常见的广域网第二层封装类型和应用场景

HDLC基本概念

HDLC的优点

作为面向比特的数据链路层协议的典型,HDLC具有以下优点。

  1. 透明传输:HDLC不依赖于任何一种字符编码集,数据报文可以实现透明传输。“透明传输”表示经实际电路传送后的数据信息没有发生变化。因此对所传送数据信息来说,由于这个电路并没有对其产生什么影响,可以说数据信息“看不见”这个电路,或者说这个电路对该数据信息来说是透明的。因此,任意组合的数据信息都可以在这个电路上传送。
  2. 可靠性高:所有帧均采用CRC校验,对信息帧进行顺序编号,可防止漏收获重发。
  3. 传输效率高:在HDLC中,额外的开销比特少,允许高效的差错控制和流量控制。
  4. 适应性强:HDLC规程能适应各种比特类型的工作站和链路。
  5. 结构灵活:在HDLC中,传输控制功能和处理功能分离,层次清楚,应用非常灵活。

HDLC是通用的数据链路层控制协议,在开始建立数据链路时,允许选用特定的操作方式。所谓操作方式,是指某站点以主站方式操作还是以从站方式操作,或者两个方式兼备。

链路上用于控制目的地的站称为主站,其他的受主站控制的站点称为从站。主站负责对数据流进行组织,并且对链路上的差错实施恢复。由主站发往从站的帧称为命令帧,而由从站返回主站的帧称为响应帧。连有多个站点的链路通常使用轮询技术,轮询其他站的站点称为主站。而在点对点的链路中,每个站都可以为主站。主站需要比从站具备更多的逻辑功能,所以当终端和主机相连时,主机一般总是主站。有些站可兼备主站和从站的功能,这种站称为组合站,在这种情况下,在链路上,主、从站具有同样的传输控制功能,这又被称为平衡操作。相对地,有主从之分,各自功能不同的操作,称为非平衡操作。

HDLC的常用操作方式

HDLC中常用的操作方式有以下三种。

  1. 正常响应方式NRM(Normal Responses Mode)
    这是一种非平衡数据链路操作方式,有时也称非平衡正常响应方式。该操作方式适用于面向终端的点到点或一点到多点的链路。在这种操作方式下,传输过程由主站启动,从站只有收到主站的命令帧后,才能作为响应,向主站传输信息。响应信息可以由一个或多个帧组成,若信息有多个帧,则应指出哪一个是最后一个帧。主站负责管理整个链路,且具有轮询、选择从站及向从站发送命令的权力,同时也负责对超时、重发及各类恢复操作进行控制。
  2. 异步响应方式ARM(Asynchronous Responses Mode)
    这也是一种非平衡数据链路操作方式,与NRM不同的是,ARM下的传输过程由从站启动。从站主动发给主站一个或一组帧,可包含数据信息或仅以控制为目的的帧。在这种操作方式下,由从站来控制超时和重发。该方式对于采用轮询方式的多站链路来说是必不可少的。
  3. 这是一种允许任何阶段来启动传输的操作方式。为了提高链路的传输效率,节点之间在两个方向上都需要有较高的信息传输量。在这种方式下,任何站点任何时候都能启动传输,每个站点即是主站又是从站,即每个站点都是组合站。各站都有相同的一组协议,任何站点都可以发送或接受命令,也可以给出应答,并且对差错恢复过程都有相同的责任。

HDLC帧格式

在HDLC中,数据和控制报文均以帧的标准格式传送。完整的HDLC的帧由标志字段(F)、地址字段(A)、控制字段(C)、信息字段(I)、帧校验字段(FCS)等组成。

  1. 标志字段(F)
    标志字段为01111110的比特模式,用以标志帧的起始和前一帧的结束。通常,在不进行帧传送的时候,信道仍处于激活状态,标志字段也可以作为帧与帧之间的填充字符。在这种状态下,发送方可以不断地发送标志字段,而接收方则检测每一个收到的标志字段,一旦发现某个标志字段后不再是标志字段,便可认为一个新的帧传送开始了。如果数据中有连续5个“1”出现,为防止误判,发送端在连续的“1”后面插入一个“0”,然后继续发送其他比特流。接收方如果发现连续5个“1”后面是“0”,则将其删除,以恢复原始比特流。
  2. 地址字段(A)
    地址字段表示链路上站的地址。在使用不平衡方式传送数据时(采用NRM和ARM方式),地址字段总是写入从站的地址;在使用平衡方式时(采用ABM方式),地址字段总是写入应答站的地址。地址字段的长度一般为8 bit,最多可以表示256个站的地址。在许多系统中规定,当地址字段为“11111111”时,定义为全站地址,即通知所有的接收站接收有关的命令帧并按其动作;全“0”比特为无站地址,用于测试数据链路的状态。
  3. 控制字段(C)
    控制字段用来表示帧类型、帧编号以及命令、响应等。由于C字段的构成不同,可以把HDLC帧分为信息帧、监控帧、无编号帧三种类型,分别简称I帧(Information)、S帧(Supervisory)、U帧(Unnumbered)。在控制字段中,第1位是“0”为I帧,第1、2位是“10”为S帧,第1、2位是“11”为U帧,它们具体操作复杂,另外控制字段也允许扩展。
  4. 信息字段(I)
    信息字段内包含了用户的数据信息和来自上层的各种控制信息,其长度未作严格限制,目前用的比较多的是1 000~2 000 bit。在I帧和某些U帧中,具有该字段,它可以是任意长度的比特序列。在实际应用中,其长度由收发站的缓冲器的大小和线路的差错情况决定,但必须是8 bit的整数倍。S帧没有信息字段。
  5. 帧校验序列字段(FCS)
    帧校验序列用于对帧进行循环冗余校验,其校验范围从地址字段的第1比特到信息字段的最后一比特的序列,并且规定为了透明传输而插入的“0”不在校验范围内。

下图所示为使用HDLC的网络拓扑示意图,可以指定链路层使用HDLC封装,并捕获数据帧查看具体格式。

一个HDLC的实际数据帧的示例如下图所示。

点对点(PPP)协议

点对点(Point to Point,PPP)协议是用于在两个节点之间传送帧的协议。PPP标准由IETF的RFC定义。PPP是一种用于广域网的数据链路层协议,可在多种串行WAN中实施,可用于各种物理介质,包括双绞线、光缆、卫星传输以及虚拟连接。PPP可用于承载多种三层协议,如IPv4、IPv6和IPX。

PPP基本概念

PPP使用分层体系结构,为满足各种介质的需求,PPP在两个节点间建立会话逻辑连接。

PPP会话对上层PPP协议隐藏底层物理介质,这些会话还为PPP提供了用于封装点对点链路上的多个协议的方法。PPP还让两个节点能够协商PPP会话选项,这包括身份验证、压缩和多链路(使用多条物理连接)。

PPP分为以下三层。

  • 在点到点链路上使用HDLC 封装数据。PPP 帧格式以HDLC帧格式为基础,做了很少的改动。
  • 使用LCP(链路控制协议)来建立、设定和测试数据链路连接。
  • 使用NCP(网络控制协议)给不同的网络层协议建立连接并配置它们。


PPP使用LCP来建立、测试数据链路连接,此外还提供协商封装格式的可选选项,具体包括以下内容:

  • 验证:验证过程要求主叫方输入身份信息,让被叫方验证是否建立这个呼叫。
  • 压缩:减少帧中的数据量从而提高效率。
  • 差错检测:用Quality选项来检测链路质量,进行差错检测。
  • 多连接:多链路捆绑,在一条链路负载达到一定数值的情况下,启用第二条链路,多条链路间可实现负载均衡。
  • PPP回拨:允许路由器作为回叫服务器。客户端发起初始的呼叫并请求回叫。初始呼叫被终止后,回叫服务器根据配置回叫客户端。这种机制增强了安全性。

当LCP将链路建立好后,PPP使用NCP根据不同的需求,配置上层协议所需的环境,为上层提供服务接口。针对上层不同的协议类型会使用不同的NCP组件,比如对IP提供IPCP接口。
从开始发起呼叫到最终通信完成后释放链路,PPP工作经历以下4个阶段。

  1. 链路的建立与配置协商
    这主要是LCP的功能,在连接建立阶段,通信的发起方发送LCP帧来配置和测试数据链路。这些LCP帧中包含配置选项字段,允许它们利用这些选项协商压缩和认证协议。如果LCP帧里不包含配置选项,则使用配置选项的默认值。
  2. 认证(验证)及确认阶段
    这属于LCP的可选功能。LCP在初始建立连接时根据协商可进行验证,而且必须在网络层协议配置前完成。PPP连接有两种可用的认证类型:PAP和CHAP。
    PAP(口令认证协议)是一种两次握手认证协议,仅在初始连接建立时完成,认证过程如下所述。
  • 被认证方主动重复发起认证请求,将本端的用户名和口令发送到验证方,直到认证被确认或连接终止。
  • 认证方接到被认证方的验证请求后,检查此用户名是否存在以及密码是否正确。如果用户名存在且密码正确,则认证通过,否则认证不通过。
    PAP不是一个强壮的认证方法,因为PAP过程中密码在链路上直接传输,极易被捕获造成泄密。另外,无法防止重复攻击和试错法攻击。被认证者控制认证的频率和次数,认证通过后,不再需要认证,使打开的连接不能抵御恶意攻击。
    CHAP(质询握手认证协议)由IETF RFC 1994定义并克服了很多PAP的缺点。CHAP使用三次握手的方式,并且只在线路上传送用户名而不在线路上直接传送口令。
  1. 网络层协议配置阶段
    本阶段主要是NCP的功能。LCP初步建立好链路后,通信双方开始交换一系列NCP分组为上层不同协议数据包配置不同的环境。比如上层下传IP协议数据包,则由NCP的IPCP负责完成这部分配置。当NCP配置完后,双方的通信链路才完全建立好,双方可以在链路上交换上层数据。期间,任何阶段的协商失败都将导致链路的失效。
  2. 链路终止阶段
    当数据传输完成后或一些外部事件发生(如空闲时间超长或用户打断)时,一方会发出断开连接的请求。这时,NCP首先释放网络层的连接,然后LCP关闭数据链路层的连接;最后,双方的通信设备或模块关闭物理链路回到空闲状态。

下图演示了PPP通信的完整过程。

PPP帧格式

PPP帧的格式包括如下主要字段:

  • 标志:1字节,表示帧开始或结束位置。标志字段包括二进制序列01111110。
  • 地址:1字节,包含标准PPP广播地址。PPP不分配独立的站点地址(也没有必要)。
  • 控制:包含二进制序列00000011,要求在不排序的帧中传输用户数据。
  • 协议:2字节,标志封装于帧的数据字段中的协议。RFC规定了协议字段的最新值。
  • 数据:零或者多字节,包含协议字段中指定协议的数据报。
  • 帧校验序列(FCS):通常为16位(2字节),通过各设备厂商协商,一致同意PPP实施时可使用32位FCS,从而提供错误检测能力。

PPPoE

PPPoE(Point-to-Point Protocol over Ethernet)是以太网上的点对点协议,是将点对点协议(PPP)封装在以太网(Ethernet)框架中的一种网络隧道协议。由于协议中集成了PPP协议,所以实现了传统以太网不能提供的身份验证、加密以及压缩等功能,也可用于缆线调制解调器(Cable Modem)和数字用户线路(DSL)等以以太网协议向用户提供接入服务的协议体系。本质上,它是一个允许在以太广播域中的两个以太网接口间创建点对点隧道的协议。与传统的接入方式相比,PPPoE具有较高的性能价格比,它在包括小区组网建设等一系列应用中被广泛采用,目前流行的宽带接入方式ADSL 就使用了PPPoE协议。

PPPoE协议是利用以太网资源,将以太网中的多台主机连接到AC(访问集中器)上,然后通过在以太网中运行PPP协议来实现用户的认证接入,其工作原理主要分为发现阶段和PPP会话阶段两个阶段。

PPPoE发现阶段

由于传统的PPP连接是创建在串行链路或拨号时创建的ATM虚电路连接上的,所有的PPP帧都可以确保通过电缆到达对端。但是以太网是多路访问的,每一个节点都可以相互访问。以太帧包含目的节点的物理地址(MAC地址),这使得该帧可以到达预期的目的节点。因此,在以太网上创建连接,交换PPP控制报文之前,两个端点都必须知道对端的MAC地址,这样才可以在控制报文中携带MAC地址。PPPoE发现阶段做的就是这件事。除此之外,在此阶段还将创建一个会话ID,以供后面交换报文使用。

PPP会话阶段

用户主机与接入集中器根据在发现阶段所协商的PPP会话连接参数进行PPP会话。一旦PPPoE会话开始,PPP数据就可以以任何其他的PPP封装形式发送。所有的以太网帧都是单播的。会话阶段主要分为三个步骤,如下所述。

  • 链路建立阶段:在这个阶段,运行PPP的设备会发送LCP报文来检测链路的可用情况,如果链路可用,则会成功建立链路,否则链路建立失败。
  • 验证阶段(可选):链路成功建立后,根据PPP帧中的验证选项来决定是否验证。如果需要验证,则开始PAP或者CHAP验证,验证成功后开始网络协商阶段。
  • 网络协商阶段:运行PPP的双方发送NCP报文来选择并配置网络层协议,双方会协商彼此使用的网络层协议(如IP或IPX),同时也会选择对应的网络层地址(如IP地址或IPX地址)。

    PPPoE本质上是在以太网帧中使用PPP协议的技术,其帧结构如图所示。

    对应于上节介绍的两个PPPoE协议会话的两个阶段,PPPoE帧格式也包括两种类型:发现阶段的以太网帧中的类型字段值为0x8863,PPP会话阶段的以太网帧中的类型字段值为0x8864,均已得到IEEE的认可。
    PPPoE分组中的版本(VER)字段和类型(TYPE)字段长度均为4比特,在当前版本PPPoE建议中这两个字段值都固定为0x1。代码(CODE)字段长度为8比特,根据两阶段中各种数据包的不同功能其值不同。在PPP会话阶段CODE字段值为0x00。会话ID(SESSION_ID)字段长度为16比特,在一个给定的PPP会话过程中它的值是固定不变的,其中值0XFFFF为保留值。长度(LENGTH)字段为16比特,指示PPPoE净荷长度。发现阶段的PPPoE载荷可以为空或由多个标记(TAG)组成,每个标记都是TLV(类型-长度-值)的结构。PPP会话阶段PPPoE载荷为点对点协议包。

计算机网络原理-数据链路层相关推荐

  1. 计算机网络原理超详解说

    计算机网络原理超详解说 前言 大家好,我是泰斗贤若如,一个专注于用大白话讲解技术的号主,这次给大家分享计算机网络原理的相关知识,我自认为文章内容已经很通俗易懂了,祝您阅读愉快! 一.计算机网络概述 时 ...

  2. 在计算机网络中光缆的工作原理是什么,计算机网络原理期中考试试卷(A)

    系 专业 班 学号 姓名 ┉┉┉┉┉┉┉┉┉┉┉密┉┉┉┉┉┉┉┉┉┉封┉┉┉┉┉┉┉┉┉┉线┉┉┉┉┉┉┉┉┉┉ 试卷类型: A 苏州科技学院 计算机网络原理 试卷 使用专业年级 计算机1111.1 ...

  3. 计算机网络原理课程描述,计算机网络原理

    <计算机网络原理>教学大纲 课程编号:135034 课程名称:<计算机网络原理> 学时/学分:64学时/3.5学分 先修课程:先修课程<计算机导论>.<数据结 ...

  4. 04741计算机网络原理知识点,04741计算机网络原理知识点整理.doc

    04741计算机网络原理知识点整理 1.计算机网络大发展 计算机网络从20世纪70年代开始发展,他的演变可以概括为 面向终端的计算机网络.计算机-计算机网络.开放式标准化网络以及因特网广泛应用和高速网 ...

  5. 计算机网络部分(共44题),2018年10月自考04741计算机网络原理试卷及答案

    2018年10月高等教育自学考试全国统一命题考试 计算机网络原理 试卷 (课程代码04741) 本试卷共5页,满分l00分,考试时间l50分钟. 考生答题注意事项: 1.本卷所有试题必须在答题卡上作答 ...

  6. 计算机网络原理和应用,计算机网络原理与应用

    计算机网络原理与应用 (清华大学出版社出版的图书) 语音 编辑 锁定 讨论 上传视频 <计算机网络原理与应用>是2011年清华大学出版社出版的图书,作者是袁礼. 书    名 计算机网络原 ...

  7. 2013年4月 计算机网络原理答案,2013年4月份自学考试计算机网络原理04741答案

    注:此试卷只有部分答案,为本人所做,如果错误,敬请原谅. 绝密★考试结束前 全国2013年4月高等教育自学考试 计算机网络原理试题 课程代码:04741 请考生按规定用笔将所有试题的答案涂.写在答题纸 ...

  8. 计算机网络部分(共44题),全国自学考试自考04741计算机网络原理4月考试真题

    2013年4月高等教育自学考试全国统一命题考试 计算机网络原理试题 课程代码:04741 本试卷满分100分,考试时间150分钟 考生答题注意事项: 1.本卷所有试卷必须在答题卡上作答.答在试卷和草稿 ...

  9. 计算机网络部分(共44题),计算机网络原理2013年4月真题及答案

    2013年4月高等教育自学考试全国统一命题考试 计算机网络原理试题 课程代码:04741 本试卷满分100分,考试时间150分钟 考生答题注意事项: 1.本卷所有试卷必须在答题卡上作答.答在试卷和草稿 ...

最新文章

  1. 关于Unity中的光照(六)
  2. System.Data.OracleClient requires Oracle client software version 8.1.7 or greater.
  3. [Spark][Hive][Python][SQL]Spark 读取Hive表的小例子
  4. 不会玩电脑怎么学计算机,不会玩电脑怎么学
  5. ffplay源码(版本:ffmpeg-4.2.1)
  6. 三、关于网页布局你该知道这些!(布局总结:标准流、浮动、定位)
  7. 一、Team Explorer的安装
  8. 面试题--------4、数据类型
  9. 使用 WebView2 封装一个生成 PDF 的 WPF 控件
  10. 深度学习笔记 —— 卷积层
  11. c# 多线程单例模式_线程安全C#单例模式
  12. 时间计算题100道_史上最全50道初中数学几何必刷题(上)
  13. itchat获取群聊用户的信息
  14. vss服务器状态失败_修复VSS 6.0错误的方法
  15. 相关系数——皮尔逊相关系数的公式及其理解
  16. HDU-1728-逃离迷宫
  17. 一文了解:微服务及其演进史
  18. TotalControl之手机录屏神器
  19. [本校测试] 魔王的消失Day2——By Hineven T3葬诗 提交答案题(爬山算法)
  20. 机械臂6D姿态检测(RGB、RGBD、雷达)综述

热门文章

  1. Hyper-V共享主机磁盘 2021-12-10
  2. 第一章 51单片机开发入门知识介绍
  3. WBO第一届世界区块链高峰论坛在香港国际亚洲博览馆正隆重举行
  4. CANN训练营第三季_昇腾CANN算子精讲课_TBE算子Sinh开发笔记_UT测试(三)
  5. redis1:概述、安装测试、基础知识、5大数据类型
  6. 不用管别人怎么评论自己_管好自己少管别人句子
  7. influxdb遇到时间点存储不了
  8. 接口查询的数据生成excel上传到七牛云
  9. 一个创业者的途中思考
  10. JAVA导出excel 直接弹出下载框