全面剖析广域网技术PPP点对点协议,文末附常见面试题!

你好,这里是网络技术联盟站。

PPP 是一种广泛应用的链路层协议,旨在提供点对点网络通信的稳定性和可靠性。它是连接计算机世界的纽带,允许设备之间建立数据链路并进行通信。本文将深入探讨PPP的不同方面,包括其基础、协商过程、应用领域、安全性和未来展望。

让我们直接开始!

目录:

TOC

一、什么是PPP?

  • 英文全称:Point-to-Point Protocol
  • 中文意思:点对点协议

PPP最初由互联网工程任务组(IETF)于1989年提出作为标准,并于1994年成为工作标准。

PPP的详细规范由互联网工程任务组发布,其中最著名的规范是RFC 1661。

PPP用于促进点对点链路之间数据包的传输。最初设计用于串行连接,后来被广泛采用,尤其是由互联网服务提供商(ISP)用来启用拨号连接访问互联网。

PPP可以封装在多种数据链路层协议中,包括以太网(PPPoE)和异步传输模式(PPPoA)。这使得PPP适用于不同类型的网络连接。

PPP的设计和广泛采用帮助了互联网的普及,特别是在拨号互联网访问方面。它提供了一种可靠的方法来建立和维护连接,以便用户可以访问互联网。

PPP拓扑图

二、PPP的工作原理

PPP工作原理涉及三个主要组件:LCP(链路控制协议)、NCP(网络控制协议)以及认证协议。

2.1 链路控制协议(LCP)

LCP是PPP的关键组成部分,用于建立、维护和拆除数据链路。它负责协商连接参数,检测链路质量问题,并可选地进行身份验证。LCP定义了帧的格式,其中包括控制信息和选项字段,以确保数据的可靠传输。

2.2 网络控制协议(NCP)

NCP用于协商在数据链路上传输的网络层数据的属性和类型。PPP支持多种NCP,每种NCP用于不同的网络层协议,如IPv4、IPv6等。通过NCP,PPP使得不同网络层协议能够在同一物理链路上传输数据。

2.3 认证协议

PPP提供多种认证协议,以确保安全连接。其中包括:

  • PAP(Password Authentication Protocol):基于用户名和口令的认证。
  • CHAP(Challenge Handshake Authentication Protocol):采用挑战-应答方式的认证,提高了安全性。
  • MSCHAP(Microsoft CHAP)和MSCHAPv2:微软开发的认证协议,用于Windows环境中。

这些认证协议为用户提供了不同级别的安全性,可以根据需要进行配置。

三、PPP帧格式

PPP协议帧的字段如下:

3.1 Flag(标志)

  • 长度:1字节
  • PPP帧的起始和结束标志,始终为01111110(二进制)。
  • 标志字段的作用是帮助接收端识别帧的开始和结束。标志字段标记了帧的边界。

3.2 Address(地址)

  • 长度:1字节
  • 通常设置为二进制11111111。
  • 在现代PPP实现中,通常不使用地址字段,因为PPP主要用于点对点通信。

3.3 Control(控制)

  • 长度:1字节
  • 控制字段通常设置为二进制00000011。
  • 类似于地址字段,控制字段在现代PPP实现中通常不使用。

3.4 Protocol(协议)

  • 长度:2字节
  • 指示了Data字段中所包含数据的类型或协议。常见的PPP协议类型包括IPv4、IPv6、IPX、PPP LCP(链路控制协议)等。
  • Protocol字段的值决定了Data字段中数据的解释方式。

3.5 Data(数据)

  • 长度:可变
  • 包含了根据Protocol字段指定的协议类型的数据。例如,如果Protocol字段指定了IPv4协议,Data字段将包含IPv4数据包。

3.6 FCS(帧检验序列)

  • 长度:2或4字节
  • 用于帧的差错检测,以确保数据的完整性。通常采用CRC(循环冗余检查)算法计算。
  • FCS字段有助于接收端检测传输中的任何错误。

四、PPP链路建立过程

PPP链路建立过程主要有以下步骤:

4.1 PPP初始状态(Dead状态)

PPP会话的初始状态,此时链路尚未建立。

4.2 链路建立(Establish)阶段

在此阶段,PPP主要进行链路控制协议(LCP)协商。LCP协商包括认证协议类型、最大接收单元、魔术字、协议字段压缩等选项。如果LCP协商失败,PPP会回到Dead状态;如果成功,LCP进入Opened状态,表示链路建立,尽管网络层数据还不能传输。

4.3 认证阶段(Authenticate)

如果需要认证,此阶段进行PAP、CHAP、MSCHAP或MSCHAPv2认证。认证失败会导致LCP状态变为Down,PPP回到Dead状态;认证成功则LCP上报Success事件。

4.4 网络层协议协商阶段

如果配置了网络层协议,进入NCP协商阶段,如IPCP协商、IPv6CP协商。成功协商后,链路就会UP,可以开始传输指定的网络层数据。失败则NCP上报Down事件,进入Terminate阶段。

4.5 链路保持通信

PPP链路会一直保持通信,直至明确的LCP或NCP消息关闭链路,或发生外部事件(如用户干预)。

五、PPP认证

PPP支持多种认证方式,包括PAP、CHAP、MSCHAP和MSCHAPv2,它们在认证过程和安全性上有所不同。

5.1 PAP认证

  • Password Authentication Protocol
  • PAP是一种两次握手协议,使用明文传递用户名和密码。
  • 认证报文在网络上传输时以明文形式传递,因此安全性相对较低。
  • 适用于对网络安全性要求较低的环境。

5.2 CHAP认证

  • Challenge Handshake Authentication Protocol
  • CHAP是一种三次握手协议。
  • CHAP认证过程可以分为两种方式:认证方配置了用户名,认证方没有配置用户名。推荐使用认证方配置用户名的方式,以增强认证方的身份确认。
  • CHAP不传输用户密码,而是通过MD5算法将密码与随机报文ID组合计算结果传输,因此相对安全。

5.3 MSCHAP认证

  • Microsoft CHAP
  • MSCHAP是一种三次握手协议,与CHAP类似。
  • MSCHAP采用0x80加密算法,不同于CHAP。
  • 支持重传机制,允许被认证方在认证失败时重传认证相关信息,最多允许重传3次。

5.4 MSCHAPv2认证

  • Microsoft CHAP版本2
  • MSCHAPv2也是一种三次握手协议,类似于CHAP。
  • MSCHAPv2采用0x81加密算法,与CHAP不同。
  • 通过报文捎带的方式实现了认证方和被认证方的双向认证。
  • 支持重传机制,被认证方可以在认证失败时重传认证相关信息,最多允许重传3次。
  • 支持修改密码机制,允许被认证方在密码过期时提供新密码信息,以进行重新认证。

六、PPP地址协商

6.1 IP地址协商

  • 在PPP协商过程中,设备可以分为Client端和Server端两种角色。
  • Client端可以接受由Server端分配的IP地址,通常用于设备通过ISP访问互联网时,由ISP分配IP地址。
  • Server端可以为Client端分配IP地址,通过配置地址池或关联地址池,然后在接口下指定为Client端分配的IP地址或地址池,开始IPCP协商。
  • IP地址的分配顺序如下:
    • 如果AAA认证服务器为Client端设置了IP地址或地址池信息,Server端将采用这些信息为Client端分配IP地址。
    • 如果Client端认证时使用的ISP域下设置了为Client端分配IP地址的地址池,Server端将采用此地址池为Client端分配IP地址。
    • 如果Server端的接口下指定了为Client端分配的IP地址或地址池,Server端将采用此信息为Client端分配IP地址。

6.2 DNS服务器地址协商

  • 设备可以在IPCP协商过程中协商DNS服务器地址。
  • 设备可以充当Server端,为对端主机指定DNS服务器地址,使主机可以通过域名直接访问互联网。
  • 当设备通过PPP协议连接到运营商的接入服务器时,设备应配置为Client端,接收或请求接入服务器指定的DNS服务器地址,以便设备可以使用运营商提供的DNS来解析域名。

以上是IPV4模式,如果是IPV6呢?

6.3 IPv6地址分配

  • 在PPP的IPv6CP协商过程中,只协商出IPv6接口标识,而不直接协商出IPv6地址。
  • 客户端可以通过不同方式分配IPv6全球单播地址:
    • 方式1:客户端使用ND协议中的RA报文获取IPv6地址前缀,并将其与IPv6CP协商的IPv6接口标识结合,以生成IPv6全球单播地址。
    • 方式2:客户端通过DHCPv6协议申请IPv6全球单播地址,可以根据AAA授权为每个客户端分配不同的地址池,或者根据服务器端的IPv6地址查找匹配的地址池。
    • 方式3:客户端通过DHCPv6协议申请代理前缀,然后使用代理前缀为下游主机分配IPv6全球单播地址。

6.4 IPv6 DNS服务器地址分配

  • IPv6网络中,IPv6 DNS服务器地址的分配方式包括:
    • AAA授权:IPv6 DNS服务器地址可以由AAA授权,并通过ND协议中的RA报文分配给主机。
    • DHCPv6:DHCPv6客户端可以向DHCPv6服务器申请IPv6 DNS服务器地址。

七、PPP提供的/不提供的服务

7.1 PPP提供的服务

  1. 数据帧格式定义:PPP定义了要传输的数据的数据帧格式,包括标志、地址、控制、协议、数据和帧检验序列字段。
  2. 建立连接和数据交换程序:PPP规定了在两点之间建立连接和交换数据的程序,为点对点通信提供了基础。
  3. 身份验证规则:PPP规定了通信设备的身份验证规则,允许在连接建立时进行认证,例如PAP、CHAP等认证协议。
  4. 数据封装:PPP定义了将网络层数据封装在数据帧中的方法,支持多种网络层协议。
  5. 连接提供:PPP支持多个链接,允许同时建立和管理多个点对点连接。
  6. 网络通信地址:PPP为点对点通信提供网络通信的地址,允许设备之间进行唯一标识和通信。
  7. 多种网络层协议支持:PPP提供一系列服务,以支持多种网络层协议,如IPv4、IPv6、IPX等。

7.2 PPP不提供的服务

  1. 路由:PPP不具备路由功能,它侧重于点对点链路,不涉及数据的路由选择,这由高层协议(如IP)来处理。
  2. 寻址:PPP不处理网络层寻址,而是依赖于高层协议(如IP)来进行节点识别和寻址。
  3. 错误纠正:虽然PPP具备基本的错误检查功能,但高级错误纠正不是其本机功能。
  4. 压缩:PPP不提供数据压缩,数据压缩需要通过附加协议来实现。
  5. 多路复用:PPP是专为点对点链路而设计的,不支持在一个连接上多个数据流的多路复用。
  6. 加密:PPP不提供传输中的数据加密,此功能需要由高层协议(如IPsec)来处理。
  7. 网络层服务:PPP在数据链路层运行,不提供网络层寻址、路由和其他高级网络层服务,这些功能由高层协议(如IP)来处理。

八、PPP的优点

8.1 可扩展的协议

PPP是一个高度可扩展的协议,它可以支持多种不同的网络层协议,包括IPv4、IPv6、IPX等。这种灵活性使得PPP非常适用于不同网络环境和需求。

8.2 支持 CHAP 和 PAP 身份验证

PPP提供了强大的身份验证功能,包括CHAP(Challenge Handshake Authentication Protocol)和PAP(Password Authentication Protocol)。这些认证协议允许设备在建立连接时验证对端的身份,增强了网络的安全性。

8.3 链接质量管理

PPP具有链接质量管理功能,可以评估链接的质量。如果在链路上出现太多错误或干扰,PPP可以自动删除链接,以确保数据传输的可靠性。这对于移动网络或噪声干扰较多的环境非常有用。

8.4 管理链接变量

PPP允许管理链接的各种变量,包括最大可能的帧大小(MTU,Maximum Transmission Unit)。这使得PPP能够适应不同网络连接的要求,从而实现更高效的数据传输。

九、PPP的缺点

9.1 不适用于广域网

PPP最初设计用于点对点连接,因此不适用于广域网(WAN)等大范围的网络。在WAN中,其他协议如Frame Relay、MPLS等更为常见。

9.2 较高的开销

PPP的协议头和帧校验序列(FCS)占用了数据帧的一定比例,导致了相对较高的开销。这在低带宽连接中可能会浪费带宽。

9.3 缺乏路由功能

PPP不具备路由功能,它主要用于点对点连接,不涉及数据的路由选择。因此,路由必须由更高层的协议(如IP)来处理。

9.4 不提供广播支持

PPP通常不支持广播传输,这意味着它无法用于需要广播支持的网络,如以太网。

9.5 不适用于多点连接

PPP是为点对点链路设计的,不适用于一个连接上的多点通信。如果需要多点通信,需要其他协议,如HDLC或Frame Relay。

9.6 不提供加密

PPP不提供数据加密,这意味着数据在传输过程中可能会以明文形式传输,从安全性角度来看,它需要与其他协议(如IPsec)结合使用。

9.7 较弱的错误检查和校验

PPP虽然提供了基本的错误检查和校验,但不具备高级的错误纠正功能。在有高要求的环境中,可能需要额外的协议来处理错误纠正。

9.8 限制多链路聚合

PPP通常不支持多链路聚合(MLPPP),这是一种将多个PPP链路组合成一个更高带宽连接的技术。对于需要高带宽的场景,MLPPP可能更合适。

十、PPP常见面试题

10.1 你了解ppp协议吗?

PPP是一种用于在点对点连接上建立通信会话的协议。它最初是为拨号上网、DSL等点对点通信场景而设计的,但它也可以用于其他连接类型,如串行连接。PPP是一种可靠的点对点通信协议,具有多协议支持、强大的身份验证、链路质量管理和配置灵活性等特点。

10.2 ppp链路的建立过程是怎样的?

PPP链路的建立过程通常包括以下步骤:

  • 链路建立:PPP初始状态为不活动(Dead)状态,当物理层连接(例如拨号或物理线路连接)建立后,PPP会进入链路建立(Establish)阶段。
  • LCP协商:在链路建立阶段,主要进行LCP协商。
  • LCP协商结果:如果LCP协商失败,LCP会上报Fail事件,PPP回到Dead状态,连接被终止。如果LCP协商成功,LCP进入Opened状态,LCP会上报Up事件,表示链路已经建立。此时,对于网络层而言,PPP链路还没有建立,还不能够在上面成功传输网络层报文。
  • 认证协商:如果在LCP协商中配置了认证要求,接下来进入Authenticate阶段,开始PAP、CHAP、MSCHAP或MSCHAPv2认证。认证协商用于验证连接的两端身份。
  • 认证结果:如果认证失败,LCP会上报Fail事件,进入Terminate阶段,拆除链路,LCP状态转为Down,PPP回到Dead状态。如果认证成功,LCP会上报Success事件。
  • 网络协议协商:如果在认证成功后配置了网络层协议(如IPCP协商、IPv6CP协商),进入Network协商阶段,进行NCP协商。NCP协商确定链路上所传输的网络层报文的一些属性和类型。
  • NCP协商结果:如果NCP协商成功,链路就会UP,此时可以开始承载协商指定的网络层报文。如果NCP协商失败,NCP会上报Down事件,进入Terminate阶段。对于IPCP协商,如果接口配置了IP地址,只有在IPCP协商通过后,PPP才能承载IP报文。
  • 保持通信:一旦PPP链路建立成功,它将一直保持通信,直至有明确的LCP或NCP消息关闭这条链路,或发生了某些外部事件(例如用户的干预)。

10.3 CHAP和PAP的区别

CHAP和PAP是两种用于身份验证的协议,它们有一些重要区别:

下面是关于CHAP和PAP身份验证协议的区别的Markdown表格:

特点

CHAP

PAP

安全性

高安全性,密码不明文传输,采用挑战-响应机制。

较低安全性,密码以明文形式传输。

挑战-响应机制

支持,服务器发送挑战给客户端,客户端生成响应。

不支持,客户端直接发送密码给服务器。

防护中间人攻击

强大,难以受到密码截获攻击,挑战是随机的。

弱,容易受到中间人攻击,因为密码是明文传输。

身份验证方式

双向认证,客户端和服务器互相验证。

单向认证,只客户端验证自己。

定期重新认证支持

支持,可以定期重新进行身份验证。

不支持,只在连接建立时进行一次验证。

10.4 讲一下chap认证具体过程

  • 发起认证请求:CHAP的认证过程始于客户端发起认证请求。客户端向服务器发送一个认证请求,请求连接并提供用户名。
  • 服务器发送挑战:服务器收到客户端的认证请求后,随机生成一个挑战(Challenge)字符串,并将其发送回客户端。
  • 客户端响应挑战:客户端接收服务器发送的挑战后,使用自己的密码(或密钥)和挑战字符串一起进行哈希运算,生成一个响应字符串(Response)。
  • 客户端发送响应:客户端将生成的响应字符串发送回服务器,服务器收到后会执行相同的哈希运算,使用事先存储的客户端密码。
  • 服务器验证:服务器收到客户端的响应后,将其与自己计算出的期望响应进行比较。如果两者匹配,服务器将认证成功;否则,认证失败。
  • 认证结果通知:服务器向客户端发送认证结果。如果认证成功,服务器通知客户端认证成功;如果认证失败,服务器通知客户端认证失败。
  • 定期重新认证:CHAP支持定期重新认证,这意味着在连接过程中,服务器可以定期发送新的挑战,并要求客户端重新进行响应。这有助于提高连接的安全性,因为即使攻击者截获了之前的挑战和响应,他们无法轻松重播,因为挑战是随机的。

10.5 ppp第二阶段 ncp做了啥事?

  • 选择和配置网络层协议:NCP协商确定要在PPP链路上传输的网络层协议。这可以包括IP(Internet Protocol)、IPv6、IPX(Internetwork Packet Exchange)等。NCP会协商确定要使用的网络层协议,以便链路上传输相应的网络层数据。
  • 分配网络层参数:NCP还协商网络层参数,例如IP地址、子网掩码、DNS服务器地址等。这些参数需要在PPP链路上配置,以便通信设备在链路上正确地路由和传输网络层数据。
  • 建立网络层连接:一旦NCP协商成功,网络层连接就会被建立。这意味着链路已经准备好传输特定的网络层协议的数据。例如,在IPCP(IP Control Protocol)协商成功后,链路就可以开始传输IP数据包。
  • 监控网络层连接:NCP会监视网络层连接的状态,以确保连接的稳定性。如果连接出现问题,NCP可以触发链路的重新协商或终止。

总的来说,第二阶段的NCP协商是为了在PPP链路上协商并配置网络层协议和参数,确保链路能够成功传输特定的网络层数据。这有助于建立有效的通信连接,以便在点对点连接中传输各种网络层协议的数据。

10.6 什么是点对点协议复用?

PPP复用允许在单个PPP链路上传输多种网络层协议,如IPv4和IPv6。这意味着您可以在同一物理链路上传输不同协议的数据,使得点对点连接更加灵活和高效。

10.7 点对点协议使用什么设备?

点对点协议通常使用调制解调器或网络接口设备来建立直接连接。这些设备可用于通过电话线、光纤、DSL等传输介质在两个节点之间建立物理连接。

10.8 什么是点对点协议封装?

点对点协议封装是一种过程,其中更高层的数据(通常是网络层数据,如IP数据包)被嵌入到PPP帧中,以便在点对点链路上传输。封装的过程通常涉及将网络层数据包装在PPP帧中,包括添加帧头、帧尾、地址、控制和校验字段等。这种封装允许不同网络层协议的数据在相同物理链路上传输。

总结

本文瑞哥给大家详细介绍了PPP协议,相信看完后大家肯定有所收获,文章最后还给大家分享了几道PPP协议常见的面试题,希望大家在找工作时能够拿捏PPP协议。

讲到PPP协议,必须要讲PPPoE,这个我们明天讲一下,今天就到这里,感谢阅读!

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!