ppp協議解析二


轉:http://blog.csdn.net/yangzheng_yz/article/details/11526747

PPP(Point to Point Protocol,點對點協議)協議是為在兩個對等實體間傳輸數據包,建立簡單連接而設計的。這種連接提供了同時的雙向全雙工操作,並且假定數據包是按順 序投遞的。PPP協議還滿足了動態分配IP地址的需要,並能夠對上層的多種協議提供支持。PPP在TCP/IP協議集中是位於數據鏈路層的協議,其物理實 現方式有兩種:一種是通過以太網口(這時稱之為PPPoE,即PPP over Ethernet),另一種就是利用普通的串行接口。本文主要討論的就是后一種PPP協議的具體實現過程。

  PPP協議是目前應用得最廣的一種廣域網協議,它主要由以下3部分組成:(1) 在串行線路中對上層數據包的封裝(HDLC);(2) 用於建立、配置和檢測數據鏈路連接的鏈路控制協議(LCP) ;(3) 用於建立和配置不同網絡層協議的網絡控制協議(NCP) 協議簇。下面從PPP協議的封裝結構和PPP鏈路協商兩個部分對PPP協議進行詳細剖析。

PPP協議封裝

  PPP 封裝用於消除上層多種協議數據包的歧義,加入幀頭、幀尾, 使之成為互相獨立的串行數據幀。PPP 采用HDLC 的組幀格式,它是面向字符的。在完整的PPP 幀中,幀頭由幀開始標記、地址域、控制域、協議域組成,幀尾由校驗域、幀結束標記組成(如表1 所示)。



  表1:PPP幀封裝格式

標記

1字節

0X7E

地址

1字節

0XFF

控制

1字節

0X03

協議

2字節

編碼

1字節

ID

1字節

長度

2字節

載荷

0-1496字節

校驗和

2字節

標記

1字節

0X7E

 

表2:PPP協議代碼                           表3:編碼對應含義

協議代碼

對應協議

0XC021            LCP協議

0XC023            PAP協議

0XC223            CHAP協議

0X8021            IPCP協議

0X0021            IP協議

編碼值

對應含義

1                 配置請求(Req)

2                 接受配置(Ack)

3        配置請求接受,其他拒絕(Nak)

4        配置請求不認識或不被接受(Rej)

5                 終止鏈接

6                 終止確認

 

 

 

 

 

 



PPP幀以0x7e作為一幀的開始和結束的標記,占一個字節。地址域和控制域固定的值,分別為0xff 和0x03,各占一個字節。協議域為兩個字節,在實際應用中因數據包的不同而不同。PPP 幀具有錯誤檢測機制,校驗和中填寫的就是發送方對幀數據的檢驗碼,接收方在接收到該幀后對數據做校驗,通過校驗來判斷數據幀在傳送過程中是否有誤。其中校 驗和采用的是CRC算法,校驗范圍從地址字節到校驗和位置之前的最后一個數據載荷。

PPP協議包含豐富的內容, 它能實現包括IP協議在內的多種網絡協議的封裝,那么,如何區分某個PPP包究竟是哪種數據協議包?這就是PPP協議幀第四、五兩個字節關心的問題,表2列出常用的協議代碼及其對應的協議。



PPP鏈路協商

通常,在一次PPP鏈路會話中,協商的雙方並沒有區分誰是服務器端誰是客戶端。為了敘述方便,這里把申請請求PPP服務 的一端稱為用戶端,而把能提供PPP服務的機構稱為ISP(比如本項目中的聯通CDMA網絡)。一般來講,與ISP建立一次正常的PPP鏈路連接,要經歷 下面3個階段: (1)LCP協商,建立和配置連接以及幀參數設置等;(2)用戶認證,這里將選擇PAP認證;(3)NCP協商,即負責IP地址的動態分配等事務。這里把 常用的編碼字節的意義列成上表3,這些代碼對上述協議都適用。至於PPP封裝幀結構中的ID字節,表示的是PPP包的序號,這在協商階段用來識別該對哪個 包進行應答。需要說明的是,當PPP報文封裝的是IP報文時,則已經不存在編碼和ID部分了。 

 

 

3 PPP協議在聯通CDMA網絡中的具體實現

 

    PPP協議的格式雖然嚴格遵循既定標准,但不同的ISP可以有其自己的協商規范,也就是說協商的過程會因為使用網絡的不同而有差別。因此PPP技術的應 用,關鍵的問題是要弄清楚不同的ISP提供商它們各自的一套協商會話流程,一旦協商過程完成,用戶獲得ISP分配的動態IP,剩下的工作只不過是把用戶數 據以IP報文形式封裝在一個個PPP報文中進行傳輸了。下圖2就是利用中國聯通CDMA網絡實現視頻傳輸的協商階段的全過程。



圖2 PPP協商過程數據幀實例

7E

FF 7D 23

C0 21

7D 21

7D 21

7D 20 7D 34

7D 22 7D 26 7D 20 7D 20 7D 20 7D 20

7D 25 7D 26

52 7D 38 7D 30 44

7D 27 7D 22

7D 28 7D 22

6E E1

7E

 

                   

1 U

 

 

 

 

 

7E

FF 7D 23

C0 21

7D 21

7D 21

7D 20 7D 3D

7D 21 7D 24 7D 25 EA

7D 22 7D 26 7D 20 7D 20 7D

20 7D 20

7D 23 7D 25 C2 23 7D 25

7D 25 7D 26 2F 7D 35 B2 7D 31

7D 27 7D 22

7D 28 7D 22

7D

27 E6

7E

 

                         

2 I

 

 

 

 

 

 

 

 

 

 

7E

FF 7D 23

C0 21

7D 22

7D 21

7D 20 7D 34

7D 22 7D 26 7D 20 7D 20 2D 20 7D 20

7D 25 7D 26

52 7D 38 7D 30 44

7D 27 7D 22

7D 28 7D 22

85 88

7E

 

                   

3 I

 

 

 

 

7E

FF 7D 23

C0 21

7D 23

7D 21

7D 20 7D 28

7D 23 7D 24 CO 23

22 48

7E

4 U

 

 

7E

FF 7D 23

C0 21

7D 21

7D 22

7D 20 7D 3C

7D 21 7D 24 7D 25 EA

7D 22 7D 26 7D 20 7D 20 7D

20 7D 20

7D 23 7D 24 C0 23

7D 25 7D 26 2F 7D 35 B2 7D 31

7D 27 7D 22

7D 28 7D 22

9F 40

7E

                           

5 I

 

 

 

 

7E

FF 7D 23

C0 21

7D 22

7D 22

7D 20 7D 3C

7D 21 7D 24 7D 25 EA

7D 22 7D 26 7D 20 7D 20 7D

20 7D 20

7D 23 7D 24 C0 23

7D 25 UD 26 2F 7D 25 B2 7D 31

7D 27 7D 22

7D 28 7D 22

AC 7D 3A

7E

 

                         

6 U

 

 

 

 

 

 

 

 

7E

FF 3

C0 23

1

1

0 E

4 43 41 52 44

4 43 41 52 44

26 C2

7E

7 U

 

 

7E

C0 23

2

1

0 5

0

FD 30

7E

8 I

 

 

7E

80 21

1

3

0 10

2 6 0 2D F 0

3 6 DC C0 0 9

46 D8

7E

9 I

 

 

7E

FF 3

80 21

1

1

0 16

3 6 0 0 0 0

81 6 0 0 0 0

83 6 0 0 0 0

6E DB

7E

10U

 

 

7E

FF 3

80 21

4

3

0 A

2 6 0 2D F 0

F5 54

7E

11U

 

 

7E

80 21

3

1

0 16

3 6 DC CF 57 8C

81 6 DC C0 0 82

83 6 DC C0 8 3A

18 39

7E

12I

 

 

7E

FF 3

80 21

1

2

0 16

3 6 DC CF 57 8C

81 6 DC C0 0 82

83 6 DC C0 8 3A

67 AA

7E

13U

 

 

7E

80 21

1

4

0 A

3 6 DC C0 0 9

62 4C

7E

14I

 

 

7E

80 21

2

2

0 16

3 6 DC CF 57 8C

81 6 DC C0 0 82

83 6 DC C0 8 3A

F1 C9

7E

15I

 

 

7E

FF 3

80 21

2

4

0 A

3 6 DC C0 0 9

75 D6

7E

16U

 

 

在上圖中,每個報文最左邊的數字是協商過程的報文序號,緊接着的U字母代表的是申請PPP服務的用戶發出的PPP協商報文,而I則代表ISP發出的PPP協商報文,這里具體就是聯通的CDMA網絡。下面對整個協商過程進行詳細解析:

1)在真正進行PPP協商之前,還有一個AT命令撥號過程,聯通CDMA要求撥#777申請數據業務,而Q2358C模塊的撥號命令是ATD,因此 合起來就是:ATD#777;,注意,Q2358撥號命令后面要加一個分號;撥號完后,要等待CDMA返回“CONNECT”,這時候才能進行后續的 PPP協商;

2)第一個起始PPP問旬包必須由用戶發起,否則聯通CDMA不會響應。包的內容見上圖中第1序號包,這里要說明一點:在PPP協商的LCP階段, 除了起始和結束的PPP報標志符7E,報文中任何地方的值小於0x20的字符,以及字符7F,7E和7D,都要轉義,轉義的方法是把其值和0x20異或后 的值緊接着7D發送。

3)從第1序號報的第三個框的“C0 21”字符結合上表2可以看出,這是一個LCP報文,第四個框“7D 21”就是01,根據上表3可以看出這是用戶發出的請求報,而根據第五個框的內容知道這是用戶發出的第一個報,第六個框是整個報文的長度,占兩個字節,后 面的內容是各種選項,倒數第二個框的內容則是FCS校驗值填充的地方,占兩個字節;

4)CDMA接受到第1序號報后,將先后發送第2序號和第3序號LCP報,其中第2序號報是請求報,請求用戶對其攜帶到選項進行同意或者拒絕,如2 號報第7個框“7D 21 7D 24 7D 25 EA”中“7D 21”表示第1個LCP協商選項,其長度為“7D 24”即4個字節,后面兩個字節“7D 25 EA”即“05 EA”是其選項值,整個1號選項的用途就是規定PPP報文最大數據有限載荷是5EA,也就是1514個字節,其他選項的結構的理解與此完全一樣,后面不再 贅述。關於LCP報文各種選項的意義,可參閱相關RFC文檔;

5)CDMA的發出的第3序號報是同意用戶發出的第1序號報的,這可以從其第四個框的值“7D 22”也即02,根據表3,其表示接受配置的意思;

6)從第4序號報的第4框內容“7D 23”即03,結合表3,可以得知用戶拒絕了CDMA請求報中選項3的配置,表示用戶不接受CHAP(C2 23)認證,用戶只接受PAP認證(C0 23);

7)CDMA收到用戶剛才的反應后,馬上發出第2個請求報,這時候把第3選項的配置改成了用戶希望的PAP認證(C0 23),見上圖5號報;

8)第6序號報表示用戶同意CDMA的LCP配置,這里要說明一點,選項2是設置是否要對0x20以下的字符值進行轉義的,因為選項2的值是全0,則說明以后的PPP報文不再對值為0x20以下的值轉義,但是對於值為7D、7E、7F的字符依然要進行轉義發送;

9)從第7序號報開始,LCP協商過程結束,現在開始進行的是PAP認證,聯通的PAP認證的用戶名和密碼都是“CARD”,也即ASCII值“0x43、0x41、0x52、0x44”;第8序號報表示CDMA通過了用戶的認證;

10)根據表2,可以看出,第9序號報開始是NCP會話也即IPCP會話階段,CDMA請求用戶是否同意其網關IP地址:DC.C0.0.9,見其倒數第3個框也即3號選項所包含的值;

11)之后的過程完全可以按照上面類推分析下去,當全部16個PPP報文會話完畢后,將獲得四項關健值:即分配的IP地址: DC.CF.57.8C; 遠程網關:DC.C0.0.9;主DNS:DC.C0.0.82;次DNS:DC.C0.8.3A。之后就可以嵌入真正的IP數據報進行數據打包傳輸。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM