前些天在一個論壇上和一位朋友爭論了學習網(wǎng)絡編程的方法,而后發(fā)表了《TCP協(xié)議疑難雜癥全景解析》,不算猛文,但也得到了一些回應,大家都是對Richard Stevens的兩本書情有獨鐘:《TCP/IP詳解(前兩卷)》/《Unix網(wǎng)絡編程》。我提出了自己的不同的聲音,首先我不同意這兩本書很重要,其次我覺得這兩本書根本就不重要!
首先聲明,本人并不是什么高手或者頂級***,也沒有能力通過TCP/IP網(wǎng)絡將電話免費盜打到梵蒂岡教皇那里,...只是稍微了解一些任何人本應該都了解的東西,只是大部分人在學校沒有完成這個目標而已,不過沒有關(guān)系,自學就可以了,一般而言,學校也是不怎么教深層次的網(wǎng)絡知識的。那么現(xiàn)在就設計到了一個問題,那就是怎么學的問題。
要想精通網(wǎng)絡編程,那么首先要明白,網(wǎng)絡編程實際上是兩個概念,一個是網(wǎng)絡,一個是編程。很多人只是學會了所謂了socket接口,知道了什么recv的參數(shù),知道了XYsockopt,就說自己精通網(wǎng)絡編程,實際上他只是知道了編程,而可能對網(wǎng)絡一竅不通。他知道交叉線和直連線為何這樣區(qū)分嗎(更進一步,為何交叉線連交換機而不能連主機[聲明在非自協(xié)商情況下,以防編程的人鉆牛角尖]);她可能知道慢啟動這個詞,然而她知道如何調(diào)優(yōu)TCP嗎?他可能知道路由怎么配置,然而遇到路由混亂能解決嗎?這些問題往往都是很多科班出身人所忽略的,他們只在乎編程,而忽略了網(wǎng)絡,自以為學會了編程就學會了一切,殊不知自己可能連什么是默認網(wǎng)關(guān)都不知道。
我不知道為何大四畢業(yè)不久的科班生有時候反而不如網(wǎng)吧的網(wǎng)管,是單純的經(jīng)驗問題嗎?有點原因,然而還有更深層次的原因,我不想用紙上談兵這類貶義詞,只是想說大家對C太熱衷了,以至于忽略了其它,難道能用bash完成同樣的事不更好嗎?為何單純只有C能體現(xiàn)技術(shù)含量呢?因為依戀C,因此撲在了socket,因此認為接網(wǎng)線,配路由,寫腳本之類的事都是網(wǎng)管干的,結(jié)果自己就是一個代碼民工。當然,這個現(xiàn)象也許和大學的課程安排有關(guān),所幸我沒有接受過那樣的安排,我們當時只是簡單的培訓了網(wǎng)絡協(xié)議和上機教程,隨后我們還拿著網(wǎng)線鉗做網(wǎng)線,好像是民工一樣,然而正是那個時候,歪打正著的打下了日后需要的功底。
因此,學習網(wǎng)絡編程的要點中,網(wǎng)絡是更重要的,如果你把協(xié)議都了解了,都精通了,你的接下來的選擇有很多,你可以寫bash,也可以寫java...但是如果你只會socket,那么可要當心夾生飯的危險,你的既有理念會阻止你去學習做網(wǎng)線之類的事(你認為只有寫C的才是研發(fā))(當然并不是說精通網(wǎng)絡一定要做什么網(wǎng)線,只是隨便舉個例子而已)。學習曲線一定要確定。
Richard Stevens的兩本書,從某種意義上講,比較適合對網(wǎng)絡協(xié)議已經(jīng)很了解的人,他的《Unix網(wǎng)絡編程》針對的就是編程,而他的《TCP/IP詳解》系列我感覺還缺一本,那就是第0卷:TCP/IP協(xié)議概述,如果根本不懂什么是TCP/IP,直接通過抓包結(jié)果學習,那絕對是一頭霧水或者喜歡就是論事,他的這本書比較類似國人毛德操的Linux內(nèi)核情景分析兩卷本,當然Richard Stevens在也不會再版了...因此也不便多說什么了。我主要想說的就是,在看Richard Stevens的書之前,你要確認自己已經(jīng)很理解TCP/IP了。
另外,有位朋友提到要看TCP/IP的實現(xiàn),當然這是必要,看Linux的實現(xiàn)是最方便的。然而對于自己來說,要看有沒有必要,如果你只是一個實施人員或者售前支持,那么就沒有必要十分精通它的實現(xiàn),因為精通其實現(xiàn)最主要的目的是調(diào)優(yōu),而調(diào)優(yōu)是研發(fā)的事。但是最為一條總的學習路線,看實現(xiàn)總是沒有壞處的。
雖然我好像一直都在降低編程的重要性,但是事實上,正好相反,編程的地位應該是最高的,它正好像蒸煮好的米飯一樣,是一切的最終實現(xiàn),但是切莫產(chǎn)生夾生飯。任何的TCP實現(xiàn)都是通過編程語言實現(xiàn)的,因此我對學習網(wǎng)絡編程的建議是:
1.寫代碼,了解API,但是不要在此階段停留太久;
2.閱讀RFC,了解原理,這個步驟一定要細致;
3.寫代碼,側(cè)重原理的確認,確認你所在RFC中看到的事情是真的,這個階段要花費些時間;
4.閑暇時可以看看《TCP/IP詳解》,《Unix網(wǎng)絡編程》之類的書,沒時間就算了;
4.1.如果你就是想完成工作,養(yǎng)家糊口,那么到這一步就為止了,否則接著往下看。
5.看Linux的TCP/IP協(xié)議棧實現(xiàn),必要時候Hack之,如果你真的想理解TCP/IP并且搞點大動作,這個階段花點時間是值得的;
6.找一個網(wǎng)卡驅(qū)動看看,看看網(wǎng)卡為何這么設計,主要的是看看文檔的說明,并且hack驅(qū)動,反證文檔的正確性;
7.寫代碼,利用學到的知識不斷提升性能,這個階段就是完全自主的階段了,你應該拋開一切的文檔資料,自己實現(xiàn)一個優(yōu)化的協(xié)議;
8.寫代碼,還是寫代碼,這個階段,可能你要和國際大牛接觸了,主要通過Maillist...
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
創(chuàng)新互聯(lián)為企業(yè)級客戶提高一站式互聯(lián)網(wǎng)+設計服務,主要包括網(wǎng)站設計制作、
成都網(wǎng)站設計、
APP應用開發(fā)、小程序設計、宣傳片制作、LOGO設計等,幫助客戶快速提升營銷能力和企業(yè)形象,創(chuàng)新互聯(lián)各部門都有經(jīng)驗豐富的經(jīng)驗,可以確保每一個作品的質(zhì)量和創(chuàng)作周期,同時每年都有很多新員工加入,為我們帶來大量新的創(chuàng)意。
網(wǎng)站名稱:再論關(guān)于如何學習網(wǎng)絡編程-創(chuàng)新互聯(lián)
標題來源:http://www.rwnh.cn/article26/igdcg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供云服務器、外貿(mào)網(wǎng)站建設、Google、關(guān)鍵詞優(yōu)化、搜索引擎優(yōu)化、網(wǎng)站排名
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源:
創(chuàng)新互聯(lián)