计算机网络——数据链路层(点对点协议PPP)

点对点协议PPP的概述

         对于点对点的链路,目前使用得最广泛的数据链路层协议点对点协议 PPP (Point-to-Point Protocol)

        它主要应用于两个场景:

        用户计算机与ISP之间的链路层协议就是点对点协议 PPP,1999年公布了回以在以太网上运行的PPP协议,即PPPOE。

        PPPOE:它可以使数字用户线路,电路调制解调器以及以太网等宽带接入技术,利用以太网接口的形式,为用户提供服务。

         他还广泛用于广域网路由器之间的专用线路

点对点协议PPP的要求 

•    简单:这是首要的要求(最复杂的功能TCP实现,  IP也简单且不可可靠),因此数据链路层的PPP没有必要比 IP复杂;

PPP的简单:  每收到一个帧,进行CRC检验,如果CRC检验正确, 就收下这个帧,反之,就丢弃这个帧,其他什么也不做。

•    封装成帧:必须规定特殊的字符作为帧定界符;

•    透明性:必须保证数据传输的透明性;

•    多种网络层协议:支持多种网络层协议(IP/IPX);

•    多种类型链路:能够在多种类型的链路上运行;

  • 串行的、并行的;
  • 同步链路、异步链路;
  • 低速链路、高速链路;
  • 交换的(动态的)、非交换的(静态的);
  • 电的、光的;
  • PPPoE ( PPP over Ethernet) 

•    差错检测:对收到的帧进行检测,并丢弃有差错的帧

•   检测连接状态:能够及时自动检测出链路是否处于正常工作状态。

•    最大传送单元:必须对每一种类型的点对点链路设置最大传送单元MTU 的标准默认值,促进各种实现之间的互操作性。

需要强调的是,MTU是数据链路层的帧可以载荷的数据部分的最大长度,而不是帧的总长度

•    网络层地址协商: 必须提供一种机制使通信的两个网络层实体能够通过协商知道或能够配置彼此的网络层地址。

•   数据压缩协商:必须提供一种方法来协商使用数据压缩算法

        在 TCP/IP协议族中,可靠传输由运输层的TCP协议负责,因此数据链路层的PPP协议不需要进行纠错,不需要设置序号,也不需要进行流量控制。

        PPP协议不支持多点线路(即一个主站轮流和链路上的多个从站进行通信),而只支持点对点的链路通信。此外,PPP协议只支持全双工链路。

 ppp协议的组成

PPP协议有三个组成部分:

        1. 一个将IP数据报封装到串行链路的方法:PPP既支持异步链路(无奇偶检验的8比特数据),也支持面向比特的同步链路。IP 数据报在PPP帧中就是其信息部分。这个信息部分的长度受最大传送单元MTU的限制。 

        2.链路控制协议 LCP(Link ControlProtocol):用来建立、配置和测试数据链路连接,通信的双方可协商一些选项。

        3.网络控制协议NCP (Network Control Protocol):其中的每一个协议支持不同的网络层协议,如IP、OSl的网络层、DECnet和 AppleTalk等。

ppp的帧格式 

        由上图所示,你可以看到协议不同,其帧的数据载荷所表达类型也有所不同。     

 PPP帧的透明传输——面向字节的异步链路

 数据帧中出现帧定界

数据帧中出现转义字符

数据帧中出现ASCLL码控制字符

接收方的处理就完全与发送方相反即可: 

PPP帧的透明传输——面向比特的同步链路
 

 PPP帧的差错检测

PPP的工作状态 

        LCP如何配置协调:LCP开始协商一些配置选项,即发送LCP的配置请求帧。这是个PPP帧,其协议字段置为LCP对应的代码,而信息字段包含特定的配置请求。链路的另端可以发送以下几种响应中的一种:
        (1)配置确认帧(Configure-Ack):所有选项都接受。
        (2)配置否认帧(Configure-Nak):所有选项都理解但不能接受。
        (3)配置拒绝帧(Configure-Reject):选项有的无法识别或不能接受,需要协商。
        LCP配置选项包括链路上的最大帧长、所使用的鉴别协议的规约(如果有的话),以及不使用PPP帧中的地址和控制字段(因为这两个字段的值是固定的,没有任何信息量,可以在 PPP帧的首部中省略这两个字节)。

        鉴别状态:

        协商结束后双方就建立了LCP链路,接着就进入“鉴别”状态。在这一状态,只允许传送 LCP协议的分组、鉴别协议的分组以及监测链路质量的分组。

        若使用口令鉴别协议PAP,则需要发起通信的一方发送身份标识符和口令。系统可允许用户重试若干次。如果需要有更好的安全性,则可使用更复杂的口令握手鉴别协议CHAP。


        网络层状态:

        在“网络层协议”状态,PPP链路两端的网络控制协议 NCP根据网络层的不同协议互相交换网络层特定的网络控制分组。PPP 协议两端的网络层可以运行不同的网络层协议,但仍然可使用同一个PPP协议进行通信。

        举例:通过NCP配置网络层协议。NCP是一组协议,用于配置特定的网络层协议,如IP、IPX等。例如,IPCP(IP Control Protocol)用于配置IP协议的参数,包括分配IP地址。


        连接释放:

        通信完毕时,  NCP释放网络层连接,收回原来分配出去的 IP 地址。接着, LCP 释放数据链路层连接。最后释放的是物理层的连接。

可见,由NCP和LCP可见,PPP 协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容 

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-09 17:10:11       4 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 17:10:11       5 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 17:10:11       4 阅读
  4. Python语言-面向对象

    2024-07-09 17:10:11       4 阅读

热门阅读

  1. C++多线程学习笔记

    2024-07-09 17:10:11       11 阅读
  2. 实现基于Spring Cloud的事件驱动微服务

    2024-07-09 17:10:11       9 阅读
  3. js使用websocket,vue使用websocket,copy即用

    2024-07-09 17:10:11       8 阅读
  4. PostgreSQL的扩展(extensions)-常用的扩展-pg_profile

    2024-07-09 17:10:11       8 阅读
  5. Spring Boot整合MongoDB实现事务管理

    2024-07-09 17:10:11       10 阅读
  6. Solana RPC 的工作原理

    2024-07-09 17:10:11       9 阅读
  7. 音频demo:使用faad2将AAC数据解码出PCM数据

    2024-07-09 17:10:11       9 阅读
  8. SQLAlchemy配置连接多个数据库

    2024-07-09 17:10:11       13 阅读
  9. Android C++系列:Linux常用函数和工具

    2024-07-09 17:10:11       9 阅读
  10. vb.net读取mssql的image字段后,如何转换成二进制

    2024-07-09 17:10:11       9 阅读
  11. 常用 Android 反编译工具apktooldex2jarenjarifyjd-guijadx

    2024-07-09 17:10:11       5 阅读
  12. Android Gradle 开发与应用 (十): Gradle 脚本最佳实践

    2024-07-09 17:10:11       11 阅读