【计算机网络】第三章 数据链路层的共同问题、点对点协议PPP

3 数据链路层

3.1 数据链路层的共同问题

  • 数据链路 data link:实现必要的通信协议(数据链路层的通信协议曾称为通信规程)的硬件和软件 + 物理链路。

    即数据链路分为 物理链路 和 逻辑链路。

  • frame:点对点信道的数据链路层协议数据单元。

    (网络层的协议数据单元:IP数据报,简称为数据报、分组、包。)

  • 点对点信道在数据链路层通信时的主要步骤:

    1. 一个节点A的数据链路层把网络层交下来的IP数据报添加首部和尾部,封装成帧。
    2. 节点A 把帧发给 节点B的数据链路层。(暂时忽略物理层)
    3. 若节点B收到的帧无差错,则从收到的帧中提取IP数据报交给 它上面的网络层;否则,丢弃这个帧。

  • 三个共同的基本问题

    1. 封装成帧 framing

      • 含义:在一段数据的前后分别添加首部和尾部。

      • 相关概念:

        帧长:帧的数据部分长度 + 帧首部和尾部的长度。

        最大传送单元 MTU (Maximum Transfer Unit) :帧长的数据部分长度上限

      • 首部和尾部的作用:

        帧定界(确定帧的界限)

        当数据部分是 可打印的 ASCII码 组成的文本文件时,帧定界可以使用特殊的帧定界符:SOH(0x01, Start of Header)和EOT(0x04, End Of Transmission)。

        必要的控制信息


    2. 透明传输

      • 含义:无论什么样的比特组合的数据,都可以按照原样没有差错地通过数据链路层。

      • 解决透明传输问题,要求所传输的数据中的 任何8比特的组合 一定**不允许和用作 **帧定界的控制字符的比特编码 。

        • 对于文本文件的解决方法:字节填充(byte stuffing)/字符填充(character stuffing)。如果发送端在数据链路层的数据中出现了 SOH 或 EOT,则在其前加入转义字符 ESC(0x1B)。对转义字符本身也进行这种操作。(类似于C中的转义字符)

          在接收端接收时删去即可。


    3. 差错检测

      • 传输差错的类型

        比特差错;

        帧丢失、帧重复、帧失序。


      • 比特差错:比特在传输过程中可能会产生差错:1变为0 或 0变为1。传输差错之一。

      • 误码率 BER(Bit Error Rate):在一段时间内,传输错误的比特所占传输比特总数的比率。

      • 应对措施:循环冗余检验CRC (Cyclic Redundancy Check) P76

        • 在发送端,把数据M分成组,每组 k 比特。CRC运算在数据M的后面添加用于差错检测的n位冗余码。之后发送出去,一共发送 (k + m) 位。

        • n 位冗余码的计算

          二进制的模2运算(加法不进位) 计算 2 n M 2^n M 2nM。(相当于在M的后面加n个0)

          得到的(k + n)位数 除以 收发双方事先商定的长度为 (n + 1)位的除数P,得出商Q(没啥用)和余数R(R就是冗余码)

          为了进行检错而添加的冗余码称为 帧检验序列FCS, Frame Check Sequence)。


        • 在接收端,把接收到的数据以帧为单位进行 CRC检验:把收到的每一个帧都除以相同的除数P(模2运算),检查的达到的余数R。

        • 如果R = 0,则这个帧没有差错,接受accept。

          否则,帧出现差错,丢弃。(不能确定哪一位或几位出现了差错)


        • 可以用多项式来表示循环冗余检验CRC的过程。P77


      • 帧检验序列FCS的生成,循环冗余检验CRC都是用硬件完成的,不会延误数据的传输。

      • 只使用CRC技术,只能做到对帧的无差别接受。接受端丢弃的帧虽然被收到,但因有差错而被丢弃,并没有被接受

        可以近似认为,凡是接收端数据链路层接受的帧均无差错

        但不能无比特错误的传输还不是可靠传输(还可能存在其他传输错误)。


  • 区别对待的方法

    • 对于通信质量良好的有线传输链路,数据链路层的协议不使用确认和重传机制(即不向上层提供可靠传输服务,传输中出现的差错由上层来改正处理,如运输层的TCP协议)。
    • 对于通信质量较差的无线传输链路,使用确认和重传机制,并向上层提供可靠传输服务。

3.2 点对点协议PPP (Point to Point Protocol)

  • HDLC (High-level Data Link Control) 高级数据链路控制。可实现可靠传输,但如今已很少使用。

3.2.1 PPP协议的特点

  • PPP协议满足的需求

    • 简单;提供不可靠的数据报服务,无需纠错,无需序号,无需流量控制。进行CRC检验。

    • 封装成帧;

    • 透明性;

    • 多种网络层协议;在同一网络链路上支持多种网络层协议(如IP/ IPX)

    • 多种类型链路;能在多种类型的链路上运行。(串、并行;同步、异步;低速、高速;电、光;交换或非交换的)

      如PPPoE(PPP over Ethernet, 运行在以太网上的PPP协议)

    • 差错检测;

    • 检测连接状态;

    • 最大传送单元 MTU;

    • 网络层地址协商;提供一种机制使通信的两个网络层的实体可以通过协商 知道或可以配置 彼此的网络层地址。

    • 数据压缩协商。必须提供一种,但不要求标准化。


  • 特点:

    • 不支持多点线路段,只支持点对点的链路通信。
    • 只支持全双工链路。

  • 组成(3):

    1. 一个将IP数据报封装到串行链路的方法。
    2. 一个用来建立、配置和测试数据链路连接的链路控制协议 LCP(Link Control Protocol)
    3. 一套网络控制协议 NCP(Network Control Protocol),其中的每一个协议支持不同的网络层协议。

3.2.2 PPP帧的格式

在这里插入图片描述

F(0x7E):Flag。标志字段,帧定界符。1字节

地址字段A(0xFF)、控制字段C(0x03):预定义字段。没有携带PPP帧的信息。各1字节

协议字段:如图。

FCS:帧检验序列。


  • 字节填充

    当信息字段中出现帧定界符(0x7E)时,使用字节填充,转义符为0x7D。

    RFC1662 规定的填充方法:

    1. 信息字段中出现的0x7E => 2字节序列 (0x7D, 0x5E)。
    2. 出现的 0x7D => 2字节序列(0x7D, 0x5D)。
    3. 出现的 ASCII控制字符(小于0x20的) ,在其前加一个 0x7D,同时将该字符的编码加以改变。
  • 零比特填充

    在发送端,先扫描整个信息字段,只要发现有5个连续的1,就立即填入一个0。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值