pppoe_pppoe拨号 - CSDN
精华内容
参与话题
  • pppoe工作原理详解

    万次阅读 2016-05-10 13:30:30
    与传统的接入方式相比,PPPoE具有较高的性能价格比,它在包括小区组网建设等一系列应用中被广泛采用,目前流行的宽带接入方式ADSL就使用了PPPoE协议。随着低成本的宽带技术变得日益流行,DSL(Digital Subscriber ...

    与传统的接入方式相比,PPPoE具有较高的性能价格比,它在包括小区组网建设等一系列应用中被广泛采用,目前流行的宽带接入方式ADSL就使用了PPPoE协议。随着低成本的宽带技术变得日益流行,DSL(Digital Subscriber Line)数字用户线技术更是使得许多计算机在互联网上能够酣畅淋漓的冲浪了。但是这也增加了DSL服务提供商们对于网络安全的担心。通过ADSL方式上网的计算机大都是通过以太网卡(Ethernet)与互联网相连的。同样使用的还是普通的TCP/IP方式,并没有附加新的协议。另外一方面,调制解调器的拨号上网,使用的是PPP协议,即Point to Point Protocol,点到点协议,该协议具有用户认证及通知IP地址的功能。PPP over Ethernet(PPPoE)协议,是在以太网络中转播PPP帧信息的技术,尤其适用于ADSL等方式。

    PPP协议简介
    ----------------------------
    PPP: Point-to-Point Protocol,链路层协议。用户实现点对点的通讯。
    PPP协议中提供了一整套方案来解决链路建立、维护、拆除、上层协议协商、认证等问题。具体包含这样几个部分:链路控制协议LCP(Link Control Protocol);网络控制协议NCP(Network Control Protocol);认证协议,最常用的包括口令验证协议PAP(Password Authentication Protocol)和挑战握手验证协议CHAP(Challenge-Handshake Authentication Protocol)。

    帧格式与HDLC相似,不同的是PPP是面向字符,HDLC是面向位的。PPP帧格式如下:

    看到总共多了8个字节,其中首尾字节都是帧的起始和结束标志位,A表示地址,C表示控制。
    协议的两个字段,表示后面信息部分的数据协议是什么,包括:
    0x0021——信息字段是IP数据报
    0xC021——信息字段是链路控制数据LCP
    0x8021——信息字段是网络控制数据NCP
    0xC023——信息字段是安全性认证PAP
    0xC025——信息字段是LQR
    0xC223——信息字段是安全性认证CHAP


    PPP协议的工作过程
    ---------------------------------
    PPP通讯是两个端点之间的通讯,每一端必须首先发送LCP packets数据来设定和测试数据链路,当链路建立后,peer才可以被认证,认证完成后,再通过发送NCP packets来选定网络层协议,这些后续的通讯就可以在网络层进行了。

    具体的过程如下:
    1. 链路静止状态:链路一定开始并结束于这个阶段。当一个外部事件(例如载波侦听或网络管理员设定)指出物理层已经准备就绪时,PPP将进入链路建立阶段。在这个阶段,LCP自动机器将处于初始状态,向链路建立阶段的转换将给LCP自动机器一个UP事件信号。

    2. 链路建立状态:LCP用于交换配置信息包(Configure packets),建立连接。一旦一个配置成功信息包(Configure-Ackpacket)被发送且被接收,就完成了交换,进入了LCP开启状态。所有的配置选项都假定使用默认值,除非被配置交换所改变。有一点要注意:只有不依赖于特别的网络层协议的配置选项才被LCP配置。在网络层协议阶段,个别的网络层协议的配置由个别的网络控制协议(NCP)来处理。在这个阶段接收的任何非LCPpackets必须被silentlydiscarded(静静的丢弃)。收到LCPConfigure-Request(LCP配置要求)能使链路从网络层协议阶段或者认证阶段返回到链路建立阶段。

    3. 认证阶段:在一些链路上,在允许网络层协议packets交换之前,链路的一端可能需要peer去认证它。认证是不需要强制执行的。如果一次执行希望peer根据某一特定的认证协议来认证,那么它必须在链路建立阶段要求使用那个认证协议。应该尽可能在链路建立后立即进行认证。链路质量检查可以同时发生。在认证完成之前,禁止从认证阶段前进到网络层协议阶段。如果认证失败,认证者应该跃迁到链路终止阶段。
    在这一阶段里,只有链路控制协议、认证协议,和链路质量监视协议的packets是被允许的。在该阶段里接收到的其他的packets必须被静静的丢弃。

    4. 网络层协议阶段:一旦PPP完成了前面的阶段,每一个网络层协议(例如IP,IPX,或AppleTalk)必须被适当的网络控制协议(NCP)分别设定。比如,NCP可以给新接入的PC机分配一个临时的IP地址,这样PC机就成为Internet上一个主机了。每个NCP可以随时被打开和关闭。当一个NCP处于Opened状态时,PPP将携带相应的网络层协议packets。当相应的NCP不处于Opened状态时,任何接收到的被支持的网络层协议packets都将被静静的丢弃。

    5. 链路终止阶段:PPP可以在任意时间终止链路。引起链路终止的原因很多:载波丢失、认证失败、链路质量失败、空闲周期定时器期满、或者管理员关闭链路。LCP用交换Terminate(终止)packets的方法终止链路。当链路正被关闭时,PPP通知网络层协议,以便他们可以采取正确的行动。交换Terminate(终止)packets之后,执行应该通知物理层断开,以便强制链路终止,尤其当认证失败时。Terminate-Request(终止-要求)的发送者,在收到Terminate-Ack(终止-允许)后,或者在重启计数器期满后,应该断开连接。收到Terminate-Request的一方,应该等待peer去切断,在发出Terminate-Request后,至少也要经过一个Restarttime(重启时间),才允许断开。PPP应该前进到链路死亡阶段。在该阶段收到的任何非LCPpackets,必须被静静的丢弃。
    PPPoE协议及其工作过程
    -----------------------------------------
    PPPoE: PPP over Ethernet,是经常被用在DSL链接上的变种协议(RFC 2516),另外PPPoA 有时也被使用(PPP over ATM)。
    PPPoE一般用在DSL接入网络,如下图所示:
    PPPoE的报文就是在PPP的报文前面再加上以太网的报头,使得PPPoE可以通过简单桥接设备连入远端接入设备。但这里我们发现PPPoE报文中的PPP内容与原始的PPP并不相同。
    也可参考整个PPPoE的报文(包括Ethernet Frame):
    详细的说,就是下面的内容:

    解释一下上面PPPoE报文中的关键字段的意义。
    ETHER_TYPE: 
    0x8863  Discovery Stage
    0x8864 PPP Session Stage 

    CODE: 
    0x00 PPP Session Stage
    0x09 PPPOE Active Discovery Initiation (PADI) packet 
    0x07 PPPOE Active Discovery Offer (PADO) packet
    0x19 PPPOE Active Discovery Request (PADR) packet
    0x65 PPPOE Active Discovery Session-confirmation (PADS) packet 
    0xa7 PPPOE Active Discovery Terminate (PADT) packet
     
    TAG_TYPES:(用于Discovery Stage中的协商参数)
    0x0000 End-Of-List
    0x0101 Service-Name
    0x0102 AC-Name
    0x0103 Host-Uniq
    0x0104 AC-Cookie
    0x0105 Vendor-Specific
    0x0110 Relay-Session-Id
    0x0201 Service-Name-Error
    0x0202 AC-System-Error
    0x0203 Generic-Error

    PPPoE的工作过程分成两个阶段,即发现阶段(Discorvery)和PPP会话阶段。

    发现阶段(Discovery Stage)的具体过程如下:
    1. 用户主机用广播的方式发出PADI (PPPOE Active Discovery Initiatio) 包,准备去获得所有可连接的接入设备(获得其MAC地址);
    2. 接入设备收到PADI包后,返回PADO (PPPOE Active Discovery Offer) 作为回应;
    3. 用户主机从收到的多个PADO包中,根据其名称类型名或者服务名,选择一个合适的接入设备,然后发送PADR (PPPOE Active Discovery Request) 包,另外如果一个用户主机在发出PADI后在规定时间内没有收到PADO,则会重发PADI;
    4. 接入设备收到PADR包后,返回PAS (PPPOE Active Discovery Session-confirmation) 包,其中包含了一个唯一session ID,双方进入PPP会话阶段。

    PPP会话阶段,即在session建立后的通讯阶段。
    另外,无论是用户主机还是接入设备可随时发起PADT包,中止通讯。

    使用PPPoE进行通讯的整个过程如下图所示:


    PPPoE在BAS上的实现
      PPPoE拨号软件在应用中已经很成熟(Windows XP以上版本自带),下面重点讨论PPPoE在接入服务器BAS中的实现方式。
      3.1PPPoE的效率
        从PPPoE协议模型可以看出,BAS汇聚了用户的所有数据流,它必须将每一个PPPoE包都拆开检查处理,这在很大程度上是沿袭了传统的PPP处理的方式,虽然有很好的安全性,但一旦用户很多,数据包数量很大,解封装速度就需要很快,BAS很大的精力花在检测用户的数据包上,容易形成接入的“瓶颈”。
      
      为此,在BAS的硬件结构上可以采用分布式网络处理器(NP)和ASIC芯片设计。网络处理器是专门针对电信网络设备而开发的专用处理器,它有一套专门的指令集,用于处理电信网络的各种协议和业务,可以大大提高设备的处理能力。同时,ASIC芯片转发数据包时接近硬件的转发性能,远非CPU软件方式可比,采用这种方式将PPPoE数据流的处理与转发分开,工作效率大大提高。此外在软件系统结构上还应该与其他技术相结合,更好地发挥PPPoE的性能。
      
      3.2PPPoE与VLAN的结合
      
      VLAN即虚拟局域网,是一种通过将局域网内的设备逻辑地划分成一个个不同的网段,从而实现虚拟工作组的技术。划分VLAN的目的,一是提高网络安全性,不同VLAN的数据不能自由交流,需要接受第三层的检验;二是隔离广播信息,划分VLAN后,广播域缩小,有利于改善网络性能,能够将广播风暴控制在一个VLAN内部。
      
      PPPoE是一个客户端/服务器协议,客户端需要发送PADI包寻找BAS,因此它必须同BAS在同一个广播式的二层网络内,与VLAN的结合很好地解决了这方面的安全隐患。此外通过将不同业务类型的用户分配到不同的VLAN处理,可以灵活地开展业务,加快处理流程,当然VLAN的规划必须在二层设备和BAS之间统一协调。
      
      BAS收到上行的PPPoE包后,首先判别VLAN ID的所属类别,如果是普通的拨号用户,则确定是Discovery阶段还是会话阶段的数据包,并严格按照PPPoE协议处理。在会话阶段,根据不同的用户类型从不同的地址池中向用户分配IP地址,地址池由上层网管配置。如果是已经通过认证的用户的数据包,则根据该用户的服务类型处理,比如,如果是本地认证的拨号用户,且对方也申请有同样的功能,则直接由本地转发。
      
      如果是专线用户,则不用经过PPPoE复杂的认证过程,直接根据用户的VLAN ID便可进入专线用户处理流程,接入速度大大提高。此外为了统一网管,在BAS与其他设备之间需要通信,这些数据包是内部数据包,也可根据VLAN ID来辨别。
      
      对于下行数据,由于BAS负责分配和解析用户的IP,兼有网关的功能,它收到数据包的目的IP是用户的,因此以IP为索引查找用户的信息比根据MAC要方便得多,这一点与普通的交换机有所不同,具体过程跟上行处理差不多。
      
      3.3PPPoE对多业务选择的支持
      
      多业务选择指的是用户通过一条终结到BAS的PPP连接来自主地选择后台网络运营商所提供的多种业务。之所以要支持多业务的选择,一方面是因为各种业务的具体实现在技术上的侧重点是不同的,对网络性能的要求也不尽相同,以前采取的固定分配的方式非常不便;另一方面,从网络应用的发展看,网络内容服务供应商ICP与网络接入商ISP的分离是必然趋势,在接入汇聚侧,ISP必须严格保证将用户选择的业务流转发到相应的ICP中去。
      
      目前采用的方法是用户先在PPPoE拨号软件中选择相应的业务,然后对用户进行业务授权确认,最后激活BAS内部相应的处理模块。但是采用这种方式,用户只能知道业务的名字,无法直观地、全面地获知BAS提供的各种业务类型,特别是在新业务的开展上十分困难,有很大的局限性。
      
      因此可以将BAS与后台业务选择网关及RADIUS服务器相配合,采取先认证后选择业务的方式,具体操作如下:
      
      (1)主机发送PADI寻找BAS,PADI中包含一个服务名类型的TAG,它的值为空,表示该用户可以接受任何类型的服务。
      
      (2)BAS收到包后回送PADO,PADO中包含所有可以提供的服务的TAG,同时,还包含一个服务名为General的TAG。
      
      (3)主机发送PADR。用户选择已知的服务名,也可以选择General服务。
      
      (4)BAS收到PADR包后为用户分配资源,并开始PPP协商过程。在PPP过程中,BAS将用户输入的账号和密码等信息送到RADIUS服务器上认证。
      
      (5)通过认证的用户,享受BAS提供的该项服务,但如果选择的是General,则被强制访问与BAS直连的服务选择网关。后台的服务选择网关是一台具有Web Server功能的服务器,用户可以通过Web的交互式界面得到可选择业务的相关信息(包括费用、带宽等),同时显示该用户账号对应的信息。
      
      (6)用户选择相应的业务,同时服务选择网关会定义各种用户的业务范围和操作权限。
      
      (7)服务选择网关激活接入服务器内部相应的业务模型实现该业务。以上方式是严格按照PPPoE协议执行的,与当前流行的拨号软件完全兼容,如果用户对其他的业务根本不感兴趣而对已申请的业务非常熟悉,也不影响用户的习惯。
      
      从BAS的角度考虑,PPPoE的操作流程也没有什么改变,只是多添了一种服务类型而已。如果运营商当前没有服务选择网关,可以通过网管配置,在对PADI包的回应时不包含General服务就可以了。

    展开全文
  • PPPOE 详解

    万次阅读 多人点赞 2018-12-09 16:56:59
    (1) PPPoE( Point to Point Protocol over Ethernet ,基于以太网的点对点协议)的工作流程包含发现( Discovery) 和会话( Session) 两个阶段,发现阶段是无状态的,目的是获得PPPoE 终端(在局端的ADSL设备上)...

    1 概述

     

    (1) PPPoE( Point to Point Protocol over Ethernet ,基于以太网的点对点协议)的工作流程包含发现( Discovery) 和会话( Session) 两个阶段,发现阶段是无状态的,目的是获得PPPoE 终端(在局端的ADSL设备上)的以太网MAC 地址,并建立一个惟一的PPPoE SESSION-ID。发现阶段结束后,就进入标准的PPP会话阶段。

     

     

    (2) 当一个主机想开始一个PPPoE会话,它必须首先进行发现阶段,以识别局端的以太网MAC地址,并建立一个PPPoE SESSION-ID。在发现阶段,基于网络的拓扑,主机可以发现多个接入集中器,然后允许用户选择一个。当发现阶段成功完成,主机和选择的接入集中器都有了他们在以太网上建立PPP连接的信息。直到PPP会话建立,发现阶段一直保持无状态的Client/Server(客户/服务器)模式。一旦PPP会话建立,主机和接入集中器都必须为PPP虚接口分配资源。

     

     

    (3) PPPOE可以防止ARP攻击。PPPOE能真正防止ARP的原因不在于,PPPOE接口IP和以太网接口IP不同,也不是通讯建立后不再用MAC等原因。而是因为PPPOE根本就没用的ARP协议,尽管它是用以太帧封装的,但它获得服务器MAC的方法不是用ARP协议,而是通过PADI包,所以它可以防止ARP攻击。

     

     

     

     

    2 PPPOE 报文

     

    (1) PPP帧格式如下

     

     

     

    看到总共多了8个字节,其中首尾字节都是帧的起始和结束标志位,A表示地址,C表示控制。

    协议的两个字节,表示后面信息部分的数据协议是什么,包括:

     

    数值

    说明

    0x0021

    信息字段是IP数据报。

    0xC021

    信息字段是链路控制数据LCP。

    0x8021

    信息字段是网络控制数据NCP。

    0xC023

    信息字段是安全性认证PAP。

    0xC025

    信息字段是LQR。

    0xC223

    信息字段是安全性认证CHAP。

     

     

     

    (2) PPPoE的报文就是在PPP的报文前面再加上PPPOE头和以太网的报头,使得PPPoE可以通过简单桥接设备连入远端接入设备。

     

    PPPOE字段如下:

     

     

     

    各个字段解释如下: 

     

    字段

    说明

    Destination_address

    一个以太网单播目的地址或者以太网广播地址(0xffffffff)。对于Discovery数据包来说,该域的值是单播或者广播地址,PPPoE Client寻找PPPoE Server的过程使用广播地址,确认PPPoE Server后使用单播地址。对于Session阶段来说,该域必须是Discovery阶段已确定的通信对方的单播地址。

    Source_address

    源设备的以太网MAC地址。  

    Ether_type

    16bits,以太网类型。

     

    (a) 0x8863(Discovery阶段或拆链阶段)。

    (b) 0x8864(Session阶段)。

    Ver

    4bits,PPPoE版本号,值为0x1。

    Type

    4bits,PPPoE类型,值为0x1。  

    Code

    8bits,PPPoE报文类型。

     

    (a) 0x00,表示会话数据。

    (b) 0x09,表示PADI报文。

    (c) 0x07,表示PADO或PADT报文。

    (d) 0x19,表示PADR报文。

    (e) 0x65,表示PADS报文。

    Session_ID

    16bits,对于一个给定的PPP会话,该值是一个固定值,并且与以太网Source_address和Destination_address一起实际地定义了一个PPP会话。值0xffff为将来的使用保留,不允许使用。

     Length

    16bits,定义PPPoE的Payload域长度。不包括以太网头部和PPPoE头部的长度。

    数据

    有时也称之为净载荷域,在PPPOE的不同阶段该域内的数据内容会有很大的不同。在PPPOE的发现阶段时,该域内会填充一些Tag(标记);而在PPPOE的会话阶段,该域则携带的是标准的点对点协议包(PPP Packet)。

     

     

    (3) 在PPPOE 报文数据域中的标记封装格式

     

     

    从上图中可以看出,标记的封装格式采用的是大家所熟知的TLV 结构,也即是(类型+长度+数据)。

     

    (a) 标记的类型域为2 个字节,下表列出了各种标记类型的含义:

     

    标记类型

    标记说明

    0x0000

    表示PPPOE报文数据域中一串标记的结束,为了保证版本的兼容性而保留,在有些报文中有应用。

    0x0101

    服务名,主要用来表明网络侧所能提供给用户的一些服务。

    0x0102

    访问集中器名,当用户侧接收到了AC的回应的PADO 报文时,就可获从所携带的标记中获知访问集中器的名子,而且还可以据此来选择相应的访问集中器。

    0x0103

    主机唯一标识,类似于PPP数据报文中的标识域,主要是用来匹配发送和接收端的,因为对于广播式的网络中会同时存在很多个PPPOE的数据报文。

    0x0104

    AC-Cookies ,主要被用来防止恶意性DOS功击。

    0x0105

    销售商的标识符。

    0x0110

    中继会话ID ,对于PPPOE的数据报文也同样可以像DHCP 报文一样被中断到另外的AC上终结,这个字段则是用来维护另一个连接的。

    0x0201

    服务名错误,当请求的服务名不被对端所接受时,会在响应的报文中携带这个标记。

    0x0202

    访问集中器名出错。

    0x0203

    一般性错误。

     

     

    (b) 标记的长度域为2 个字节,它用来指明标记数据域的长度。

    (c) 标记的数据域中用来放置不同类型标记所对应的相关数据。

     

     

     

     

    3 接入和总体流程

     

    (1) 接入

    当用户拨号接入ISP后,就建立了一条从用户PC机到ISP的物理连接。这时,用户PC机向ISP发送一系列LCP分组(封装成多个PPP帧),来建立LCP连接。这些分组及其响应选择了PPP参数以及进行网络层配置,NCP给新接入的用户分配临时IP地址。这样用户PC机就成为因特网上一个有IP地址的主机了。

     

     

    (2) 总体流程

     

     

     

     

    3 发现阶段( PPPoED:PPPoE Discovery )

     

    PPPoE的发现阶段一共分为4步,分别 是:PADI(PPPoE Active Discovery Initiation),PADO(PPPoE Active Discovery Offer),PADR(PPPoE Active Discovery Request),PADS(PPPoE Active DiscoverySession- confirmation)。当完成这四步之后,用户主机(PC)和访问集中器(AC)双方就能获知对方唯一的MAC地址和唯一的会话ID。MAC地址和 会话ID共同定义了唯一的PPPoE会话。

    PPPoE Discovery的以太网类型域为0x8863。

     

     

     

     

     

     

    4.1 PADI( PPPoE Active Discovery Initiation )

     

    主机广播发起分组,分组的目的地址为以太网的广播地址 0xffffffffffff ,CODE(代码)字段值为0x09( PADI Code), SESSION-ID(会话ID )字段值为0x0000。PADI 分组必须至少包含一个服务名称类型的标签( Service Name Tag ,字段值为0x0101),向接入集中器提出所要求提供的服务。

     

     

     

    4.2 PADO( PPPoE Active Discovery Offer )

     

    接入集中器收到在服务范围内的PADI 分组,发送PPPoE有效发现提供包分组, 以响应请求。其中CODE字段值为0x07( PADO Code), SESSION-ID 字段值仍为0x0000。PADO分组必须包含一个接入集中器名称类型的标签(Access Concentrator Name Tag,字段值为0x0102 ),以及一个或多个服务名称类型标签( Service Name Tag ,字段值为0x0101),表明可向主机提供的服务种类。PADO和PADI 的 Host-Uniq Tag 值相同。

     

     

     

    4.3 PADR( PPPoE Active Discovery Request )

    主机在可能收到的多个PADO分组中选择一个合适的PADO分组,然后向所选择的接入集中器发送PPPoE有效发现请求分组。其中CODE字段为0x19 (PADR Code), SESSION_ID字段值仍为0x0000。PADR分组必须包含一个服务名称类型标签( Service Name Tag ,字段值为0x0101),确定向接入集线器(或交换机)请求的服务种类。当主机在指定的时间内没有接收到PADO,它应该重新发送它的PADI分组,并且加倍等待时间,这个过程会被重复期望的次数。

     

     

     

    4.4 PADS( PPPoE Active Discovery Session -confirmation )

     

    接入集中器收到PADR分组后准备开始PPP会话, 它发送一个PPPoE有效发现会话确认PADS分组。其中CODE字段值为0x65( PADS Code),SESSION-ID 字段值为接入集中器所产生的一个惟一的PPPoE会话标识号码。PADS分组也必须包含一个服务名称类型标签( Service Name Tag ,字段值为0x0101)以确认向主机提供的服务。当主机收到PADS 分组确认后,双方就进入PPP会话阶段。PADS和PADR的Host-Uniq Tag 值相同。

     

     

     

    4.5 注意

     

    (1) Host-Uniq  

    在PPPoE发现阶段的四个步骤中,PPPoE头的Payload中始终含有这样一个TLV:

    Tag_Type = 0x0103 (表示为Host-Uniq)

    Tag_Length = 12 (12个字节的长度)

    Tag_Value = 1c:00:00:00:00:00:00:00:38:00:00:00

    Host-Uniq为主机唯一标识,类似于PPP数据报文中的标识域,主要是用来匹配发送和接收端的。因为对于 广播式的网络中会同时存在很多个PPPoE的数据报文。

     

    (2) AC-Cookie

    PADO和PADR数据包里面都含有 Tag_Type为AC-Cookie的Tag,20Bytes。Ac-Cookie是为了防止拒绝服务攻击(Denial of Service,简称DOS)。访问集中器(AC)能够根据PADR的源地址来重新产生唯一的Tag_Value。使用这种方法,AC可以确保PADI的 源地址是可达的,并对该地址的并行会话数进行限制。

     

     

     

     

     

    5 会话阶段( PPPoES:PPPoE Session)

     

    PPP会话的建立,需要两端的设备都发送LCP数据包来配置和测试数据通信链路。用户主机与接入集中器根据在发现阶段所协商的PPP 会话连接参数进行PPP 会话。一旦PPPoE会话开始, PPP数据就可以以任何其他的PPP封装形式发送。所有的以太网帧都是单播的。PPPoE会话的SESSION-ID一定不能改变,并且必须是发现阶段分配的值。

     

     

     

    5.1 LCP协商阶段( LCP: Link Control Protocol )

     

    LCP的Request 主机和AC 都要给对方发送, LCP协商阶段完成最大传输单元( MTU),是否进行认证和采用何种认证方式( Authentication Type )的协商。

     

    (1) LCP协议数据报文分类

    报文类型

    说明

    链路配置报文

    用来建立和配置一条链路,主要包括Configure-Request 、Configure-Ack 、Configure-Nak 和Configure-Reject 报文。

    链路维护报文

    用来管理和调试链路, 主要包括Code-Reject、Protocol-Reject 、Echo-Request、Echo-Reply 和Discard-Request 报文。

    链路终止报文

    用来终止一条链路,主要包括Terminate-Request 和Terminate-Reply 报文。

     

     

    (2) LCP协商过程

    LCP 协商的过程如下:协商双方互相发送一个LCP Config-Request 报文,确认收到的Config-Request 报文中的协商选项,根据这些选项的支持与接受情况,做出适当的回应。若两端都回应了Config-ACK,则标志LCP链路建立成功,否则会继续发送Request 报文,直到对端回应了ACK报文为止。

     

     

     

    说明:

    字段

    说明

    Config-ACK

    若完全支持对端的LCP选项, 则回应Config-ACK报文, 报文中必须完全携

    带对端Request 报文中的选项。

    Config-NAK

    若支持对端的协商选项,但不认可该项协商的内容,则回应Config-NAK报文,在Config-NAK 的选项中填上自己期望的内容,如:对端MRU 值为1500,而自己期望MRU 值为1492,则在Config-NAK 报文中埴上自己的期望值1492。

    Config-Reject

    若不能支持对端的协商选项,则回应Config-Reject 报文,报文中带上不能支持的选项,如Windows 拨号器会协商CBCP(被叫回呼) ,而ME60 不支持CBCP功能,则回将此选项拒绝掉。

     

     

     

     

    5.1.1 协商实例

     

    若不能支持对端的协商选项,则回应Config-Reject 报文,报文中带上不能支持的选项,如Windows 拨号器会协商CBCP(被叫回呼) ,而ME60 不支持CBCP功能,则回将此选项拒绝掉。

     

     

     

    (1) 客户端配置协商

     

    (a) win7客户端发送 Configure-Request

     

     

     

     

    (b) ubuntu服务端不支持CBCP功能,则回将此选项拒绝掉。回应Configure-Reject

     

    (c) win7客户端重新发送 Configure-Request

     

     

    (d) ubuntu 服务端发送 Configure-Ack

     

     

    (2) 服务端配置协商

     

    (a) ubuntu 服务端发送 Configure-Request

     

    (b) win7 客户端发送 Configure-Ack

     

     

     

     

    5.2 认证阶段( PPP Authentication:PAP/CHAP)

     

    会话双方通过LCP协商好的认证方法进行认证, 如果认证通过了, 才可以进行下面的网络层

    的协商。认证过程在链路协商结束后就进行。

     

     

    (1) PAP(Password Authentication Protocol,口令认证协议)认证

     

    PAP为两次握手协议,它通过用户名及口令来对用户进行验证。PAP验证过程如下:

    当两端链路可相互传输数据时, 被验证方发送本端的用户名及口令到验证方, 验证方根据本端的用户表(或Radius 服务器)查看是否有此用户,口令是否正确。如正确则会给对端发送Authenticate-ACK 报文, 通告对端已被允许进入下一阶段协商; 否则发送NAK报文, 通告对端验证失败。此时,并不会直接将链路关闭。只有当验证不过次数达到一定值(缺省为10)时,才会关闭链路。

     

    PAP的特点是在网络上以明文的方式传递用户名及口令,如在传输过程中被截获,便有

    可能对网络安全造成极大的威胁。因此,它适用于对网络安全要求相对较低的环境。

     

     

     

     

    (2) CHAP(Challenge Handshake Authentication Protoco,l 质询握手认证协议)认证

     

     

     

    CHAP为三次握手协议。只在网络上传输用户名,并不传输用户口令,因此它的安全性要比PAP高。CHAP的验证过程为:

    首先由验证方( Server)向被验证方( Client)发送一些随机产生的报文,并同时将本端的主机名附带上一起发送给被验证方。被验证方接到对端对本端的验证请求( Challenge)时,便根据此报文中验证方的主机名和本端的用户表查找用户口令字, 如找到用户表中与验证方主机名相同的用户,便利用报文ID、此用户的密钥用Md5 算法生成应答( Response),随后将应答和自己的主机名送回。验证方接到此应答后,用报文ID、本方保留的口令字(密钥)和随机报文用Md5 算法得出结果, 与被验证方应答比较, 根据比较结果返回相应的结果(ACK or NAK)

     

    (a) 接受认证端发送Challenge。

     

     

    (b) 申请认证端发验证请求报文。

     

    (c) 接受认证端回应认证接受报文。

     

     

    经过以上三次报文交互后, CHAP认证完成。

     

     

     

     

    5.3 NCP协商阶段( NCP: Network Control Protocol)

     

    NCP有很多种,如IPCP、BCP、IPv6CP,最为常用的是IPCP( Internet Protocol Control Protocol )协议。NCP的主要功能是协商PPP报文的网络层参数, 如IP 地址, DNS Server IP地址,WINS Server IP 地址等。PPPoE用户主要通过IPCP来获取访问网络的IP 地址或IP 地址段。NCP流程与LCP流程类似,用户与ME 设备之间互相发送NCP Config-Request 报文并且互相回应NCP Config-Ack报文后,标志NCP己协商完,用户上线成功, 可以正常访问网络了。IPCP的协商过程是基于PPP 状态机进行协商的。经过双方协商,通过配置请求、配置确认、配置否认等包文交换配置信息,最终由initial ( 或closed)状态变为Opened 状态。IPCP状态变为Opened 的条件必须是发送方和接收方都发送和接收过确认包文。IPCP 协商过程中,协商包文可包含多个选项,即参数。各个选项的拒绝或否认都不能影响IPCP的UP,IPCP可以无选项协商,无选项协商也同样能够UP。选项有IP Address、网

    关、掩码等,其中IP Address 是最重要的一个选项, 有些厂家的实现必须这个选项得到确认,大多数厂家的实现允许这个选项为空。

     

    NCP的基本协商流程见下图:

     

     

     

     

    用户和接入设备对IP 服务阶段的一些要求进行多次协商,以决定双方都能够接收的约定。

    如: IP 业务阶段使用的IP 压缩协议等。双方的协议是通过报文中包含的Option 项进行协商的,每一个Option 都是一个需要协商的问题。最后双方都需要对方答复Configure_Ack 的同意报文。

     

    (1) Configuration Request

     

     

     

    (2) Configuration Ack

     

     

    5.4 会话维持( Session Keep-alive)

     

    设备主动发送Echo Request 进行PPPoE心跳保活, 若3 次未得到服务器的响应, 则设备主动释放地址。发LCP Echo Request 的时候,魔术字字段要和之前通信的Configure_Request 使用的魔术字字段保持一致。

    有些设备或终端不支持主动发送Echo-Request 报文, 只能支持回应Echo-Reply 报文。

     

     

     

     

    5.5 会话结束( Session Termination)

     

    PPPoE 还有一个PADT( PPPOE Active Discovery Terminate)分组,它可以在会话建立后的任何时候发送, 来终止PPPoE会话,也就是会话释放。它可以由主机或者接入集中器发送,目的地址填充为对端的以太网的MAC 地址。当对方接收到一个PADT( PPPOE Active Discovery Terminate)分组,就不再允许使用这个会话来发送PPP 业务。PADT 分组不需要任何标签,其CODE字段值为0xa7( PADT Code),SESSION-ID字段值为需要终止的PPP会话的会话标识号码。在发送或接收PADT后,即使正常的PPP终止分组也不必发送。PPP对端应该使用PPP协议自身来终止PPPoE会话, 但是当PPP不能使用时,可以使用PADT。

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • PPPoE简介

    千次阅读 2016-06-02 10:51:25
    PPPoE Client向PPPoE Server发起连接请求,在会 话协商通过后,PPPoE Server向PPPoE Client提供接入控制、认证等功能。   二、报文格式 PPPoE的报文格式就是在以太网帧中携带PPP报文。   各字段解释如下: # ...

    一、简介

    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阶段分配的值。报文示例:

     

     

    展开全文
  • PPPoE拨号流程

    万次阅读 多人点赞 2016-03-12 18:37:59
    PPPoE(Pointto Point Protocol over Ethernet,基于以太网的点对点协议)的工作流程包含发现(Discovery)和会话(Session)两个阶段,发现阶段是无状态的,目的是获得PPPoE终端(在局端的ADSL设备上)的以太网MAC...

    PPPoE(Point to Point Protocol over Ethernet,基于以太网的点对点协议)的工作流程包含发现(Discovery)会话(Session)两个阶段,发现阶段是无状态的,目的是获得 PPPoE 终端(在局端的ADSL设备上)的以太网 MAC 地址,并建立一个惟一的 PPPoE SESSION-ID。发现阶段结束后,就进入标准的PPP会话阶段。

    1.发现阶段(PPPoED:PPPoE Discovery)

    1.1 PADI(PPPoE Active Discovery Initiation

    主机广播发起分组,分组的目的地址为以太网的广播地址 0xffffffffffff,CODE(代码)字段值为0×09(PADI Code),SESSION-ID(会话ID)字段值为0x0000。PADI分组必须至少包含一个服务名称类型的标签(Service Name Tag,字段值为0x0101),向接入集中器提出所要求提供的服务。

    1.2 PADO(PPPoE Active Discovery Offer

    接入集中器收到在服务范围内的PADI分组,发送PPPoE有效发现提供包分组,以响应请求。其中CODE字段值为0×07(PADO Code),SESSION-ID字段值仍为0x0000。PADO分组必须包含一个接入集中器名称类型的标签(Access Concentrator Name Tag,字段值为0x0102),以及一个或多个服务名称类型标签,表明可向主机提供的服务种类。PADO和PADI的Host-Uniq Tag值相同

    1.3 PADR(PPPoE Active Discovery Request

    主机在可能收到的多个PADO分组中选择一个合适的PADO分组,然后向所选择的接入集中器发送PPPoE有效发现请求分组。其中CODE字段为0x19(PADR Code),SESSION_ID字段值仍为0x0000。PADR分组必须包含一个服务名称类型标签,确定向接入集线器(或交换机)请求的服务种类。当主机在指定的时间内没有接收到PADO,它应该重新发送它的PADI分组,并且加倍等待时间,这个过程会被重复期望的次数。

    1.4 PADS(PPPoE Active Discovery Session-confirmation)

    接入集中器收到PADR分组后准备开始PPP会话,它发送一个PPPoE有效发现会话确认PADS分组。其中CODE字段值为0×65(PADS Code),SESSION-ID字段值为接入集中器所产生的一个惟一的PPPoE会话标识号码。PADS分组也必须包含一个接入集中器名称类型的标签以确认向主机提供的服务。当主机收到PADS 分组确认后,双方就进入PPP会话阶段。PADS和PADR的Host-Uniq Tag值相同


    图1 PPPoE的协商流程

    2.会话阶段(PPPoES:PPPoE Session)

    PPP会话的建立,需要两端的设备都发送LCP数据包来配置和测试数据通信链路。

    用户主机与接入集中器根据在发现阶段所协商的PPP会话连接参数进行PPP会话。一旦PPPoE会话开始,PPP数据就可以以任何其他的PPP封装形式发送。所有的以太网帧都是单播的。PPPoE会话的SESSION-ID一定不能改变,并且必须是发现阶段分配的值。

    2.1 LCP协商阶段LCP:Link Control Protocol

    LCP的Request主机和AC都要给对方发送,LCP协商阶段完成最大传输单元(MTU),是否进行认证和采用何种认证方式(Authentication Type)的协商。

    (1)LCP协议数据报文分类

    链路配置报文:用来建立和配置一条链路,主要包括Configure-Request、Configure-Ack、Configure-Nak和Configure-Reject报文

    链路维护报文:用来管理和调试链路,主要包括Code-Reject、Protocol-Reject、Echo-Request、Echo-Reply和Discard-Request报文

    链路终止报文:用来终止一条链路,主要包括Terminate-Request和Terminate-Reply报文

    (2)LCP协商过程

    LCP协商的过程如下:协商双方互相发送一个LCP Config-Request报文,确认收到的Config-Request报文中的协商选项,根据这些选项的支持与接受情况,做出适当的回应。若两端都回应了Config-ACK,则标志LCP链路建立成功,否则会继续发送Request报文,直到对端回应了ACK报文为止。


    图2 LCP协商的基本过程

    说明:

    (1)Config-ACK:若完全支持对端的LCP选项,则回应Config-ACK报文,报文中必须完全协带对端Request报文中的选项。

    (2)Config-NAK:若支持对端的协商选项,但不认可该项协商的内容,则回应Config-NAK报文,在Config-NAK的选项中填上自己期望的内容,如:对端MRU值为1500,而自己期望MRU值为1492,则在Config-NAK报文中埴上自己的期望值1492。

    (3)Config-Reject:若不能支持对端的协商选项,则回应Config-Reject报文,报文中带上不能支持的选项,如Windows拨号器会协商CBCP(被叫回呼),而ME60不支持CBCP功能,则回将此选项拒绝掉。

    2.2 认证阶段PPP Authentication:PAP/CHAP)

    会话双方通过LCP协商好的认证方法进行认证,如果认证通过了,才可以进行下面的网络层的协商。认证过程在链路协商结束后就进行。

    PAP(Password Authentication Protocol,口令认证协议)认证

    PAP为两次握手协议,它通过用户名及口令来对用户进行验证。PAP验证过程如下:

    当两端链路可相互传输数据时,被验证方发送本端的用户名及口令到验证方,验证方根据本端的用户表(或Radius服务器)查看是否有此用户,口令是否正确。如正确则会给对端发送Authenticate-ACK报文,通告对端已被允许进入下一阶段协商;否则发送NAK报文,通告对端验证失败。此时,并不会直接将链路关闭。只有当验证不过次数达到一定值(缺省为10)时,才会关闭链路。

    PAP的特点是在网络上以明文的方式传递用户名及口令,如在传输过程中被截获,便有可能对网络安全造成极大的威胁。因此,它适用于对网络安全要求相对较低的环境。


    图3 PAP认证流程

    CHAP(Challenge Handshake Authentication Protocol,质询握手认证协议)认证

    CHAP为三次握手协议。只在网络上传输用户名,并不传输用户口令,因此它的安全性要比PAP高。CHAP的验证过程为:

    首先由验证方(Server)向被验证方(Client)发送一些随机产生的报文,并同时将本端的主机名附带上一起发送给被验证方。被验证方接到对端对本端的验证请求(Challenge)时,便根据此报文中验证方的主机名和本端的用户表查找用户口令字,如找到用户表中与验证方主机名相同的用户,便利用报文ID、此用户的密钥用Md5算法生成应答(Response),随后将应答和自己的主机名送回。验证方接到此应答后,用报文ID、本方保留的口令字(密钥)和随机报文用Md5算法得出结果,与被验证方应答比较,根据比较结果返回相应的结果(ACK or NAK)

    (1)接受认证端发送Challenge

    (2)申请认证端发验证请求报文

    (3)接受认证端回应认证接受报文

    经过以上三次报文交互后,CHAP认证完成。


    图4 CHAP认证流程

    2.3 NCP协商阶段NCP:Network Control Protocol)

    NCP有很多种,如IPCP、BCP、IPv6CP,最为常用的是IPCP(Internet Protocol Control Protocol)协议。NCP的主要功能是协商PPP报文的网络层参数,如IP地址,DNS Server IP地址,WINS Server IP地址等。PPPoE用户主要通过IPCP来获取访问网络的IP地址或IP地址段。

    NCP流程与LCP流程类似,用户与ME设备之间互相发送NCP Config-Request报文并且互相回应NCP Config-Ack报文后,标志NCP己协商完,用户上线成功,可以正常访问网络了。

    IPCP的协商过程是基于PPP状态机进行协商的。经过双方协商,通过配置请求、配置确认、配置否认等包文交换配置信息,最终由initial (或closed)状态变为Opened状态。IPCP状态变为Opened的条件必须是发送方和接收方都发送和接收过确认包文。

    IPCP协商过程中,协商包文可包含多个选项,即参数。各个选项的拒绝或否认都不能影响IPCP的UP,IPCP可以无选项协商,无选项协商也同样能够UP。选项有IP Address、网关、掩码等,其中IP Address是最重要的一个选项,有些厂家的实现必须这个选项得到确认,大多数厂家的实现允许这个选项为空。

    NCP的基本协商流程见下图:


    图5 NCP的基本协商流程

    用户和接入设备对IP服务阶段的一些要求进行多次协商,以决定双方都能够接收的约定。

    如:IP业务阶段使用的IP压缩协议等。双方的协议是通过报文中包含的Option项进行协商的,每一个Option都是一个需要协商的问题。

    最后双方都需要对方答复Configure_Ack的同意报文。

    2.4 会话维持(Session Keep-alive)

    设备主动发送Echo Request进行PPPoE心跳保活,若3次未得到服务器的响应,则设备主动释放地址。发LCP Echo Request 的时候,魔术字字段要和之前通信的Configure_Request使用的魔术字字段保持一致。

    有些设备或终端不支持主动发送 Echo-Request 报文, 只能支持回应Echo-Reply报文。

    2.5 会话结束(Session Termination)

    PPPoE 还有一个PADT(PPPOE Active Discovery Terminate)分组,它可以在会话建立后的任何时候发送,来终止PPPoE会话,也就是会话释放。它可以由主机或者接入集中器发送,目的地址填充为对端的以太网的MAC地址。

    当对方接收到一个 PADT(PPPOE Active Discovery Terminate)分组,就不再允许使用这个会话来发送PPP业务。PADT分组不需要任何标签,其CODE字段值为0xa7(PADT Code),SESSION-ID字段值为需要终止的PPP会话的会话标识号码。在发送或接收PADT后,即使正常的PPP终止分组也不必发送。PPP对端应该使用PPP协议自身来终止PPPoE会话,但是当PPP不能使用时,可以使用PADT。

    3.PPPoE接入流程示例

    PPP状态变迁如图6所示:


    图6 PPP状态变迁图

    以PPPoE-CHAP为例,PPP用户接入流程如图7所示:


    图7 PPPoE/CHAP接入认证流程

    4.Linux中的PPPoE拨号守护进程pppd:Point-to-Point Protocol Daemon)

    Linux 内核 include/uapi/linux/if_pppox.h 中定义了{PADI_CODE,PADO_CODE,PADR_CODE,PADS_CODE,PADT_CODE} 和 struct pppoe_tag/pppoe_hdrPPP/PPPoE 实现代码在 /drivers/net/ppp/ 目录下,pppoe.c 中实现了 pppoe_connectpppoe_xmitpppoe_recvmsg 等接口。

    pppd 是一个后台服务进程(daemon),是一个用户空间的进程,所以把策略性的内容从内核的PPP协议处理模块移到 pppd 中是很自然的事了。pppd 实现了所有鉴权、压缩/解压和加密/解密等扩展功能的控制协议。

    pppd只是一个普通的用户进程,它如何扩展PPP协议呢?这就是pppd与内核中的PPP协议处理模块之间约定了,它们之间采用了最传统的内核空间与用户空间之间通信方式:设备文件。

    设备文件名是 /dev/ppp。通过read系统调用,pppd可以读取PPP协议处理模块的数据包,当然,PPP协议处理模块只会把应该由pppd处理的数据包发给pppd。通过write系统调用,pppd可以把要发送的数据包传递给PPP协议处理模块。通过ioctrl系统调用,pppd可以设置PPP协议的参数,可以建立/关闭连接。


    参考:

    PPP协议PPP状态机总结PPP协议详细解析

    PPPoE协议篇PPPoE通信协议PPPoE拔号流程

    PAP和CHAP认证PPP-CHAP原理与配置PPP的CHAP认证完全配置

     

    PPPoE 实例》PPPoE 过程PPPoE 拨号过程抓包解析

    PPPoE 用户上线交互过程PPPoE 协议技术与标准培训教材

    路由器如何设置 PPPoE 上网(ADSL虚拟拨号)

    Linux 系统修改 PPPOE 配置解决 ADSL 频繁掉线问题

    如何用 Linux 做 PPPoE 服务器Linux PPPoE 设置的六个步骤


    Linux PPP 源码分析 及 收发流程

    《Linux PPP/PPPoE 框架 实现

    由 PPPoE 看 Linux 网络协议栈的实现

    PPPoE 协议和 pppd 源码分析

     

    Broadcom 方案 PPPoE 实现分析

    基于 ARM 架构的 PPPoE 移植笔记

    关于pppd移植和3g功能》移植——linux下使用3G拨号上网

    成功实现Linux下pppd通过GPRS拨号上网

     
    展开全文
  • PPPoE抓包分析

    千次阅读 2019-03-30 20:13:09
    这个周为了解决一个PPPoE的问题,自己专门研究了一下PPPoE,通过抓包文件来详细的说一下 在wireshake中使用"pppoed || pppoes"来过滤其他无关的包,以免干扰分析. PPPoE 可以分为 发现阶段和绘话阶段(LCP,CHAP,NCP...
  • PPP协议和PPPoE协议

    千次阅读 2019-02-16 16:02:12
    以前没有关注过这两个协议,因为我一直认为PPP协议和PPPoE协议属于底层协议。但是在一次抓包时候发现在校园网内的数据包都带有PPP协议层,因此去研究了一下。 1 PPP协议介绍 PPP 点对点协议(Point to Point ...
  • PPPOE

    2019-07-24 00:38:37
    PPPOE DSL: 称为数字用户线路,是以铜质电话线为传输介质的传输技术组合(频率4k-1mhz),包括HDSL/SDSL/VDSL/ADSL/RADSL等,一般称之为xDSL. 它们的主要区别在信号传输速率和距离的不同以及上行速率和下行速率对称...
  • PPPoE经典组网

    千次阅读 2018-12-15 21:32:19
    PPPoE组网结构采用 Client/ Server模型, PPPoE的客户端为 PPPoE Client, PPPoE的服务器端为 PPPoEServer。 PPPoE Client向 PPPoE Server发起请求, PPPoE Server为 PPPoE Client提供接入控制认证等功能。 1.设备作为...
  • PPPoE实验

    2020-10-20 08:36:32
    配置路由器 R1,将其配置为 PPPoE 服务器,参考命令如下(注:下面 IP 地址的第 2 字节修改为自己班级,第 3 字节修改为自己学号后两位)。 R1(config)#hostname PPPoE PPPoE(config)#int lo0 PPPoE(config-if)#ip ...
  • PPP / PPPoE

    千次阅读 2016-02-26 22:05:48
    还有个变种,在多路访问网络中需要虚拟点到点连接PPPoE。提供了一种标准的方式在点对点的链路上传输多种网络层协议(IP,IPX,AppleTalk)的数据报。PPP可在链路建立过程中检查链路质量,还支持PAP和CHAP密码验证。
  • Linux下pppoe设置

    万次阅读 2011-12-21 19:18:56
    在Linux下配置pppoe,一般有以下步骤: 1. 安装pppoe软件。这个不多说,ape-get install pppoe即可。 2. 设置拨号属性: root@ubuntu:~# pppoe-setup  详细过程如下:  用户名: USER NAME >>> Enter ...
  • OpenWrt之PPPoE拨号

    万次阅读 2014-07-31 22:29:08
    什么是PPPoE拨号:
  • linux纯系统下配置PPPOE拨号上网!!!  2、 PPPoE软件的升级与安装  1) 在 http://www.roaringpenguin.com/pppoe/#download 下载  2) 解压rp-pppoe(以root身份执行 )  #tar -zxvf rp-pppoe-3.10.tar.gz ...
  • 网上找到的资料大部分是交互式pppoe-setup命令进行拨号,其实可以通过直接配置pppoe拨号需要的配置文件拨号连接。 前提:需要先安装pppoe拨号工具。 1、在/etc/sysconfig/network-scripts中创建一个名为《ifcfg-...
  • 30.1配置 openwrt 支持 PPPoE Server。以下在Ubuntu中进行。 第一步: 图1 图2 第二步: 图3 图4 图530.2上网测试将固烧写到开发板中。 第一步:修改/etc/ppp/pppoe-server-...
  • PPPOE 模拟环境搭建

    千次阅读 2014-08-12 23:29:21
    这段时间,包括我自己测试OTT盒子 PPPOE的时候比较痛苦,要不就是在别人的位置上测试,要不就是借用PPPOE的设备,觉得还是自己搭建一个PPPOE真实拨号上网的环境多好!但是坑爹的win7找不到好用的pppoe服务软件,公共...
  • Android实现pppoe拨号上网实例

    千次阅读 2018-05-06 16:00:52
    * 平台:RK3399* 系统:安卓7.1>在电脑搭建服务端这里就不赘述了,可看下面的参考文章。编译生成pppoe可执行文件。...在external/pppoe目录下创建Android.mk文件在external/pppoe目录下执行m...
  • RouterOS PPPOE Server 服务器设置

    千次阅读 2011-10-14 10:12:08
    实现要求,用RouterOS架设PPPOE Server服务 PPPoE服务名称:PPPoE_Server (多个服务器请勿重复) 拨号网卡:ether1 (设置PPPoE通过拨号服务的网卡) IP地址池:10.119.99.2-10.119.99.62 设置连接PPP
  • linux下pppoe服务器搭建

    万次阅读 2012-06-13 09:10:53
    查看是否安装所需要的包。...[root@MASTER ~]# rpm -qa |grep rp-pppoe rp-pppoe-3.5-32.1 配置文件目录在/etc/ppp下 [root@MASTER ppp]# ls chap-secrets ioptions ip-up ipv6-up peers firewall-mas
  • DHCP与PPPOE 区别

    万次阅读 2016-07-21 10:01:23
    2、PPPOE,只是多了一个获得IP的过程,一旦获得了IP以后,就和静态IP一样了 一般可以这样和静态IP的方式做个比较: 比如你的运营商,手上有1000个静态IP。如果他把这1000个IP分给1000个用户,那这1000个用户就一人有...
1 2 3 4 5 ... 20
收藏数 16,143
精华内容 6,457
关键字:

pppoe