真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

再論關(guān)于如何學(xué)習(xí)網(wǎng)絡(luò)編程

前些天在一個(gè)論壇上和一位朋友爭(zhēng)論了學(xué)習(xí)網(wǎng)絡(luò)編程的方法,而后發(fā)表了《TCP協(xié)議疑難雜癥全景解析》,不算猛文,但也得到了一些回應(yīng),大家都是對(duì)Richard Stevens的兩本書情有獨(dú)鐘:《TCP/IP詳解(前兩卷)》/《Unix網(wǎng)絡(luò)編程》。我提出了自己的不同的聲音,首先我不同意這兩本書很重要,其次我覺得這兩本書根本就不重要!
     首先聲明,本人并不是什么高手或者頂級(jí)***,也沒有能力通過TCP/IP網(wǎng)絡(luò)將電話免費(fèi)盜打到梵蒂岡教皇那里,...只是稍微了解一些任何人本應(yīng)該都了解的東西,只是大部分人在學(xué)校沒有完成這個(gè)目標(biāo)而已,不過沒有關(guān)系,自學(xué)就可以了,一般而言,學(xué)校也是不怎么教深層次的網(wǎng)絡(luò)知識(shí)的。那么現(xiàn)在就設(shè)計(jì)到了一個(gè)問題,那就是怎么學(xué)的問題。
     要想精通網(wǎng)絡(luò)編程,那么首先要明白,網(wǎng)絡(luò)編程實(shí)際上是兩個(gè)概念,一個(gè)是網(wǎng)絡(luò),一個(gè)是編程。很多人只是學(xué)會(huì)了所謂了socket接口,知道了什么recv的參數(shù),知道了XYsockopt,就說自己精通網(wǎng)絡(luò)編程,實(shí)際上他只是知道了編程,而可能對(duì)網(wǎng)絡(luò)一竅不通。他知道交叉線和直連線為何這樣區(qū)分嗎(更進(jìn)一步,為何交叉線連交換機(jī)而不能連主機(jī)[聲明在非自協(xié)商情況下,以防編程的人鉆牛角尖]);她可能知道慢啟動(dòng)這個(gè)詞,然而她知道如何調(diào)優(yōu)TCP嗎?他可能知道路由怎么配置,然而遇到路由混亂能解決嗎?這些問題往往都是很多科班出身人所忽略的,他們只在乎編程,而忽略了網(wǎng)絡(luò),自以為學(xué)會(huì)了編程就學(xué)會(huì)了一切,殊不知自己可能連什么是默認(rèn)網(wǎng)關(guān)都不知道。
     我不知道為何大四畢業(yè)不久的科班生有時(shí)候反而不如網(wǎng)吧的網(wǎng)管,是單純的經(jīng)驗(yàn)問題嗎?有點(diǎn)原因,然而還有更深層次的原因,我不想用紙上談兵這類貶義詞,只是想說大家對(duì)C太熱衷了,以至于忽略了其它,難道能用bash完成同樣的事不更好嗎?為何單純只有C能體現(xiàn)技術(shù)含量呢?因?yàn)橐缿貱,因此撲在了socket,因此認(rèn)為接網(wǎng)線,配路由,寫腳本之類的事都是網(wǎng)管干的,結(jié)果自己就是一個(gè)代碼民工。當(dāng)然,這個(gè)現(xiàn)象也許和大學(xué)的課程安排有關(guān),所幸我沒有接受過那樣的安排,我們當(dāng)時(shí)只是簡(jiǎn)單的培訓(xùn)了網(wǎng)絡(luò)協(xié)議和上機(jī)教程,隨后我們還拿著網(wǎng)線鉗做網(wǎng)線,好像是民工一樣,然而正是那個(gè)時(shí)候,歪打正著的打下了日后需要的功底。
     因此,學(xué)習(xí)網(wǎng)絡(luò)編程的要點(diǎn)中,網(wǎng)絡(luò)是更重要的,如果你把協(xié)議都了解了,都精通了,你的接下來的選擇有很多,你可以寫bash,也可以寫java...但是如果你只會(huì)socket,那么可要當(dāng)心夾生飯的危險(xiǎn),你的既有理念會(huì)阻止你去學(xué)習(xí)做網(wǎng)線之類的事(你認(rèn)為只有寫C的才是研發(fā))(當(dāng)然并不是說精通網(wǎng)絡(luò)一定要做什么網(wǎng)線,只是隨便舉個(gè)例子而已)。學(xué)習(xí)曲線一定要確定。
     Richard Stevens的兩本書,從某種意義上講,比較適合對(duì)網(wǎng)絡(luò)協(xié)議已經(jīng)很了解的人,他的《Unix網(wǎng)絡(luò)編程》針對(duì)的就是編程,而他的《TCP/IP詳解》系列我感覺還缺一本,那就是第0卷:TCP/IP協(xié)議概述,如果根本不懂什么是TCP/IP,直接通過抓包結(jié)果學(xué)習(xí),那絕對(duì)是一頭霧水或者喜歡就是論事,他的這本書比較類似國(guó)人毛德操的Linux內(nèi)核情景分析兩卷本,當(dāng)然Richard Stevens在也不會(huì)再版了...因此也不便多說什么了。我主要想說的就是,在看Richard Stevens的書之前,你要確認(rèn)自己已經(jīng)很理解TCP/IP了。
     另外,有位朋友提到要看TCP/IP的實(shí)現(xiàn),當(dāng)然這是必要,看Linux的實(shí)現(xiàn)是最方便的。然而對(duì)于自己來說,要看有沒有必要,如果你只是一個(gè)實(shí)施人員或者售前支持,那么就沒有必要十分精通它的實(shí)現(xiàn),因?yàn)榫ㄆ鋵?shí)現(xiàn)最主要的目的是調(diào)優(yōu),而調(diào)優(yōu)是研發(fā)的事。但是最為一條總的學(xué)習(xí)路線,看實(shí)現(xiàn)總是沒有壞處的。
     雖然我好像一直都在降低編程的重要性,但是事實(shí)上,正好相反,編程的地位應(yīng)該是最高的,它正好像蒸煮好的米飯一樣,是一切的最終實(shí)現(xiàn),但是切莫產(chǎn)生夾生飯。任何的TCP實(shí)現(xiàn)都是通過編程語言實(shí)現(xiàn)的,因此我對(duì)學(xué)習(xí)網(wǎng)絡(luò)編程的建議是:
1.寫代碼,了解API,但是不要在此階段停留太久;
2.閱讀RFC,了解原理,這個(gè)步驟一定要細(xì)致;
3.寫代碼,側(cè)重原理的確認(rèn),確認(rèn)你所在RFC中看到的事情是真的,這個(gè)階段要花費(fèi)些時(shí)間;
4.閑暇時(shí)可以看看《TCP/IP詳解》,《Unix網(wǎng)絡(luò)編程》之類的書,沒時(shí)間就算了;
4.1.如果你就是想完成工作,養(yǎng)家糊口,那么到這一步就為止了,否則接著往下看。
5.看Linux的TCP/IP協(xié)議棧實(shí)現(xiàn),必要時(shí)候Hack之,如果你真的想理解TCP/IP并且搞點(diǎn)大動(dòng)作,這個(gè)階段花點(diǎn)時(shí)間是值得的;
6.找一個(gè)網(wǎng)卡驅(qū)動(dòng)看看,看看網(wǎng)卡為何這么設(shè)計(jì),主要的是看看文檔的說明,并且hack驅(qū)動(dòng),反證文檔的正確性;
7.寫代碼,利用學(xué)到的知識(shí)不斷提升性能,這個(gè)階段就是完全自主的階段了,你應(yīng)該拋開一切的文檔資料,自己實(shí)現(xiàn)一個(gè)優(yōu)化的協(xié)議;
8.寫代碼,還是寫代碼,這個(gè)階段,可能你要和國(guó)際大牛接觸了,主要通過Maillist...



文章標(biāo)題:再論關(guān)于如何學(xué)習(xí)網(wǎng)絡(luò)編程
鏈接URL:http://weahome.cn/article/poihso.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部