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