河南建设监理协会网站电话,网站建设进度计划表,深圳住建局官网,规划设计咨询公司简介
PPPoE#xff08;Point-to-Point Protocol over Ethernet#xff09;是一种在以太网上封装PPP协议的方式#xff0c;常用于在宽带接入中进行拨号。
PPPoE的拨号原理如下#xff1a;
客户端发起PPPoE Active Discovery Initiation (PADI)报文#xff0c;广播到网络…简介
PPPoEPoint-to-Point Protocol over Ethernet是一种在以太网上封装PPP协议的方式常用于在宽带接入中进行拨号。
PPPoE的拨号原理如下
客户端发起PPPoE Active Discovery Initiation (PADI)报文广播到网络中的所有PPPoE服务器表示客户端想要建立连接。PPPoE服务器收到PADI报文后回复PPPoE Active Discovery Offer (PADO)报文告知客户端当前服务器的信息包括服务名、会话ID等。客户端从PADO报文中选择一个服务器并发送PPPoE Active Discovery Request (PADR)报文请求连接到该服务器。PPPoE服务器收到PADR报文后向客户端发送PPPoE Active Discovery Session-confirmation (PADS)报文告知客户端连接成功。客户端和服务器建立PPPoE会话并进行身份认证、配置等工作。PPPoE会话建立后客户端和服务器开始进行数据传输。
在PPPoE会话建立之前客户端必须先完成物理层和数据链路层的连接也就是完成以太网的连接。此时客户端和服务器之间还没有IP地址和路由信息只能通过PPP协议进行数据传输。在建立了PPPoE会话之后客户端和服务器可以互相分配IP地址并通过路由协议交换路由信息完成最终的数据传输。
需要注意的是不同的ISP可能会有不同的PPPoE参数设置例如MTU大小、认证方式等因此在进行PPPoE拨号时需要按照ISP的要求进行设置。
PPPOE拨号流程
PADI
在PPPoE中PPPoE客户端需要发送PADIPPPoE Active Discovery Initiation消息以寻找PPPoE服务器。PADI消息包含以下字段
Version一个1字节的字段用于指示PADI消息使用的PPPoE版本。目前的版本号为1。Type一个1字节的字段用于指示PADI消息的类型。在PADI消息中该字段的值为1。Code一个1字节的字段用于指示PADI消息的代码。在PADI消息中该字段的值为0。Session ID一个2字节的字段用于标识PPPoE会话。在PADI消息中该字段的值为0。Payload一个可变长度的字段用于包含PADI消息的有效载荷。在PADI消息中有效载荷为空。
PADI消息的详细解释如下
Version字段该字段用于指示PADI消息所使用的PPPoE版本。目前PPPoE版本号为1因此在PADI消息中Version字段的值为1。Type字段该字段用于指示PADI消息的类型。在PADI消息中Type字段的值为1表示该消息是一个发现消息。Code字段该字段用于指示PADI消息的代码。在PADI消息中Code字段的值为0表示该消息是一个发现请求消息。Session ID字段该字段用于标识PPPoE会话。在PADI消息中Session ID字段的值为0因为在这个阶段还没有建立PPPoE会话。Payload字段该字段用于包含PADI消息的有效载荷。在PADI消息中Payload字段为空因为在发现阶段不需要任何数据。
PADO
当PPPoE服务器收到PPPoE Active Discovery Initiation (PADI) 消息后会返回一个PPPoE Active Discovery Offer (PADO) 消息。PADO消息用于向PPPoE客户端提供PPPoE服务器的相关信息以便客户端选择一个服务器与之建立PPPoE会话。
PADO消息包含以下字段
Version一个1字节的字段用于指示PADO消息使用的PPPoE版本。目前的版本号为1。Type一个1字节的字段用于指示PADO消息的类型。在PADO消息中该字段的值为2。Code一个1字节的字段用于指示PADO消息的代码。在PADO消息中该字段的值为0。Session ID一个2字节的字段用于标识PPPoE会话。在PADO消息中该字段的值与客户端在PADI消息中发送的Session ID字段的值相同。Payload一个可变长度的字段用于包含PADO消息的有效载荷。在PADO消息中有效载荷包含服务器提供的信息例如服务器的MAC地址、服务名称、最大传输单元MTU等。
PADO消息的详细解释如下
Version字段该字段用于指示PADO消息所使用的PPPoE版本。目前PPPoE版本号为1因此在PADO消息中Version字段的值为1。Type字段该字段用于指示PADO消息的类型。在PADO消息中Type字段的值为2表示该消息是一个提供消息。Code字段该字段用于指示PADO消息的代码。在PADO消息中Code字段的值为0表示该消息是一个提供成功消息。Session ID字段该字段用于标识PPPoE会话。在PADO消息中Session ID字段的值与客户端在PADI消息中发送的Session ID字段的值相同。Payload字段该字段用于包含PADO消息的有效载荷。在PADO消息中有效载荷包含服务器提供的信息例如服务器的MAC地址、服务名称、最大传输单元MTU等。PPPoE客户端可以使用这些信息来选择一个合适的PPPoE服务器并建立PPPoE会话。
PADR
当PPPoE客户端收到PPPoE Active Discovery Offer (PADO) 消息后会发送PPPoE Active Discovery Request (PADR) 消息来选择一个PPPoE服务器并建立PPPoE会话。PADR消息包含以下字段
Version一个1字节的字段用于指示PADR消息使用的PPPoE版本。目前的版本号为1。Type一个1字节的字段用于指示PADR消息的类型。在PADR消息中该字段的值为1。Code一个1字节的字段用于指示PADR消息的代码。在PADR消息中该字段的值为0。Session ID一个2字节的字段用于标识PPPoE会话。在PADR消息中该字段的值与客户端在PADI消息中发送的Session ID字段的值相同。Payload一个可变长度的字段用于包含PADR消息的有效载荷。在PADR消息中有效载荷包含客户端选择的PPPoE服务器的相关信息例如服务器的MAC地址、服务名称等。
PADR消息的详细解释如下
Version字段该字段用于指示PADR消息所使用的PPPoE版本。目前PPPoE版本号为1因此在PADR消息中Version字段的值为1。Type字段该字段用于指示PADR消息的类型。在PADR消息中Type字段的值为1表示该消息是一个请求消息。Code字段该字段用于指示PADR消息的代码。在PADR消息中Code字段的值为0表示该消息是一个请求成功消息。Session ID字段该字段用于标识PPPoE会话。在PADR消息中Session ID字段的值与客户端在PADI消息中发送的Session ID字段的值相同。Payload字段该字段用于包含PADR消息的有效载荷。在PADR消息中有效载荷包含客户端选择的PPPoE服务器的相关信息例如服务器的MAC地址、服务名称等。客户端发送这些信息以请求与服务器建立PPPoE会话。
PADS
当PPPoE服务器收到PPPoE Active Discovery Request (PADR) 消息后如果服务器可以接受该请求并准备好与客户端建立PPPoE会话则服务器会返回一个PPPoE Active Discovery Session-confirmation (PADS) 消息。PADS消息用于确认PPPoE会话的建立并向客户端提供会话的相关信息。
PADS消息包含以下字段
Version一个1字节的字段用于指示PADS消息使用的PPPoE版本。目前的版本号为1。Type一个1字节的字段用于指示PADS消息的类型。在PADS消息中该字段的值为3。Code一个1字节的字段用于指示PADS消息的代码。在PADS消息中该字段的值为0。Session ID一个2字节的字段用于标识PPPoE会话。在PADS消息中该字段的值与客户端在PADR消息中发送的Session ID字段的值相同。Payload一个可变长度的字段用于包含PADS消息的有效载荷。在PADS消息中有效载荷包含服务器提供的信息例如客户端的IP地址、服务器的IP地址、最大传输单元MTU等。
PADS消息的详细解释如下
Version字段该字段用于指示PADS消息所使用的PPPoE版本。目前PPPoE版本号为1因此在PADS消息中Version字段的值为1。Type字段该字段用于指示PADS消息的类型。在PADS消息中Type字段的值为3表示该消息是一个会话确认消息。Code字段该字段用于指示PADS消息的代码。在PADS消息中Code字段的值为0表示该消息是一个会话确认成功消息。Session ID字段该字段用于标识PPPoE会话。在PADS消息中Session ID字段的值与客户端在PADR消息中发送的Session ID字段的值相同。Payload字段该字段用于包含PADS消息的有效载荷。在PADS消息中有效载荷包含服务器提供的信息例如客户端的IP地址、服务器的IP地址、最大传输单元MTU等。客户端接收这些信息以确认会话的建立并使用它们来配置PPPoE接口以实现数据传输。
PPP身份验证
PPPoE建立连接后后续的验证流程包括PPP身份验证和PPPoE会话阶段。
PPP身份验证是在PPP协议层进行的。PPP身份验证是为了验证客户端是否有访问服务器资源的权限。PPP身份验证分为PAP和CHAP两种方式。
PAP
PAPPassword Authentication Protocol是一种简单的密码认证协议。PAP验证流程如下
客户端将用户名和密码以明文形式发送给服务器。服务器接收到用户名和密码后将其与存储在服务器上的用户名和密码进行比较。如果用户名和密码匹配则服务器发送一个认证成功消息给客户端。否则服务器发送一个认证失败消息给客户端。
CHAP
CHAPChallenge-Handshake Authentication Protocol是一种更加安全的密码认证协议。CHAP验证流程如下
客户端向服务器端发送身份认证请求请求认证自己的身份。服务器端接收到请求后生成一个随机数作为挑战发送给客户端。客户端收到挑战后将挑战和密码通过某种加密算法如MD5进行加密得到一个响应值并将响应值发送给服务器端。服务器端收到响应值后使用相同的加密算法对挑战和密码进行加密如果加密结果与客户端发送的响应值相同则认证通过。 在这个过程中客户端和服务器端需要协商使用哪种加密算法。CHAP协议定义了三种加密算法MD5、SHA-1和Windows NT Hash。这些算法是在协议中被硬编码的客户端和服务器端在协商加密算法时会根据协议规定的算法列表进行选择。
具体来说在CHAP协议中挑战和响应值都是通过加密算法进行处理的。客户端和服务器端在进行加密时会使用预共享的密码或密钥作为加密密钥。在这个过程中客户端和服务器端都知道密码但密码并不会在通信中明文传输而是在加密过程中进行处理以保证通信的安全性。
总的来说CHAP协议的加密算法是在客户端和服务器端的挑战-响应过程中进行协商的客户端和服务器端会根据协议定义的加密算法列表选择一种算法并使用预共享的密码进行加密以实现身份认证和通信的安全性。
PPP LCP Configure
在PPP链路层会话建立的过程中客户端和服务器端之间需要进行链路参数的协商。协商的内容包括数据压缩、最大传输单元MTU、错误检测和校验、协议类型等等。协商的过程需要双方相互发送LCP Configure-Request和LCP Configure-Ack或LCP Configure-Nak或LCP Configure-Reject消息直到双方都同意使用相同的链路参数为止。
当PPP客户端想要和PPP服务器端建立PPP链路层会话时它会向服务器端发送LCP Configure-Request消息。这个消息包含了客户端希望协商的链路参数例如MTU大小、最大协商值等等。PPP服务器收到Configure-Request消息后会向客户端回复Configure-Ack、Configure-Nak或Configure-Reject消息告知客户端是否接受这些链路参数或提供可选的链路参数值。如果接收到的是Configure-Ack消息则说明链路参数已经协商完成PPP链路层会话建立成功如果接收到的是Configure-Nak或Configure-Reject消息则说明链路参数协商失败需要重新协商。
客户端接收到PADS消息后向服务器发送一个PPP LCP Configure-Request消息以协商PPP连接的配置参数。服务器接收到客户端发送的Configure-Request消息后向客户端发送一个PPP LCP Configure-Ack消息以确认协商结果。客户端和服务器通过发送PPP NCP Configure-Request和Configure-Ack消息来协商网络控制协议NCP的配置参数以完成PPPoE会话的建立。