在畢業(yè)之后,我成功成為了一名IT程序員,開(kāi)始從事網(wǎng)絡(luò)設(shè)備的開(kāi)發(fā)。在入行的時(shí)候我只是在學(xué)校里面學(xué)過(guò)計(jì)算機(jī)網(wǎng)絡(luò),以及有嵌入式編程基礎(chǔ),但沒(méi)有實(shí)際的網(wǎng)絡(luò)方面的實(shí)踐跟工作經(jīng)驗(yàn)。
由于受到那些給我機(jī)會(huì),培養(yǎng)我的高手感染,我想在此總結(jié)一下我的歷程。
在學(xué)習(xí)上按照時(shí)間的先后:
1.使用xshell遠(yuǎn)程登陸linux公司的服務(wù)器。
2.將所以在學(xué)校里面學(xué)習(xí)到的終端命令使用起來(lái),按照公司技術(shù)文檔去編譯一個(gè)應(yīng)用程序。
3.開(kāi)始通過(guò)網(wǎng)絡(luò)學(xué)shell編程,Makefile規(guī)則,pl腳本編程以及GCC工具的使用來(lái)處理make過(guò)程中的報(bào)錯(cuò)。
4.當(dāng)成功把源文件編譯成一個(gè)可執(zhí)行文件之后,我又開(kāi)始由頭到尾地去跟著代碼去學(xué)習(xí)所需要的知識(shí)。例如:先從應(yīng)用層去學(xué)習(xí)了解應(yīng)用層(網(wǎng)頁(yè))的代碼,了解他們?cè)趫?zhí)行起來(lái)會(huì)做什么動(dòng)作。然后我跟著動(dòng)作(http數(shù)據(jù)包等),查其他應(yīng)用程序代碼根據(jù)這些動(dòng)作都做出了什么樣的處理?!驹谶@里我學(xué)習(xí)到了javascript,html等】
5.查看每一個(gè)網(wǎng)絡(luò)應(yīng)用相關(guān)(http協(xié)議,DHCP協(xié)議,ARP等等)的概念,看RFC。
6.查看應(yīng)用程序,我學(xué)會(huì)了socket編程(也就是我們行業(yè)最重要的內(nèi)容)跟socket內(nèi)容。然后就是各種unix環(huán)境編程,這里花費(fèi)我很多的時(shí)間跟精力。
7.開(kāi)始一個(gè)一個(gè)地總結(jié)每一個(gè)應(yīng)用的大概流程,最終真正了解到了一個(gè)應(yīng)用的上層過(guò)程。如dhclient,ping,arp等。
8.后面我根據(jù)自己學(xué)過(guò)的知識(shí)經(jīng)行加深,開(kāi)始在自己的linux機(jī)器上面架構(gòu)samba服務(wù)器,通過(guò)source insight直接修改,查看linux機(jī)器上的源代碼。
9.由于平常的測(cè)試需要開(kāi)始了解cdrouter,upnp1.5認(rèn)證工具等,同時(shí)也架構(gòu)過(guò)dhcp服務(wù)器,wpa_supplice等測(cè)試環(huán)境。
然后等上層的東西知道了后,我就開(kāi)始看linux內(nèi)核,看上層的那些應(yīng)用程序做了動(dòng)作以后會(huì)產(chǎn)生什么東西,這些東西是怎么在內(nèi)核中工作讓我們的硬件做出反應(yīng)實(shí)現(xiàn)人機(jī)交互的。
最終認(rèn)識(shí)到整個(gè)網(wǎng)絡(luò)交互的過(guò)程,知道數(shù)據(jù)如何由源頭跑到終點(diǎn),然后不斷地可持續(xù)發(fā)展下去的,也只有知道了這么多,才知道某個(gè)平臺(tái)上的程序應(yīng)該怎么去做是可以得,怎么做才是更好的。
其實(shí)上面只是暫時(shí)記得的東西,日后想起繼續(xù)補(bǔ)充謝謝。