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