網(wǎng)絡(luò)與編程-第[0]篇
網(wǎng)絡(luò)是什么?網(wǎng)絡(luò)編程是什么?這兩個(gè)問(wèn)題困擾了我很久。作為技術(shù)博客的首篇,我將在此篇提綱挈領(lǐng),圍繞“網(wǎng)絡(luò)與編程”這一主題,闡明自己的思考和見(jiàn)解。通信的專(zhuān)業(yè)背景和平時(shí)任務(wù)的束縛,讓我一直干著修信息高速公路的事,卻時(shí)刻做著自己造跑車(chē)的夢(mèng),徘徊在計(jì)算機(jī)、通信、互聯(lián)網(wǎng)的三岔口,踟躕不前已久。但從今天開(kāi)始,我決心在自己癡迷的網(wǎng)絡(luò)方向投入精力探索和實(shí)踐,與網(wǎng)絡(luò)編程來(lái)一場(chǎng)說(shuō)走就走的技術(shù)旅行,寫(xiě)技術(shù)博客是一個(gè)很好的開(kāi)始,希望能在此與博友們共享、成長(zhǎng)。
網(wǎng)絡(luò)是什么?抽象的層面,網(wǎng)絡(luò)=節(jié)點(diǎn)+連接,起源于人們將孤立節(jié)點(diǎn)互聯(lián)用于共享信息和資源的需求,節(jié)點(diǎn)實(shí)現(xiàn)信息的計(jì)算和存儲(chǔ),連接實(shí)現(xiàn)信息的傳輸,因此網(wǎng)絡(luò)本質(zhì)是信息的承載者,是信息的載體。放在通信的場(chǎng)景下,節(jié)點(diǎn)細(xì)化為各種設(shè)備,連接分為了有線與無(wú)線兩種方式,具體而言:網(wǎng)絡(luò)=通信系統(tǒng)=設(shè)備+媒介=終端設(shè)備+傳輸設(shè)備=手機(jī)+無(wú)線電+基站=計(jì)算機(jī)+網(wǎng)線+路由器=智能設(shè)備+介質(zhì)。與此同時(shí),受業(yè)務(wù)與應(yīng)用場(chǎng)景的驅(qū)動(dòng),不同服務(wù)類(lèi)型的網(wǎng)絡(luò)技術(shù)層出不窮:GSM、CDMA、LTE、WIFI、ISDN、Internet等,雖然接觸了多種網(wǎng)絡(luò)技術(shù),但我對(duì)它們的理解卻停留在概念的層次,不知道怎么具體運(yùn)用這些技術(shù)。宏觀的層面,網(wǎng)絡(luò),是實(shí)現(xiàn)節(jié)點(diǎn)連接的手段,具體而言,它實(shí)現(xiàn)了機(jī)器與機(jī)器的連接,進(jìn)而實(shí)現(xiàn)了人與人的連接、人與機(jī)器的連接,未來(lái),則向著萬(wàn)物互聯(lián)的方向演進(jìn),多么唯美的畫(huà)面,可惜依然朦朧,看不清卻是不知道能夠用來(lái)做什么。
對(duì)網(wǎng)絡(luò)的進(jìn)一步探索,可以發(fā)現(xiàn)構(gòu)成網(wǎng)絡(luò)的要素包含:芯片、硬件、軟件、協(xié)議、接口等,不同層次的開(kāi)發(fā)人員對(duì)于網(wǎng)絡(luò)有不同的實(shí)現(xiàn),芯片層面、驅(qū)動(dòng)層面、系統(tǒng)軟件層面都會(huì)有網(wǎng)絡(luò)的元素存在,其中協(xié)議則是網(wǎng)絡(luò)的核心所在,標(biāo)準(zhǔn)化的協(xié)議定義了網(wǎng)絡(luò)互聯(lián)的規(guī)則。對(duì)網(wǎng)絡(luò)模型和協(xié)議棧的深入研究,才能對(duì)網(wǎng)絡(luò)有更深的體會(huì),構(gòu)成網(wǎng)絡(luò)的節(jié)點(diǎn)如今都實(shí)現(xiàn)了軟硬件一體化,分層次地實(shí)現(xiàn)了網(wǎng)絡(luò)協(xié)議棧的各層功能。漏斗型的協(xié)議棧,幾乎承載了網(wǎng)絡(luò)的一切,網(wǎng)絡(luò),逐漸成為了各節(jié)點(diǎn)功能的一部分,在硬件和軟件各層次都得到了具體的實(shí)現(xiàn)和支持。
網(wǎng)絡(luò)編程,是從技術(shù)人員角度對(duì)“基于網(wǎng)絡(luò)能做什么”這個(gè)問(wèn)題的回答,通過(guò)網(wǎng)絡(luò)編程,將單機(jī)程序轉(zhuǎn)變?yōu)榫W(wǎng)絡(luò)程序,從而真正實(shí)現(xiàn)異地程序間的互連、進(jìn)程間的互聯(lián),這是對(duì)網(wǎng)絡(luò)更近一步的細(xì)粒化。網(wǎng)絡(luò)編程,需要根據(jù)協(xié)議棧來(lái)劃分層次,在Internet廣泛應(yīng)用的今天,Web網(wǎng)絡(luò)編程通常被冠以網(wǎng)絡(luò)編程的美名,但Http層次的網(wǎng)絡(luò)編程永遠(yuǎn)不能代表網(wǎng)絡(luò)編程的全部,基于TCP/ip協(xié)議棧探索網(wǎng)絡(luò)編程,才能對(duì)網(wǎng)絡(luò)有更進(jìn)一步的理解。基于此,我所理解的網(wǎng)絡(luò)編程,是一種實(shí)現(xiàn)程序網(wǎng)絡(luò)互聯(lián)功能的手段,構(gòu)建了實(shí)體間的連接,實(shí)現(xiàn)了進(jìn)程間的通信,承載了信息的傳遞。
綜上,初步匯總了我對(duì)網(wǎng)絡(luò)和網(wǎng)絡(luò)編程的思考,那么如何去進(jìn)行網(wǎng)絡(luò)編程實(shí)踐呢?這將是今后我的博客將重點(diǎn)關(guān)注的方面,我希望分享自己的網(wǎng)絡(luò)編程實(shí)踐,開(kāi)啟網(wǎng)絡(luò)編程菜鳥(niǎo)的進(jìn)化路線,與大家一起共勉。
圍繞“網(wǎng)絡(luò)與編程”的主題,初步規(guī)劃了以下方向,以后再逐步擴(kuò)充:
網(wǎng)絡(luò)編程模型:C/S、B/S、P2P
網(wǎng)絡(luò)編程系統(tǒng):linux
網(wǎng)絡(luò)編程協(xié)議:TCP/IP協(xié)議棧
網(wǎng)絡(luò)編程語(yǔ)言:C/C++、Python(聚焦,并不意味著對(duì)java、Net心懷敵意)
網(wǎng)絡(luò)編程方向:高性能、分布式
開(kāi)源服務(wù)器源碼:Nginx、Tengine、Memcached
開(kāi)源網(wǎng)絡(luò)庫(kù):libevent(目前上手ACE有難度)
網(wǎng)絡(luò)編程實(shí)踐點(diǎn):Linux服務(wù)器程序、LVS負(fù)載均衡、TC流量控制
參考鏈接:
《談一談網(wǎng)絡(luò)編程學(xué)習(xí)經(jīng)驗(yàn)》http://blog.csdn.net/solstice/article/details/6527585
《libevent 源碼深度剖析》http://blog.csdn.net/sparkliang/article/details/4957667
新聞熱點(diǎn)
疑難解答
圖片精選