Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8104250
  • 博文数量: 159
  • 博客积分: 10424
  • 博客等级: 少将
  • 技术积分: 14615
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-14 12:45
个人简介

啦啦啦~~~

文章分类
文章存档

2015年(5)

2014年(1)

2013年(5)

2012年(10)

2011年(116)

2010年(22)

分类: LINUX

2011-04-23 22:32:12

本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途。
作者:gfree.wind@gmail.com
博客:linuxfocus.blog.chinaunix.net
    

我在刚毕业的时候,曾经准备看过一次内核。但是因为当时水平有限,看得非常郁闷和不解,所以根本就没有检查下来。如果说收获的话,就是知道内核大概是什么样子的。

工作以后,工作也是应用层的。但是始终对内核比较感兴趣,于是linux内核方面的书也看了不少,像《深入理解Linux内核》,《linux内核设计与实现》,《Linux设备驱动程序》,《Unix操作系统设计》,等等。加上不同版本的,估计得有10来本吧。

虽然只看了书,并没有真正去看内核的源代码,但是慢慢的linux内核对我来说,已经不像以前想象的那样神秘了。以前因为觉得操作系统很神奇,所以一直想学习。现在呢,基本的概念和原理也比较了解了,反而没有了以前那种对内核知识的渴求了。尤其是我的工作基本上与内核无关,所以对内核的学习也只是浅尝辄止。

慢慢的,随着工作的内容逐渐进入底层,从应用程序到7层,再到4层,3层,2层。我发现只是了解Linux的应用已经远远不够,于是再次兴起了学习linux内核的念头,并真正付诸于行动。

因为工作主要是网络方面,所以我主要是学习tcp/ip方面的源代码。现在发现对应用和上层协议的熟悉,对看内核源代码有极大的好处。现在读源代码,不再像以前那样茫然了。基本上仔细研究研究,查查资料,都可以读懂了。所以我个人觉得,作为一个平常人,还是先把上层应用搞懂以后,最起码写应用程序是把好手的时候,再去学习内核,会容易很多,也更有效率。

现在学习了将近2个月左右。发现自己又走了一些弯路。在学习代码的过程中,我太过于关注代码的细节了,总想把每行代码都搞懂。而实际上,我并不是一个内核开发工程师。对我来讲,对于内核的掌握,不应该是去扣每一行代码,而是内核的框架和设计!搞懂一切细节固然是好,但是在有限的精力和时间的条件下,最大的产出是学习内核的框架和思想。对于网络部分的代码!搞懂包的处理流程,比搞懂一个复杂的数据结构有有用的多!所以以后,我要转变学习的方法,尽量去从大的角度去学习,而不是去研究细节。细节留到以后再去完善。

君子当一日三省其身!在学习的过程中,也要不断的总结和思考!提高自己的学习方法,才能真正的事半功倍!

到今日为止,对于TCP/IP,我已经把一条主线建立起来了。就是我的一篇博文《数据包完整接收流程》,基本上对于数据包从网卡到socket的流程,有了比较清晰的概念——当然只是一个简单的流程,没有涉及太多的细节。但是随着这条主干的建立,我可以沿着这条延伸,建立一条条支路,最后形成一个详细的树状流程——也就是完整的TCP/IP协议栈。

附件是目前我画的学习过程中,涉及的TCP/IP流程,随着时间的推移,我会加入更多的细节。



阅读(9652) | 评论(25) | 转发(1) |
给主人留下些什么吧!~~

GFree_Wind2011-05-13 21:37:21

limsco: 但是,我觉得看源码好难啊!首先就不知道源码太多宏定义的来源。。。.....
慢慢就好了。可以用cscope或者sourceinsight,都是看源码的利器!

limsco2011-05-13 21:00:40

但是,我觉得看源码好难啊!首先就不知道源码太多宏定义的来源。。。

GFree_Wind2011-05-12 10:09:26

kwest: 哈哈,遇到知己了,老兄你是好久毕业的,你的学习方式和工作方向几乎和我一模一样,不知我是你的翻版,还是你是我的翻版。.....
估计大家的情况很多都差不多。毕竟如果不是有特别的指点和技术嗅觉,大部分人都会走一段弯路。我用了这么长时间才真正找到自己的路。你呢?

kwest2011-05-11 22:43:07

哈哈,遇到知己了,老兄你是好久毕业的,你的学习方式和工作方向几乎和我一模一样,不知我是你的翻版,还是你是我的翻版。

GFree_Wind2011-05-07 23:14:04

sjtlqy:
你的协议是看那书的?还是直接linux内的协议代码?
对于现在的协议实现和95年的有什么区别?.....
书籍看一些Orilly的那些经典的linux书,主要是学习原理和概念。具体的看代码就好了。现在的协议实现肯定和95年有大区别了啊。都2.6了啊