请帮我解决PPP协议迷惑

时间:2023-01-13 10:12:08
我用MC35T模块实现网络数据的传输,我用VC程序作的,现在已经实现了LCP,CHAP及IPCP协议的认证,我的理解是只要通过了IPCP协议以后我是不是就可以用SOCKET 进行网络数据的传送了,可是当我用从IPCP协议中获得的IP进行SOCKET连接时,总是显示SOCKET ERROE ,上网也上不去,好象没完全连通似的,我现在不知道怎么作了,请各位高手帮我参考参考,看我是不是漏掉了写什么,我还应该怎么做,才能用SOCKET 进行通讯,或者能上网呢。

12 个解决方案

#1


我也在做这,讨论一下阿。
ip那部分应该需要封装把,是不是还得实现tcp/ip协议栈阿

#2


PPP连接后,需要建立TCP connection,然后才能建立socket连接吧。我也是猜测的,没有具体写过程序。希望高手参与。

#3


tcp/ip协议应当需要自己去封装吧,socket应用应当是默认的微软的平台下的一些通讯协议,是微软封装好的了,socket不能找到你自建立的连接。

#4


绕开windows socket一层的话,必须使用自己封装的tcp/ip协议栈。
如果你使用的是windows socket的话,默认是向网卡传送数据,而你现在需要的是向窗口发送封装好的ppp包。这一层是从windows系统中无法分开的。
所以tcp还是要自己实现,做好心里准备。

#5


如果你用vc在windows下开发,没有必要实现ppp,直接用ras拨号,将mc35配置为普通modem

如果最终你要转化为单板机中的程序,那么必须实现ppp / ip/ tcp(udp)/ ftp....

#6


在认真做笔记。。。

#7


关注…………

#8


"现在已经实现了LCP,CHAP及IPCP协议的认证"
  厉害, 这么底层的协议都把它做出来了
socket是建立在TCP/IP上的, 所以你要用socket就得实现TCP/IP, 至于是不是得
自己实现就得再看了, 或则干脆就不用socket(得看你的需求)

#9


楼主呢?能不能发表一下你现在的意见?大家的回答是不是针对你的问题的?还是不来了?

#10


ding!

#11


从楼主的叙述来看,对PPP协议已经有很深的了解了,呵呵~~那对TCP/IP协议的了解应该也不会差到哪儿去咯。
现在看来,你的PPP协议已经“通”了,但是要想办法让Windows把你实现的PPP协议作为它的一个网络“接口”,这样你就能够用Windows的tcp/ip协议和winsock接口了。我觉得如果要让windows来接受你的PPP协议,估计要写一个驱动程序了,又是麻烦事~~~~

#12


这个问题我在以前的帖子里回答过了呀,再贴一次吧

ATD*99***1#后,会收到一大堆数据,这是服务器发来的PPP协议请求,详细如下:
R: read   W: Write
R: 7E FF 7D 23 C0 21 7D 21 7D 23 7D 20 7D 3D 7D 21 7D 24 7D 27 D0 7D 22 7D 26 7D 20 7D 2A 7D 20 7D 20 7D 27 7D 22 7D 28 7D 22 

7D 25 7D 26 BB 6A E4 93 7D 23 7D 25 C2 23 7D 25 34 89 7E
W: 7E FF 7D 23 C0 21 7D 21 7D 21 7D 20 7D 37 7D 22 7D 26 7D 20 7D 2A 7D 20 7D 20 7D 25 7D 26 7D 20 4E 9B 7D 31 7D 27 7D 22 7D 

28 7D 22 7D 2D 7D 23 7D 26 8F 7D 26 7E
R: 7E FF 7D 23 C0 21 7D 24 7D 21 7D 20 7D 27 7D 2D 7D 23 7D 26 86 32 7E
W: 7E FF 7D 23 C0 21 7D 21 7D 22 7D 20 7D 34 7D 22 7D 26 7D 20 7D 2A 7D 20 7D 20 7D 25 7D 26 7D 20 4E 9B 7D 31 7D 27 7D 22 7D 

28 7D 22 C3 7D 3E 7E
R: 7E FF 7D 23 C0 21 7D 22 7D 22 7D 20 7D 34 7D 22 7D 26 7D 20 7D 2A 7D 20 7D 20 7D 25 7D 26 7D 20 4E 9B 7D 31 7D 27 7D 22 7D 

28 7D 22 28 77 7E
R: 7E FF 7D 23 C0 21 7D 21 7D 23 7D 20 7D 3D 7D 21 7D 24 7D 27 D0 7D 22 7D 26 7D 20 7D 2A 7D 20 7D 20 7D 27 7D 22 7D 28 7D 22 

7D 25 7D 26 BB 6A E4 93 7D 23 7D 25 C2 23 7D 25 34 89 7E
W: 7E FF 7D 23 C0 21 7D 22 7D 23 7D 20 7D 3D 7D 21 7D 24 7D 27 D0 7D 22 7D 26 7D 20 7D 2A 7D 20 7D 20 7D 27 7D 22 7D 28 7D 22 

7D 25 7D 26 BB 6A E4 7D B3 7D 23 7D 25 C2 23 7D 25 76 8A 7E

可根据
7d ** ==>**异或0x20

7d 5d ==> 7d

7d 5e ==> 7e
进行转换

*****转换转义字符后*****
R: 7E FF 03 C0 21 01 03 00 1D 01 04 07 D0 02 06 00 0A 00 00 07 02 08 02 05 06 BB 6A E4 93 03 05 C2 23 05 34 89 7E 

W: 7E FF 03 C0 21 01 01 00 17 02 06 00 0A 00 00 05 06 00 4E 9B 11 07 02 08 02 0D 03 06 8F 06 7E 

R: 7E FF 03 C0 21 04 01 00 07 0D 03 06 86 32 7E

W: 7E FF 03 C0 21 01 02 00 14 02 06 00 0A 00 00 05 06 00 4E 9B 11 07 02 08 02 C3 1E 7E 

R: 7E FF 03 C0 21 02 02 00 14 02 06 00 0A 00 00 05 06 00 4E 9B 11 07 02 08 02 28 77 7E 

R: 7E FF 03 C0 21 01 03 00 1D 01 04 07 D0 02 06 00 0A 00 00 07 02 08 02 05 06 BB 6A E4 93 03 05 C2 23 05 34 89 7E

W: 7E FF 03 C0 21 02 03 00 1D 01 04 07 D0 02 06 00 0A 00 00 07 02 08 02 05 06 BB 6A E4 93 03 05 C2 23 05 76 8A 7E
*****************************************
协议的内容分别是
7E (ppp头) FF 03 C0 21(LCP)  01(代码) 03(标识符) 00 1D(长度,16进制) 01(类型) 04(长度) 07 D0(协商内容,Maximum-Receive-Unit) 02(类型) 06(长度) 00 0A 00 00 (协商内容,我也想知道协商什么,但是RFC1661上面没说)07(类型,协议压缩协商) 02(长度) 08(类型,地址,控制域压缩协商) 02(长度) 05(类型) 06(长度) BB 6A E4 93(内容,Magic-Number) 03(类型) 05(长度) C2 23(CHAP,挑战握手验证协议) 05(MD5算法) 34 89 (FCS,校验和)7E(PPP包尾)
*****************************************
R: 7E C2 23 01 01 00 19 14 28 7D 33 4B C8 82 71 8D CE 2B 9E 1E A2 24 9A FD 46 6B 65 2C B8 5D D3 7E  //CHAP协议,使用MD5算法运算,具体参看 RFC1994 RFC1321
W: 7E C2 23 02 01 00 15 10 89 AE AD D2 F4 AF CC 8D 9A FC CA 54 21 D8 B5 8C CF A4 7E
R: 7E C2 23 03 01 00 04 C2
******下面是IPCP协议*********************
W: 7E 80 21 01 01 00 28 02 06 00 2D 0F 01 03 06 00 00 00 00 81 06 00 00 00 00 82 06 00 00 00 00 83 06 00 00 00 00 84 06 00 00 

00 00 97 4C 7E
W: 7E 80 3F 01 01 00 9C 01 8A 5A 48 45 4E 59 55 20 20 20 20 20 20 20 20 20 00 01 48 41 52 44 20 20 20 20 20 20 20 20 20 20 20 

00 02 5A 48 45 4E 59 55 20 20 20 20 20 20 20 20 20 03 01 5A 48 45 4E 59 55 20 20 20 20 20 20 20 20 20 20 01 48 41 52 44 20 20 

20 20 20 20 20 20 20 20 20 1E 02 D5 F3 D3 EA 20 20 20 20 20 20 20 20 20 20 20 03 01 48 41 52 44 20 20 20 20 20 20 20 20 20 20 

20 1D 01 01 02 5F 5F 4D 53 42 52 4F 57 53 45 5F 5F 02 01 02 02 0E 00 07 00 04 00 00 5A 48 45 4E 59 55 E2 0B 7E
R: 7E 80 21 04 01 00 16 02 06 00 2D 0F 01 82 06 00 00 00 00 84 06 00 00 00 00 AC D2 7E
W: 7E 80 21 01 02 00 16 03 06 00 00 00 00 81 06 00 00 00 00 83 06 00 00 00 00 BA 12 7E
R: 7E FF 03 C0 21 08 04 00 A2 80 3F 01 01 00 9C 01 8A 5A 48 45 4E 59 55 20 20 20 20 20 20 20 20 20 00 01 48 41 52 44 20 20 20 

20 20 20 20 20 20 20 20 00 02 5A 48 45 4E 59 55 20 20 20 20 20 20 20 20 20 03 01 5A 48 45 4E 59 55 20 20 20 20 20 20 20 20 20 

20 01 48 41 52 44 20 20 20 20 20 20 20 20 20 20 20 1E 02 D5 F3 D3 EA 20 20 20 20 20 20 20 20 20 20 20 03 01 48 41 52 44 20 20 

20 20 20 20 20 20 20 20 20 1D 01 01 02 5F 5F 4D 53 42 52 4F 57 53 45 5F 5F 02 01 02 02 0E 00 07 00 04 00 00 5A 48 45 4E 59 55 

E7 DE 7E
R: 7E 80 21 01 01 00 0A 03 06 C0 A8 FE FE 48 CC 7E 
W: 7E 80 21 02 01 00 0A 03 06 C0 A8 FE FE 21 B8 7E
W: 7E 80 21 01 03 00 16 03 06 00 00 00 00 81 06 00 00 00 00 83 06 00 00 00 00 D6 25 7E
R: 7E 80 21 03 03 00 16 03 06 0A 5F 10 37 81 06 D3 88 7D 31 6B 83 06 D3 88 12 AB 87 CE 7E
W: 7E 80 21 01 04 00 16 03 06 0A 5F 10 37 81 06 D3 88 7D 31 6B 83 06 D3 88 12 AB 28 10 7E
R: 7E 80 21 02 04 00 16 03 06 0A 5F 10 37 81 06 D3 88 7D 31 6B 83 06 D3 88 12 AB DE E3 7E
W: 7E 21 45 00 00 1C 39 06 00 00 40 01 47 43 0A 5F 10 37 E0 00 00 02 0A 00 F5 FF 00 00 00 00 5F 4C 7E

相关的一些RFC分别是RFC1661(LCP),RFC1662(FCS),RFC1994(CHAP),RFC1321(MD5算法),另外的参看相关RFC
RFC翻译计划网址:http://www.china-pub.com/computers/eMook/emooknew/RFC/RFC.htm
英文的RFC也可以从这里下载

#1


我也在做这,讨论一下阿。
ip那部分应该需要封装把,是不是还得实现tcp/ip协议栈阿

#2


PPP连接后,需要建立TCP connection,然后才能建立socket连接吧。我也是猜测的,没有具体写过程序。希望高手参与。

#3


tcp/ip协议应当需要自己去封装吧,socket应用应当是默认的微软的平台下的一些通讯协议,是微软封装好的了,socket不能找到你自建立的连接。

#4


绕开windows socket一层的话,必须使用自己封装的tcp/ip协议栈。
如果你使用的是windows socket的话,默认是向网卡传送数据,而你现在需要的是向窗口发送封装好的ppp包。这一层是从windows系统中无法分开的。
所以tcp还是要自己实现,做好心里准备。

#5


如果你用vc在windows下开发,没有必要实现ppp,直接用ras拨号,将mc35配置为普通modem

如果最终你要转化为单板机中的程序,那么必须实现ppp / ip/ tcp(udp)/ ftp....

#6


在认真做笔记。。。

#7


关注…………

#8


"现在已经实现了LCP,CHAP及IPCP协议的认证"
  厉害, 这么底层的协议都把它做出来了
socket是建立在TCP/IP上的, 所以你要用socket就得实现TCP/IP, 至于是不是得
自己实现就得再看了, 或则干脆就不用socket(得看你的需求)

#9


楼主呢?能不能发表一下你现在的意见?大家的回答是不是针对你的问题的?还是不来了?

#10


ding!

#11


从楼主的叙述来看,对PPP协议已经有很深的了解了,呵呵~~那对TCP/IP协议的了解应该也不会差到哪儿去咯。
现在看来,你的PPP协议已经“通”了,但是要想办法让Windows把你实现的PPP协议作为它的一个网络“接口”,这样你就能够用Windows的tcp/ip协议和winsock接口了。我觉得如果要让windows来接受你的PPP协议,估计要写一个驱动程序了,又是麻烦事~~~~

#12


这个问题我在以前的帖子里回答过了呀,再贴一次吧

ATD*99***1#后,会收到一大堆数据,这是服务器发来的PPP协议请求,详细如下:
R: read   W: Write
R: 7E FF 7D 23 C0 21 7D 21 7D 23 7D 20 7D 3D 7D 21 7D 24 7D 27 D0 7D 22 7D 26 7D 20 7D 2A 7D 20 7D 20 7D 27 7D 22 7D 28 7D 22 

7D 25 7D 26 BB 6A E4 93 7D 23 7D 25 C2 23 7D 25 34 89 7E
W: 7E FF 7D 23 C0 21 7D 21 7D 21 7D 20 7D 37 7D 22 7D 26 7D 20 7D 2A 7D 20 7D 20 7D 25 7D 26 7D 20 4E 9B 7D 31 7D 27 7D 22 7D 

28 7D 22 7D 2D 7D 23 7D 26 8F 7D 26 7E
R: 7E FF 7D 23 C0 21 7D 24 7D 21 7D 20 7D 27 7D 2D 7D 23 7D 26 86 32 7E
W: 7E FF 7D 23 C0 21 7D 21 7D 22 7D 20 7D 34 7D 22 7D 26 7D 20 7D 2A 7D 20 7D 20 7D 25 7D 26 7D 20 4E 9B 7D 31 7D 27 7D 22 7D 

28 7D 22 C3 7D 3E 7E
R: 7E FF 7D 23 C0 21 7D 22 7D 22 7D 20 7D 34 7D 22 7D 26 7D 20 7D 2A 7D 20 7D 20 7D 25 7D 26 7D 20 4E 9B 7D 31 7D 27 7D 22 7D 

28 7D 22 28 77 7E
R: 7E FF 7D 23 C0 21 7D 21 7D 23 7D 20 7D 3D 7D 21 7D 24 7D 27 D0 7D 22 7D 26 7D 20 7D 2A 7D 20 7D 20 7D 27 7D 22 7D 28 7D 22 

7D 25 7D 26 BB 6A E4 93 7D 23 7D 25 C2 23 7D 25 34 89 7E
W: 7E FF 7D 23 C0 21 7D 22 7D 23 7D 20 7D 3D 7D 21 7D 24 7D 27 D0 7D 22 7D 26 7D 20 7D 2A 7D 20 7D 20 7D 27 7D 22 7D 28 7D 22 

7D 25 7D 26 BB 6A E4 7D B3 7D 23 7D 25 C2 23 7D 25 76 8A 7E

可根据
7d ** ==>**异或0x20

7d 5d ==> 7d

7d 5e ==> 7e
进行转换

*****转换转义字符后*****
R: 7E FF 03 C0 21 01 03 00 1D 01 04 07 D0 02 06 00 0A 00 00 07 02 08 02 05 06 BB 6A E4 93 03 05 C2 23 05 34 89 7E 

W: 7E FF 03 C0 21 01 01 00 17 02 06 00 0A 00 00 05 06 00 4E 9B 11 07 02 08 02 0D 03 06 8F 06 7E 

R: 7E FF 03 C0 21 04 01 00 07 0D 03 06 86 32 7E

W: 7E FF 03 C0 21 01 02 00 14 02 06 00 0A 00 00 05 06 00 4E 9B 11 07 02 08 02 C3 1E 7E 

R: 7E FF 03 C0 21 02 02 00 14 02 06 00 0A 00 00 05 06 00 4E 9B 11 07 02 08 02 28 77 7E 

R: 7E FF 03 C0 21 01 03 00 1D 01 04 07 D0 02 06 00 0A 00 00 07 02 08 02 05 06 BB 6A E4 93 03 05 C2 23 05 34 89 7E

W: 7E FF 03 C0 21 02 03 00 1D 01 04 07 D0 02 06 00 0A 00 00 07 02 08 02 05 06 BB 6A E4 93 03 05 C2 23 05 76 8A 7E
*****************************************
协议的内容分别是
7E (ppp头) FF 03 C0 21(LCP)  01(代码) 03(标识符) 00 1D(长度,16进制) 01(类型) 04(长度) 07 D0(协商内容,Maximum-Receive-Unit) 02(类型) 06(长度) 00 0A 00 00 (协商内容,我也想知道协商什么,但是RFC1661上面没说)07(类型,协议压缩协商) 02(长度) 08(类型,地址,控制域压缩协商) 02(长度) 05(类型) 06(长度) BB 6A E4 93(内容,Magic-Number) 03(类型) 05(长度) C2 23(CHAP,挑战握手验证协议) 05(MD5算法) 34 89 (FCS,校验和)7E(PPP包尾)
*****************************************
R: 7E C2 23 01 01 00 19 14 28 7D 33 4B C8 82 71 8D CE 2B 9E 1E A2 24 9A FD 46 6B 65 2C B8 5D D3 7E  //CHAP协议,使用MD5算法运算,具体参看 RFC1994 RFC1321
W: 7E C2 23 02 01 00 15 10 89 AE AD D2 F4 AF CC 8D 9A FC CA 54 21 D8 B5 8C CF A4 7E
R: 7E C2 23 03 01 00 04 C2
******下面是IPCP协议*********************
W: 7E 80 21 01 01 00 28 02 06 00 2D 0F 01 03 06 00 00 00 00 81 06 00 00 00 00 82 06 00 00 00 00 83 06 00 00 00 00 84 06 00 00 

00 00 97 4C 7E
W: 7E 80 3F 01 01 00 9C 01 8A 5A 48 45 4E 59 55 20 20 20 20 20 20 20 20 20 00 01 48 41 52 44 20 20 20 20 20 20 20 20 20 20 20 

00 02 5A 48 45 4E 59 55 20 20 20 20 20 20 20 20 20 03 01 5A 48 45 4E 59 55 20 20 20 20 20 20 20 20 20 20 01 48 41 52 44 20 20 

20 20 20 20 20 20 20 20 20 1E 02 D5 F3 D3 EA 20 20 20 20 20 20 20 20 20 20 20 03 01 48 41 52 44 20 20 20 20 20 20 20 20 20 20 

20 1D 01 01 02 5F 5F 4D 53 42 52 4F 57 53 45 5F 5F 02 01 02 02 0E 00 07 00 04 00 00 5A 48 45 4E 59 55 E2 0B 7E
R: 7E 80 21 04 01 00 16 02 06 00 2D 0F 01 82 06 00 00 00 00 84 06 00 00 00 00 AC D2 7E
W: 7E 80 21 01 02 00 16 03 06 00 00 00 00 81 06 00 00 00 00 83 06 00 00 00 00 BA 12 7E
R: 7E FF 03 C0 21 08 04 00 A2 80 3F 01 01 00 9C 01 8A 5A 48 45 4E 59 55 20 20 20 20 20 20 20 20 20 00 01 48 41 52 44 20 20 20 

20 20 20 20 20 20 20 20 00 02 5A 48 45 4E 59 55 20 20 20 20 20 20 20 20 20 03 01 5A 48 45 4E 59 55 20 20 20 20 20 20 20 20 20 

20 01 48 41 52 44 20 20 20 20 20 20 20 20 20 20 20 1E 02 D5 F3 D3 EA 20 20 20 20 20 20 20 20 20 20 20 03 01 48 41 52 44 20 20 

20 20 20 20 20 20 20 20 20 1D 01 01 02 5F 5F 4D 53 42 52 4F 57 53 45 5F 5F 02 01 02 02 0E 00 07 00 04 00 00 5A 48 45 4E 59 55 

E7 DE 7E
R: 7E 80 21 01 01 00 0A 03 06 C0 A8 FE FE 48 CC 7E 
W: 7E 80 21 02 01 00 0A 03 06 C0 A8 FE FE 21 B8 7E
W: 7E 80 21 01 03 00 16 03 06 00 00 00 00 81 06 00 00 00 00 83 06 00 00 00 00 D6 25 7E
R: 7E 80 21 03 03 00 16 03 06 0A 5F 10 37 81 06 D3 88 7D 31 6B 83 06 D3 88 12 AB 87 CE 7E
W: 7E 80 21 01 04 00 16 03 06 0A 5F 10 37 81 06 D3 88 7D 31 6B 83 06 D3 88 12 AB 28 10 7E
R: 7E 80 21 02 04 00 16 03 06 0A 5F 10 37 81 06 D3 88 7D 31 6B 83 06 D3 88 12 AB DE E3 7E
W: 7E 21 45 00 00 1C 39 06 00 00 40 01 47 43 0A 5F 10 37 E0 00 00 02 0A 00 F5 FF 00 00 00 00 5F 4C 7E

相关的一些RFC分别是RFC1661(LCP),RFC1662(FCS),RFC1994(CHAP),RFC1321(MD5算法),另外的参看相关RFC
RFC翻译计划网址:http://www.china-pub.com/computers/eMook/emooknew/RFC/RFC.htm
英文的RFC也可以从这里下载