PPPoE简介

一、简介

PPPoE使用Client/Server模型。PPPoE ClientPPPoE Server发起连接请求,在会话协商通过后,PPPoE ServerPPPoE Client提供接入控制、认证等功能。

 

二、报文格式

PPPoE的报文格式就是在以太网帧中携带PPP报文。

 

各字段解释如下:

Destination_address:目的设备的以太网MAC地址。对于Discovery 阶段,该域是单播或者广播地址:PPPoE Client 寻找PPPoE Server 的过程使用广播地址,确认PPPoE Server 后使用单播地址。对于Session 阶段,该域必须是Discovery 阶段已确定的通信对方的单播地址。

Source_address:源设备的以太网MAC 地址。

Ether_type:设置为0x8863Discovery 阶段或拆链阶段)或者0x8864Session 阶段)。

Ver4bitsPPPoE版本号,值为0x1

Type4bitsPPPoE 类型,值为0x1

Code8bitsPPPoE 报文类型。Code 域为0x00,表示会话数据;Code域为0x09,表示PADI 报文;Code 域为0x07,表示PADO PADT 报文;Code 域为0x19,表示PADR 报文;Code 域为0x65,表示PADS 报文。报文的具体情况请参见附录部分。

Session_ID16bits,对于一个给定的PPP会话,该值是一个固定值,并且与以太网Source_address Destination_address 一起实际地定义了一个PPP 会话。值0xffff 为将来的使用保留,不允许使用。【作用相当于TCP/UDP的端口号

Length16bitsPPPoE Payload 域长度。

 

三、工作过程

PPPoE的协商过程如图所示:

 

PPPoE可分为三个阶段,即Discovery阶段、Session阶段和Terminate阶段。 【对于Terminate阶段:PPP通信双方应该使用PPP协议自身(比如PPP终结报文)来结束PPPoE会话,在无法使用PPP协议结束会话时,可以使用PADT报文。】

 

# Discovery阶段:

Discovery阶段由四个过程组成。Discovery阶段完成之后,通信双方都会知道PPPoESession_ID以及对方以太网地址,它们共同确定了唯一的PPPoE Session

(1) PPPoE Client 广播发送一个PADI 报文,在此报文中包含PPPoE Client 想要得到的服务类型信息。

(2) 所有的PPPoE Server 收到PADI 报文之后,将其中请求的服务与自己能够提供的服务进行比较,如果可以提供,则单播回复一个PADO 报文。

(3) 根据网络的拓扑结构,PPPoE Client 可能收到多个PPPoE Server 发送的PADO 报文,PPPoE Client 选择最先收到的PADO 报文对应的PPPoEServer 做为自己的PPPoE Server,并单播发送一个PADR 报文。

(4) PPPoE Server 产生一个唯一的会话IDSESSION ID),标识和PPPoEClient 的这个会话,通过发送一个PADS 报文把会话ID 发送给PPPoEClient,如果没有错误,会话建立后便进入PPPoE Session 阶段。

 

# Session阶段:

PPPoE Discovery阶段的工作为PPPoE ClientPPPoE之间建立了Session,之后PPPoE便进入了Session阶段。Session阶段可分为两部分,一是PPP协商阶段,二是PPP报文传输阶段。

 

PPPoE Session上的PPP协商和普通的PPP协商方式一致,分为LCP、认证、NCP三个阶段。

(1) LCP 阶段主要完成建立、配置和检测数据链路连接。

(2) LCP 协商成功后,开始进行认证工作,认证协议类型由LCP 协商结果(CHAP 或者PAP)决定。

(3) 认证成功后,PPP 进入NCP 阶段,NCP 是一个协议族,用于配置不同的网络层协议,常用的是IP 控制协议(IPCP),它负责配置用户的IP DNS等工作。

 

PPPoE SessionPPP协商成功后,其上就可以承载PPP数据报文。在PPPoE Session阶段,所有的以太网数据包都是单播发送的。

 

# Terminate阶段:

PPP通信双方应该使用PPP协议自身(比如PPP终结报文)来结束PPPoE会话,在无法使用PPP协议结束会话时,可以使用PADT报文。

进入PPPoE Session阶段后,PPPoE ClientPPPoE Server都可以通过发送PADT报文的方式来结束PPPoE连接。PADT数据包可以在会话建立以后的任意时刻单播发送。在发送或接收到PADT后,就不允许再使用该会话发送PPP流量了,即使是常规的PPP结束数据包也不允许发送。

 

四、报文结构

# PADIPPPoE Active Discovery InitiationPPPoE主动发现发起报文。Code域为0x09Session_id域为0x0000。报文示例:

 

 

# PADOPPPoE Active Discovery OfferPPPoE主动发现提供报文。Code域为0x07Session_id域为0x0000。报文示例:

 

# PADRPPPoE Active Discovery RequestPPPoE主动发现请求报文。Code域为0x19Session_id域为0x0000。报文示例:

 

# PADSPPPoE Active Discovery Session-confirmationPPPoE主动发现回话确认报文。Code域为0x65Session_id域为Discovery阶段分配的值。报文示例:

 

# PADTPPPoE Active Discovery TerminatePPPoE主动发现终止报文。Code域为0xa7Session_id域为Discovery阶段分配的值。报文示例:

 

 

  • 7
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值