对代码研究的一些感触
期待已久的版面终于开张了,心里高兴,以后有地方可以向高手请教了,想着要为这个版面出一份力,写一份自己的感受给初学者,以激发兴趣和少走弯路记得读研开始的时候,老师问我们最近忙什么,我说我在看tcp/ip协议,他问我怎么看的,我说我就是泛泛看了看,他说,研究协议你不看源代码,那叫什么研究。还有一次,导师请一牛人来讲座,他谈到了stevens的三本书,看我们都很茫然,他很惊讶,说学通信的这三书本都没读过,实在是太可惜了,这三本书是通信专业必读的。从此,我开始了这三本书的学习。
到现在,我也才学习了大半年,而对于偌大的tcp/ip栈的认识恐怕连熟悉都还谈不到,这篇贴子写给希望研究代码而且刚入门的人,高手就权作一笑吧:)
首先,这书是建立在unix上面的,但并不需要太多的unix知识和操作系统知识,熟悉C就够了,当然,你最好把卷一看过三篇再看卷二比较好。
其次,要有心理准备,读代码确实是个很枯燥,而且有难度的事情,所以你要做的就是坚持,切不可三天打鱼两天晒网,有时候你会发现不知道说的些什么,我的感受是,你大可以一次看不懂再看第二次,三次,这本书注释很详细,相信三次后,你会明白一些的。
第三,如果第一次看,不要想着读懂它,这是不可能的,你要做的是通读,了解插口,协议,接口层的层次关系,以及一些主要函数之间的调用,能画出一些主要的流程,比如从建立一个套接字后,绑定,监听,接受,到发出报文,报文如何经过协议层,再到接口层,再到目的主机,目的主机再从接口接收再传到进程。不要想着要精通每一章,有些内容,如果有后面的知识,再来理解前面的知识,将会很容易 。
第四,初读不要太注重细节,更不要钻牛角尖,深有感触的就是,如果顺着一条主线下去感觉很顺利,但脑中突然冒出了一个想法,尽管这在实际中很少出现,但如果去研究它,会发现头疼不已,所以如果不是对代码有了全面的了解,不要太关注细节了。
第五,初看我觉得SLIP,IGMP,以及路由我觉得可以略过(路由第一章要做了解),感觉它们在整个的理解上并没有占多大的作用,以后需要时再看也不迟。
第六,爱惜你的书,每次读代码时都会前后翻,不可避免的,如果不爱惜,等你看完一次,估计书已破不成样了。:)
第七,有做笔记的习惯,这么多东西,随时记下自己的心得,不管正确与否,这么多东西,看了后面就会忘前面。
第八,如果对代码有一定的熟悉了,再怎样呢?应该是自己修改代码,然后编译内核了吧,哈哈 ,我不知道了,:)因为我还没处于这个阶段,高手补充。
希望这个版面能红火起来,如果在代码研究过程中有朋友指导,讨论,将是一件有趣而且大有裨益的事情,有志于代码研究的朋友们,行动起来。 好贴。 stevens的哪三本书? 谢楼主好建议~~ 哦,那三本书是《tcp/ip详解》卷一,二,三
第三卷就忽略吧
也是,第三卷我也没怎么看 看过第一卷的,但第二卷只看了前面100页就没看下去了,读的中文版的感觉读的不顺.后来读完了stevens网络编程的两卷,希望有时间能看完TCP/IP的第二卷. 只看过第一卷,而且没怎么看,主要看源代码 网络编程那也就讲讲一些API的应用,
TCP/IP详解很好,第一本几年前看的,也就理论。第二本才是实现和编码的关键啊! 回去再次拿起来读!!
这次要多读几遍!
回复 #1 lyl19 的帖子
研究协议你不看源代码,那叫什么研究发人深省的话啊,有方向了 昨天刚买了tcp/ip vol2
要努力了的说... 深有同感。是该好好学习一下代码,熟悉内部原理。“厚积薄发”啊!
支持
感觉没有实践的机会 thanks ^_^ 没实践机会确实是个很大的问题,才过了半年,我感觉除了大致流程我还记得,其它都忘干净了.如果能学了及时实践将是很好的办法 卷2应该多看看 顶一下,好铁! 好好 我有卷一和卷二,刚刚开始看一!希望能有收获! 感激楼主指点啊!
现在才找到一点点方向啊! hehe 还没看过第二本 不过个人觉得第三本好像没毛用 顶
回复 #1 lyl19 的帖子
向各位问好!请多多关照!今天才发现有这么一个好地方,高兴啊!可惜本人比较菜,
谢谢搂主的好贴,让我看到了方向。希望能在此向大家学习进步一下! 有机会就要看看了哦 什么是原代码 顶一下 有下载吗,我刚刚学linux 请帮忙一下! 买一本吧,这样大部头的书看屏幕多累啊