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