前言
随着互联网的发展,家家户户都装上了宽带,运营商装机人员到你家装个光猫,再从光猫拉根光纤(以前是电话线)到小区的分光器上从而连接到运营商的城域网中,光猫下可以接路由器或者PC机进行PPPoE拨号,输入用户名、密码认证成功后就可以正常上网了。
上一章节我们介绍了PPP技术,10张图带你搞懂数据链路层PPP点到点协议,其实也是今天讲的内容的一个铺垫,今天主要就来和大家说说这个PPPOE拨号技术,让大家了解路由器或者PC机是如何通过PPPOE拨号技术实现上网的。
正文
1 为什么会出现PPPOE拨号技术,解决了什么问题?
从用户的角度来讲:用户需要接入到运营商的网络,实现和互联网中的其他主机或者服务器通信,其实简单的以太网就可以解决用户的接入问题。
但是从运营商的角度来看:运营商希望通过同一台接入设备来连接远程的多个主机,同时接入设备能够提供访问控制和计费功能。通过单纯的以太网技术接入不能够去区分出每一个用户,更准确的说不能够对用户提供良好的访问控制和计费功能。
上一章节我们学习的PPP协议具有天然的访问控制和认证功能,于是产生了在以太网上传输PPP报文的技术,即PPPoE。
2 什么是PPPOE拨号技术?
百度百科的定义:
PPPoE(英语:Point-to-Point Protocol Over Ethernet),以太网上的点对点协议,是将点对点协议(PPP)封装在以太网(Ethernet)框架中的一种网络隧道协议。由于协议中集成PPP协议,所以实现出传统以太网不能提供的身份验证、加密以及压缩等功能。
通俗的讲:
PPPoE协议通过在以太网上提供点到点的连接,建立PPP会话,使得以太网中的主机能够连接到远端的宽带接入服务器上,并运用PPP协议对接入的每个主机进行控制。
通常我们上网都是需要通过PPPOE拨号上网,虽然现在我们上网似乎用不到,但是其实在路由器或者光猫端还是需要进行PPPOE拨号来连接网络的。我们通过运营商给我们一个指定的账号名称和密码,如果没有路由器,我们需要自己使用电脑中“宽带连接”进行拨号实现上网,如果使用路由器,会在首次配置的时候选择PPPOE方式然后填写宽带用户名和密码,让路由器自动拨号实现上网。
总的来说:只要你宽带是用到账号和密码的,都是PPPoE拨号上网方式。(那么除了PPPOE拨号上网是不是还有其他上网技术呢?答案当然是有,不过本章就不讲了。)
3 PPPOE拨号技术的优点:
PPPoE具有如下优点:
适用范围广(家庭宽带基本上都是使用这个,除非你是土豪,直接拉个专线);
安全性高(PPP点对点通信);
计费方便;
PPPoE技术解决了用户上网收费等实际应用问题,因此得到了宽带接入运营商的认可并被广泛应用。
4 DSL技术、光纤入户技术
数字用户线路DSL(Digital Subscriber Line)是一种利用现有电话网络实现数据通信的宽带技术,人们通常把所有的DSL技术统称为xDSL,x代表不同种类的数字用户线路技术。
目前比较流行的宽带接入方式为ADSL,ADSL是非对称DSL技术,简单理解就是,上传和下载速率不对等,比如下载速度能够达到12M,上传速度只能达到1M。
经过多年的发展,已经历经三代,从最初的ADSL到后来改进的ADSL2再到如今的ADSL2+,下线速度现在最高可以到达24M了。DSL技术使用的是PPPoE(PPP over Ethernet)协议。
使用DSL接入网络时,用户侧会安装调制解调器,然后通过现有的电话线与数字用户线路接入复用器(DSLAM)相连。DSLAM是各种DSL系统的局端设备,属于最后一公里接入设备。然后,DSLAM通过高速ATM网络或者以太网将用户的数据流量转发给宽带远程接入服务器(BRAS)。BRAS是面向宽带网络应用的接入网关,位于骨干网的边缘层。
到用户家中具体接入方法是,从宽带运营商接过一根电话线,到室内的调制解调器(俗称:猫)上,可以接电话线,也可以接网线,网线可以接到路由器,再分配到各个网络设备上。
ADSL猫的作用:将电话线中的模拟信号和网线中的数字信号相互转换,ADSL使用了一种叫频分复用技术,能够使得电话数据,上传数据和下载数据三者之间不冲突不干扰,这样能够大大提高利用效率。
光纤入户(FTTP)指的是采用光纤作为传输载体,以光脉冲的形式来传输信号,具有传输速度快、成本低、质量轻、抗干扰性强等优点。采用的设备一端部署在运营商机房叫光线路终端,另一端在用户家中叫光网络单元,光猫就是光网络单元的一种。
一条光纤入户可以提供多个电话或者宽带账户,ADSL会有传输速度上限,而光纤没有上限,在未来会有更高速的传输来支持不断发展的网络技术。
简单来说,ADSL和光纤连接方式分别为:
ADSL——电话线入户——连接ADSL猫端口——ADSL猫接出网线到用户内网。
光纤入户——光纤接到光猫——光猫端口接出网线到用户内网。
5 PPPOE报文格式:
PPPoE报文是使用Ethernet格式进行封装的,Ethernet中各字段解释如下:
DMAC:表示目的设备的MAC地址,通常为以太网单播目的地址或者以太网广播地址(0xFFFFFFFF)。
SMAC:表示源设备的以太网MAC地址。
Type:表示协议类型字段,当值为0x8863时表示承载的是PPPoE发现阶段的报文。当值为0x8864时表示承载的是PPPoE会话阶段的报文。
PPPoE字段中的各个字段解释如下:
VER:表示PPPoE版本号,值为0x01。
Type:表示类型,值为0x01。
Code:表示PPPoE报文类型,不同取值标识不同的PPPoE报文类型。
PPPoE会话ID:与以太网SMAC和DMAC一起定义了一个PPPoE会话。
Length:表示PPPoE报文的Payload长度,不包括以太网头部和PPPoE头部的长度。
6 PPPOE工作原理:
PPPoE可分为三个阶段,即发现阶段、会话阶段和会话终结阶段。
PPPoE Client广播发送一个PADI( PPPoE Active Discovery Initial)报文,在此报文中包含PPPoEClient想要得到的服务类型信息。
在PADI报文中,目的MAC地址是一个广播地址,Code字段为0x09,Session ID字段为0x0000。
所有的 PPPoE Server收到PADI报文之后,将其中请求的服务与自己能够提供的服务进行比较,如果可以提供,则单播回复一个PADO( PPPoE Active Discovery Offer)报文。
在PADO报文中,目的地址是发送PADI报文的客户端MAC地址,Code字段为0x07,Session ID字段为0x0000。
根据网络的拓扑结构, PPPoE Client可能收到多个 PPPoE Server发送的PADO报文, PPPoE Client选择最先收到的PADO报文对应的 PPPoE Server作为自己的 PPPoE Server,并单播发送一个PADR( PPPoEActive Discovery Request)报文。
在PADR报文中,目的地址是选中的服务器的MAC地址,Code字段为0x19,Session ID字段为0x0000。
PPPoE Server产生一个唯的会话ID( Session ID),标识和 PPPoE Client的这个会话,通过发送个PADS( PPPoE Active Discovery Session- confirmation)报文把会话ID发送给 PPPoE Client。
PADS报文中,目的地址是PPPoE客户端的MAC地址,Code字段为0x65,Session ID字段是PPPoE服务器为本PPPoE会话产生的Session ID。
会话建立成功之后通信双方都会知道PPPoE的 Session_ID以及对方的以太网地址,它们共同确定了唯一的 PPPOE Session。
PPPoE Session阶段可划分为两部分,一是PPP协商阶段,二是PPP数据传输阶段。
PPPoE Session上的PPP协商和普通的PPP协商方式一致,分为LCP、认证、NCP3个阶段。
(1)LCP阶段主要完成建立、配置和检测数据链路连接。
(2)LCP协商成功后,开始进行认证,认证协议类型由LCP协商结果(CHAP或者PAP)决定。
(3)认证成功后,PPP进入NCP阶段。NCP是一个协议族,用于配置不同的网络层协议,常用的是IP控制协议(IPCP),它主要负责协商用户的IP地址和DNS服务器地址。
PPPoE Session的PP协商成功后,就可以承载PPP数据报文。
在 PPPoE Session阶段所有的以太网数据包都是单播发送的。
PPP通信双方可以使用PPP协议自身来结束 PPPoE会话,当无法使用PPP协议结束会话时可以使用PADT( PPPoE Active Discovery Terminate)报文。
进入 PPPoE Session阶段后, PPPoE Client和 PPPoE Server都可以通过发送PADT报文的方式来结束PPPoE连接。PADT数据包可以在会话建立以后的任意时刻单播发送。在发送或接收PADT后,就不允许再使用该会话发送PPP流量了。
7 PPPoE协议报文总结
PADI(PPPoE Active Discovery Initiation)报文:用户主机发起的PPPoE服务器探测报文,目的MAC地址为广播地址。
PADO(PPPoE Active Discovery Offer)报文:PPPoE服务器收到PADI报文之后的回应报文,目的MAC地址为客户端主机的MAC地址。
PADR(PPPoE Active Discovery Request)报文:用户主机收到PPPoE服务器回应的PADO报文后,单播发起的请求报文,目的地址为此用户选定的那个PPPoE服务器的MAC地址。
PADS(PPPoE Active Discovery Session Configuration)报文:PPPoE服务器分配一个唯一的会话进程ID,并通过PADS报文发送给主机。
PADT(PPPoE Active Discovery Terminate)报文:当用户或者服务器需要终止会话时,可以发送这种PADT报文。