午夜听风的代码人生

吾生也有涯,而知也无涯。以有涯随无涯,殆已

原创 两天调通tcp协议栈收藏

新一篇: 品尝delphi2005 | 旧一篇: 两本书,有时间去书店看看。

写了一个协议栈。

上个星期四开始,看了看代码,上了上网。周六周日研究了一下AVR的板子,研究了一下AT指令。
最后发现AVR的板子有问题。
对代码还是一头雾水。

这周星期一换了块ARM开发板,花了一天时间调试ARM的两个串口。
顺便在电脑上写了一个误码率测试的程序。
然后写了一个解析ppp的程序,辅助分析串口收到的数据。

星期一晚上正式开始调试协议。
通宵,基本把ppp协议弄明白了,能够拨上网,睡觉。

星期二下午调通用户名密码验证,请求DNS和本机IP成功。ppp连接完毕。

星期三上午tcp第一次握手成功,后来发现ARM编译器处理高低字节有问题,大幅度修改程序。
对固定ip,服务端有返回第二次握手,而笔记本gprs上网,则不返回。怀疑是校验码算得不对。
找了一堆标准的tcp包,折腾了很久才把校验码凑对,似乎和标准上说的有出入。

然后发送第三次握手,理论上应该连接完毕,但是收发数据没响应。
原因:确认码没填对,服务端认为没收到确认包。

终于晚饭前搞定,能正常收发数据。至此,tcp连接算基本通过。
实际工作才两天而已。主要是ppp调试比较痛苦。网上的资料说得都含糊其辞,到关键地方就略过不谈了。
很多数据项都不知道具体含义。tcp相对就比较简单了,就是确认码和标志位费点代码。
udp还没调,应该比tcp更简单,毕竟没有状态。

总结:
1. 外围的准备工作总是花掉80%的时间。
2. 不懂的时候看书看代码怎么看都不明白。懂了以后怎么看都明白。
   比如那本经典的《TCP/IP详解》,个人认为讲述的思路是值得商榷的。
   很多类似的协议、标准的数据都喜欢用大段的描述性的文字,而相对很少用表格,尤其是国外的书。
   举例的程序段也是调用库函数的程序,看完以后还是一头雾水。其实用到的那个函数才是关键性的东西。
   如果我写书的话,会直接把收发的16进制码列出来,然后一层层的剥皮抽丝,分析具体含义,这样绝对
   比市面上的书效果好一百倍。

发表于 @ 2004年11月12日 04:08:00|评论(loading...)|编辑

新一篇: 品尝delphi2005 | 旧一篇: 两本书,有时间去书店看看。

评论

#sniper 发表于2004-11-12 19:44:00  IP: 218.56.50.*
希望能写出技术细节。
#laura 发表于2005-01-20 15:25:00  IP: 221.15.233.*
佩服佩服,希望早日看到你写的书,为我们指点迷津,使我们在书海中不至于迷茫。另,你用什么写的
发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © 午夜听风