初學者如何理解網路協議(二)
再對比計算機網路:有以IP協議為基礎的TCP協議,以TCP協議為基礎的HTTP協議,以TCP協議為基礎的FTP協議等。這裡HTTP和FTP是同一層次的兩種不同協議。
如下圖:
高層3:HTTP協議、FTP協議(應用層)
中層2:TCP協議、UDP協議(網路層
底層1:IP協議(傳輸層)
我們通常把上圖中的底層1和中層2合在一起稱為TCP/IP協議。所以,協議並不一定非要分層,有時候一種協議是幾層協議的一個結合,事實上,協議分層並不是必須的。
那麼有沒有比“英語”更底層的協議呢?當然有。但一般我們沒必要把“英語”協議再分層。現在為了講解的需要,我把“英語”這種協議人為再分一下,英語由“單詞”構成,單詞不考慮語法問題。“單詞”就是比“英語”低一級的協議。“單詞”又由“字母”構成,字母不考慮組合成詞的問題,所以26
現實意義:中國人和法國人一般都認識英文字母,法文字母跟英文字母有很多都相同,但我們從小認字母當拼音,人家認來組單詞。所以可以說,在字母這一層協議上,中國人和法國人是可以交流的,換個說法:中國人寫的字母法國人也認識。但是,這沒有太多實際意義。所以才需要更高一級的“英語”協議來支援。
同樣道理,上圖中“底層1:IP協議”以下還有更底層的協議。“高層3:HTTP”協議以上還可以有更高層的應用協議。我們可以任意一層協議為基礎制訂自己的更高一層的協議。
比如:我們可以以字母這一層為基礎,重新創立一種新的語言。也可以以IP協議為基礎,制定自己的傳輸協議。
不同的裝置可以安裝不同的協議,識別不同層次的協議。
比如:
1、可以安排一個人,只要能識別字母“a、b、c……”就成。這是最低層協議的實現。
2、再安排一個人,能夠識別字母組成的單詞,並刪除錯誤單詞。這就是第二層協議的實現。
3、再安排一個人,能夠識別單片語成的句子,並理解句子。這就是第三層協議
4、再安排一個人,這個人能夠翻譯英語“黑話”,這個就最第四層協議了
5、還可以安排更高層的人,能夠把黑話中隱藏的更專業的意思解讀出來
根據需要,你可以隨時發明自己的協議,如果這種協議高效易用,被大眾所認同,那就成為了一種流行標準。
說到底:協議是人規定的一套通訊規範,所以任何人都可以規定自己的協議,只要通訊的雙方能夠共同遵守,你就實現了你的協議。
事實上協議本身是可以無所謂分層的概念,分層只是為了方便人們處理複雜的協議而人為做出的劃分。
所以,初學者請不要網路協議深遂的面孔嚇倒,更不要被網路分層的假相所迷惑。你只要認清了網路協議的本質,大膽得去實踐,你完全可以創造出屬於你自己的網路協議。
舊的協議日益成熟,新的協議層出不窮,正是那些勇於創新的開拓者們創新了日新月異的網路世界。向發明網路協議的創新者們致敬!
以我自己的經歷:網路通訊技術初學者接解到的第一本網路教程,應該首先避免過多技術層次的東西,少用專業術語,最好能通過接近生活實際的例子,將網路技術的基本原理解釋清楚。我認為初學者越早搞懂網路協議的本質,學習後續網路課程就會越容易。
後記:
從事軟體開發多年,最早接觸網路協議是在20年前,那個時候沒有老師教,完全靠啃教材自學。當然,教材的作者就是我的老師。可是這些教材無一例外上來就是專業術語、技術性太強。什麼協議標準,協議分層,什麼資料結構,讓初學計算機沒幾年的我雲裡霧裡。花了很長時間也沒把網路協議這東西搞清楚,網路程式設計於是成為令我感到“難”的一件事情。
事實上,大概很多人都認為網路程式設計是很“難”的。的確,當我弄清楚網路協議和網路程式設計是怎麼回事以後,反而更加深刻得理解了網路程式設計的難度。不過回過頭來看一看,如果當年能有遇到一本深入淺出的教材幫我很快理解網路協議的本質,如果這本書能讓我感覺網路協議很簡單,那麼我學習的速度和效率將會高得多。
以上只是自己一些個人經驗,跟大家交流,有不足之處,歡迎批評指正!謝謝。