再论关于如何学习网络编程

网友投稿 1267 2022-09-24

再论关于如何学习网络编程

再论关于如何学习网络编程

前些天在一个论坛上和一位朋友争论了学习网络编程的方法,而后发表了《TCP协议疑难杂症全景解析》,不算猛文,但也得到了一些回应,大家都是对Richard Stevens的两本书情有独钟:《TCP/IP详解(前两卷)》/《Unix网络编程》。我提出了自己的不同的声音,首先我不同意这两本书很重要,其次我觉得这两本书根本就不重要!

我不知道为何大四毕业不久的科班生有时候反而不如网吧的网管,是单纯的经验问题吗?有点原因,然而还有更深层次的原因,我不想用纸上谈兵这类贬义词,只是想说大家对C太热衷了,以至于忽略了其它,难道能用bash完成同样的事不更好吗?为何单纯只有C能体现技术含量呢?因为依恋C,因此扑在了socket,因此认为接网线,配路由,写脚本之类的事都是网管干的,结果自己就是一个代码民工。当然,这个现象也许和大学的课程安排有关,所幸我没有接受过那样的安排,我们当时只是简单的培训了网络协议和上机教程,随后我们还拿着网线钳做网线,好像是民工一样,然而正是那个时候,歪打正着的打下了日后需要的功底。

因此,学习网络编程的要点中,网络是更重要的,如果你把协议都了解了,都精通了,你的接下来的选择有很多,你可以写bash,也可以写java...但是如果你只会socket,那么可要当心夹生饭的危险,你的既有理念会阻止你去学习做网线之类的事(你认为只有写C的才是研发)(当然并不是说精通网络一定要做什么网线,只是随便举个例子而已)。学习曲线一定要确定。

Richard Stevens的两本书,从某种意义上讲,比较适合对网络协议已经很了解的人,他的《Unix网络编程》针对的就是编程,而他的《TCP/IP详解》系列我感觉还缺一本,那就是第0卷:TCP/IP协议概述,如果根本不懂什么是TCP/IP,直接通过抓包结果学习,那绝对是一头雾水或者喜欢就是论事,他的这本书比较类似国人毛德操的Linux内核情景分析两卷本,当然Richard Stevens在也不会再版了...因此也不便多说什么了。我主要想说的就是,在看Richard Stevens的书之前,你要确认自己已经很理解TCP/IP了。

另外,有位朋友提到要看TCP/IP的实现,当然这是必要,看Linux的实现是最方便的。然而对于自己来说,要看有没有必要,如果你只是一个实施人员或者售前支持,那么就没有必要十分精通它的实现,因为精通其实现最主要的目的是调优,而调优是研发的事。但是最为一条总的学习路线,看实现总是没有坏处的。

虽然我好像一直都在降低编程的重要性,但是事实上,正好相反,编程的地位应该是最高的,它正好像蒸煮好的米饭一样,是一切的最终实现,但是切莫产生夹生饭。任何的TCP实现都是通过编程语言实现的,因此我对学习网络编程的建议是:

1.写代码,了解API,但是不要在此阶段停留太久;

2.阅读RFC,了解原理,这个步骤一定要细致;

3.写代码,侧重原理的确认,确认你所在RFC中看到的事情是真的,这个阶段要花费些时间;

4.闲暇时可以看看《TCP/IP详解》,《Unix网络编程》之类的书,没时间就算了;

4.1.如果你就是想完成工作,养家糊口,那么到这一步就为止了,否则接着往下看。

5.看Linux的TCP/IP协议栈实现,必要时候Hack之,如果你真的想理解TCP/IP并且搞点大动作,这个阶段花点时间是值得的;

6.找一个网卡驱动看看,看看网卡为何这么设计,主要的是看看文档的说明,并且hack驱动,反证文档的正确性;

7.写代码,利用学到的知识不断提升性能,这个阶段就是完全自主的阶段了,你应该抛开一切的文档资料,自己实现一个优化的协议;

8.写代码,还是写代码,这个阶段,可能你要和国际大牛接触了,主要通过Maillist...

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:网络营销的几种模式是什么?方法有哪些?(网络市场营销的模式有几种)
下一篇:找回Linux/Unix下各系统的密码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~