全面剖析广域网技术PPP点对点协议,文末附常见面试题!
来源:网络技术联盟站
你好,这里是网络技术联盟站。
PPP 是一种广泛应用的链路层协议,旨在提供点对点网络通信的稳定性和可靠性。它是连接计算机世界的纽带,允许设备之间建立数据链路并进行通信。本文将深入探讨PPP的不同方面,包括其基础、协商过程、应用领域、安全性和未来展望。
让我们直接开始!
目录:
一、什么是PPP?
二、PPP的工作原理
2.1 链路控制协议(LCP)
2.2 网络控制协议(NCP)
2.3 认证协议
三、PPP帧格式
3.1 Flag(标志)
3.2 Address(地址)
3.3 Control(控制)
3.4 Protocol(协议)
3.5 Data(数据)
3.6 FCS(帧检验序列)
四、PPP链路建立过程
4.1 PPP初始状态(Dead状态)
4.2 链路建立(Establish)阶段
4.3 认证阶段(Authenticate)
4.4 网络层协议协商阶段
4.5 链路保持通信
五、PPP认证
5.1 PAP认证
5.2 CHAP认证
5.3 MSCHAP认证
5.4 MSCHAPv2认证
六、PPP地址协商
6.1 IP地址协商
6.2 DNS服务器地址协商
6.3 IPv6地址分配
6.4 IPv6 DNS服务器地址分配
七、PPP提供的/不提供的服务
7.1 PPP提供的服务
7.2 PPP不提供的服务
八、PPP的优点
8.1 可扩展的协议
8.2 支持 CHAP 和 PAP 身份验证
8.3 链接质量管理
8.4 管理链接变量
九、PPP的缺点
9.1 不适用于广域网
9.2 较高的开销
9.3 缺乏路由功能
9.4 不提供广播支持
9.5 不适用于多点连接
9.6 不提供加密
9.7 较弱的错误检查和校验
9.8 限制多链路聚合
十、PPP常见面试题
10.1 你了解ppp协议吗?
10.2 ppp链路的建立过程是怎样的?
10.3 CHAP和PAP的区别
10.4 讲一下chap认证具体过程
10.5 ppp第二阶段 ncp做了啥事?
10.6 什么是点对点协议复用?
10.7 点对点协议使用什么设备?
10.8 什么是点对点协议封装?
总结
一、什么是PPP?
英文全称:Point-to-Point Protocol 中文意思:点对点协议
PPP最初由互联网工程任务组(IETF)于1989年提出作为标准,并于1994年成为工作标准。
PPP的详细规范由互联网工程任务组发布,其中最著名的规范是RFC 1661。
PPP用于促进点对点链路之间数据包的传输。最初设计用于串行连接,后来被广泛采用,尤其是由互联网服务提供商(ISP)用来启用拨号连接访问互联网。
PPP可以封装在多种数据链路层协议中,包括以太网(PPPoE)和异步传输模式(PPPoA)。这使得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提供的服务
数据帧格式定义:PPP定义了要传输的数据的数据帧格式,包括标志、地址、控制、协议、数据和帧检验序列字段。
建立连接和数据交换程序:PPP规定了在两点之间建立连接和交换数据的程序,为点对点通信提供了基础。
身份验证规则:PPP规定了通信设备的身份验证规则,允许在连接建立时进行认证,例如PAP、CHAP等认证协议。
数据封装:PPP定义了将网络层数据封装在数据帧中的方法,支持多种网络层协议。
连接提供:PPP支持多个链接,允许同时建立和管理多个点对点连接。
网络通信地址:PPP为点对点通信提供网络通信的地址,允许设备之间进行唯一标识和通信。
多种网络层协议支持:PPP提供一系列服务,以支持多种网络层协议,如IPv4、IPv6、IPX等。
7.2 PPP不提供的服务
路由:PPP不具备路由功能,它侧重于点对点链路,不涉及数据的路由选择,这由高层协议(如IP)来处理。
寻址:PPP不处理网络层寻址,而是依赖于高层协议(如IP)来进行节点识别和寻址。
错误纠正:虽然PPP具备基本的错误检查功能,但高级错误纠正不是其本机功能。
压缩:PPP不提供数据压缩,数据压缩需要通过附加协议来实现。
多路复用:PPP是专为点对点链路而设计的,不支持在一个连接上多个数据流的多路复用。
加密:PPP不提供传输中的数据加密,此功能需要由高层协议(如IPsec)来处理。
网络层服务: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,这个我们明天讲一下,今天就到这里,感谢阅读!
往期推荐