初學者如何理解網路協議(一)
初學者如何理解網路協議
FYL 2013-12-25
網路協議是什麼?協議分層是怎麼回事?什麼是協議的實現?
回想當年初識網路協議,被一張網路層次模型圖中的“物理層、資料鏈路層、網路層、傳輸層……”搞得雲裡霧裡。花了很長時間才搞明白網路協議大概是怎麼回事,甚至己經做出了幾個網路程式,但仍感覺對網路協議的本質認識還不夠清楚。
一直在思考這些問題,突然有一天,我發現我對網路協議的認識已經變得明朗。直到今天,我心血來潮寫下這篇文章,希望對初學網路程式設計的朋友有所幫助。
一、網路協議通俗地講就是網路上兩臺計算機之間通訊所要遵守的共同標準。
這麼講還是不夠通俗易懂,所以我們可以打個比方:
有兩個人,一箇中國人,一個法國人,如下:
(用英語交流)
中國人------------------------------------法國人
(講中文)(講法語)
[會英語] [會英語]
<英語協議> <英語協議>
這兩個人要想交流,必須講一門雙方都懂的語言。如果大家都不會講對方的民族語言,那麼可以選擇雙方都懂的第三方的語言來交流,比如“講英語”。那麼這時候“英語”實際上就成為一種“網路協議”。
把網路協議比做通用語言只是一種形象比喻,實際上協議本身比自然語言要簡單的多,但是卻比自然語言更嚴謹。協議規定了一種交流資訊的格式或者說規範,比如:字元“LOVE
同一種“規範”遵守的人多了,就成為一種事實上的“標準”。比如TCP/IP協議就成為了一種最流行的網路協議。
二、協議的實現
協議本身並不是一種軟體,它只是一種通訊標準,但協議最終要由軟體來實現。網路協議的實現就是在不同的軟體和硬體環境下,執行可運行於該種環境的“協議”翻譯程式。這些程式可能在WINDOWS下,也可能在UNIX下,也可能運行於一臺個人電腦,也可能運行於一臺伺服器,也可能在你的手機中,這些程式可能都不一樣,但卻都會翻譯同一種網路協議,比如(TCP/IP)協議。就如上圖中的翻譯都懂“英語”一樣。
實現網路協議,聽起來就象是給所有接入網路的裝置配備了一個“通用語言翻譯器”,這些翻譯都懂通用語言“英語”,同時也懂得本國語言,這樣就能實現不同國家不同環境的人接入同一個網路並進行交流了。
那麼,可否選擇“中文”作為網路協議呢?當然可以,但前提是大家都願意遵守你的標準,都願意說中文。實際上,“中文”也是一種網路協議,但它只是屬於中國人的網路協議。
三、協議的分層
協議分層僅僅是為了技術上的便利所做的人為劃分,並非是協議天生必備的。
仍以上圖為例,我們不再考慮中國人或是法國人,只考慮協議本身。
我用英語說:“How are you.”不一定表示“你好!”,我們可以事先約定,這句話表示“再看一遍”的意思。這就象是所謂的江湖“黑話”,或叫“專業術語”。實際上,這時我們自己制定了一個新的通訊標準,一個新的“高層協議”己經誕生了。這個協議在“英語”的基礎上,再製定自己的通訊標準,這種新的通訊標準就是基於“英語”這種“底層協議”的“高層協議”,我們可以把這種協議取名為“講課協議”。
以後你還可以在“講課協議”之上建立“講網路通訊課程的協議”等更高階的協議。