PPP協議是在串行線IP協議SLIP(Serial Line Internet Protocol)的基礎上發展起來的。由於SLIP協議具有只支持異步傳輸方式、無協商過程(尤其不能協商如雙方IP地址等網絡層屬性)、只能承載IP一種網絡層報文等缺陷,在發展過程中,逐步被PPP協議所替代。
- 對物理層而言,PPP既支持同步鏈路又支持異步鏈路,而X.25、FR(Frame Relay)等數據鏈路層協議僅支持同步鏈路,SLIP僅支持異步鏈路。
- PPP協議具有良好的擴展性,例如,當需要在以太網鏈路上承載PPP協議時,PPP可以擴展為PPPoE。
- 提供LCP(Link Control Protocol)協議,用於各種鏈路層參數的協商。
- 提供各種NCP(Network Control Protocol)協議(如IPCP、IPXCP),用於各網絡層參數的協商,更好地支持了網絡層協議。
- 提供認證協議CHAP(Challenge-Handshake Authentication Protocol)、PAP(Password Authentication Protocol),更好的保證了網絡的安全性。
無重傳機制,網絡開銷小,速度快。
- Flag域
- Address域
- Control域
- Protocol域
- Information域
- FCS域

- 通信雙方開始建立PPP鏈路時,先進入到Establish階段。
- 在Establish階段,(發送配置請求,回復ack報文)PPP鏈路進行LCP協商。協商內容包括工作方式是SP(Single-link PPP)還是MP(Multilink PPP)、最大接收單元MRU(Maximum Receive Unit)、驗證方式和魔術字(magic number)等選項。LCP協商成功后進入Opened狀態,表示底層鏈路已經建立。
- 如果配置了驗證,將進入Authenticate階段,開始CHAP或PAP驗證。如果沒有配置驗證,則直接進入Network階段。
- 在Authenticate階段,如果驗證失敗,進入Terminate階段,拆除鏈路,LCP狀態轉為Down。如果驗證成功,進入Network階段,此時LCP狀態仍為Opened。
- 在Network階段,PPP鏈路進行NCP協商。通過NCP協商來選擇和配置一個網絡層協議並進行網絡層參數協商。只有相應的網絡層協議協商成功后,該網絡層協議才可以通過這條PPP鏈路發送報文。
- NCP協商成功后,PPP鏈路將一直保持通信。PPP運行過程中,可以隨時中斷連接,物理鏈路斷開、認證失敗、超時定時器時間到、管理員通過配置關閉連接等動作都可能導致鏈路進入Terminate階段。
7. 在Terminate階段,如果所有的資源都被釋放,通信雙方將回到Dead階段,直到通信雙方重新建立PPP連接,開始新的PPP鏈路建立。
PAP與CHAP認證
- 被驗證方把本地用戶名和口令發送到驗證方。
- 驗證方根據本地用戶表查看是否有被驗證方的用戶名
- 若有,則查看口令是否正確,若口令正確,則認證通過;若口令不正確,則認證失敗。
- 若沒有,則認證失敗
- 驗證方配置了用戶名的驗證過程
- 驗證方主動發起驗證請求,驗證方向被驗證方發送一些隨機產生的報文(Challenge),並同時將本端的用戶名附帶上一起發送給被驗證方。
- 被驗證方接到驗證方的驗證請求后,先檢查本端接口上是否配置了ppp chap password命令,如果配置了該命令,則被驗證方用報文ID、命令中配置的用戶密碼和MD5算法對該隨機報文進行加密,將生成的密文和自己的用戶名發回驗證方(Response)。如果接口上未配置ppp chap password命令,則根據此報文中驗證方的用戶名在本端的用戶表查找該用戶對應的密碼,用報文ID、此用戶的密鑰(密碼)和MD5算法對該隨機報文進行加密,將生成的密文和被驗證方自己的用戶名發回驗證方(Response)。
- 驗證方用報文ID和自己保存的被驗證方密碼和MD5算法對原隨機報文加密,比較二者的密文,若比較結果一致,認證通過,若比較結果不一致,認證失敗。
- 驗證方沒有配置用戶名的驗證過程
- 驗證方主動發起驗證請求,驗證方向被驗證方發送一些隨機產生的報文(Challenge)。
- 被驗證方接到驗證方的驗證請求后,利用報文ID、ppp chap password命令配置的CHAP密碼和MD5算法對該隨機報文進行加密,將生成的密文和自己的用戶名發回驗證方(Response)。
- 驗證方用自己保存的被驗證方密碼和MD5算法對原隨機報文加密,比較二者的密文,若比較結果一致,認證通過,若比較結果不一致,認證失敗。
PPPOE
pppoe 是在以太鏈路上使用ppp協議進行數據包的封裝,因為ppp鏈路是點到點鏈路,沒有廣播,在家用adsl撥號場景下需要更多的點到點鏈路,會造成基礎線路資源極大的浪費,而以太網支持廣播,但自身不支持認證,所以就有了pppoe的出現,ppp over ethernet
- PPPoE Client廣播發送一個PADI(PPPoE Active Discovery Initial)報文,在此報文中包含PPPoE Client想要得到的服務類型信息。

- 所有的PPPoE Server收到PADI報文之后,將其中請求的服務與自己能夠提供的服務進行比較,如果可以提供,則單播回復一個PADO(PPPoE Active Discovery Offer)報文。

- 根據網絡的拓撲結構,PPPoE Client可能收到多個PPPoE Server發送的PADO報文,PPPoE Client選擇最先收到的PADO報文對應的PPPoE Server做為自己的PPPoE Server,並單播發送一個PADR(PPPoE Active Discovery Request)報文。

- PPPoE Server產生一個唯一的會話ID(Session ID),標識和PPPoE Client的這個會話,通過發送一個PADS(PPPoE Active Discovery Session-confirmation)報文把會話ID發送給PPPoE Client,會話建立成功后便進入PPPoE Session階段。

- LCP階段主要完成建立、配置和檢測數據鏈路連接。
- LCP協商成功后,開始進行認證,認證協議類型由LCP協商結果(CHAP或者PAP)決定。
- 認證成功后,PPP進入NCP階段。NCP是一個協議族,用於配置不同的網絡層協議,常用的是IP控制協議(IPCP),它主要負責協商用戶的IP地址和DNS服務器地址。
PPP PAP與CHAP認證配置
拓撲
PAP認證:
配置要點,客戶端需要在接口配置用戶名密碼,認證過程需要主動把接口配置的用戶名密碼發送給服務端進行認證,服務端需要在本端aaa配置相應的用戶名密碼,server-type為ppp,接口開啟pap認證
client端 interface Serial0/0/0 link-protocol ppp ppp pap local-user test password simple test123 ip address 12.1.1.1 255.255.255.252 server端 aaa local-user test password cipher test123 local-user dark service-type ppp interface Serial0/0/0 link-protocol ppp ppp authentication-mode pap ip address 12.1.1.2 255.255.255.252
驗證

CHAP認證:
配置要點,兩端接口chap用戶名必須配置,接口可以不配置chap用戶密碼,使用local用戶密碼進行驗證,此外認證方與被認證方接口用戶名無需配置一致,只需要local用戶與對方接口用戶密碼一致即可通過認證
client端
aaa
local-user test password cipher O>Sr/xA!t<:z9:%F`[a=}'4#
local-user test service-type ppp
interface Serial0/0/0
link-protocol ppp
ppp chap user test
ip address 12.1.1.1 255.255.255.252
server 端
aaa
local-user test password cipher O>Sr/xA!t<:z9:%F`[a=}'4#
local-user test service-type ppp
interface Serial0/0/0
link-protocol ppp
ppp chap user test
ip address 12.1.1.1 255.255.255.252
驗證
PPPOE 配置
配置要點,server端需要配置vt模板和aaa用戶,可配置地址池給客戶端分配地址使用,可以使用ipcp推送dns配置,cilent端需要配置dialer接口,在端口綁定dialer接口
server端配置
aaa
local-user test password cipher %$%$h[N|$6~U{T%b/20~1P-Qaay#%$%$
local-user test service-type ppp
ip pool 1
gateway-list 10.0.0.1
network 10.0.0.0 mask 255.255.255.0
interface Virtual-Template1
ppp authentication-mode chap
remote address pool 1
ppp chap user test
ppp ipcp dns 8.8.8.8
ip address 10.0.0.1 255.255.255.0
interface GigabitEthernet0/0/0
pppoe-server bind Virtual-Template 1
client端配置
aaa
local-user test password cipher %$%$|L!;K*)DVT,1I2-Pd9|BacpC%$%$
local-user test service-type ppp
interface Dialer1
link-protocol ppp
ppp chap user test
ip address ppp-negotiate
dialer user test
dialer bundle 1
interface GigabitEthernet0/0/0
pppoe-client dial-bundle-number 1
驗證


