《計算機網絡思想》系列(1)網絡體系結構———理解,總結,辨析,昇華

***前言***


從這篇文章起,我的每一篇博文都會列出一些基本屬性元素,目的是爲了方便讀者更好的歸納知識,方便地把文章中有用的信息納入自己的知識體系裏,並且提供信息讓讀者判斷,自己的知識水平是適合閱讀這篇文章的(既不會太高,大牛就需要看大牛的文章,也不會太低,基礎沒掌握)具體的屬性包括但不限於:知識樹,內容深度,最適合人羣,最低基礎要求,類型

稍微解釋一下幾個屬性:

  1. 知識樹:每個人在學習的時候,都應該構建自己的知識樹或知識體系。知識樹的樹根範圍可大可小,並且可以不斷在細分。例如:我以計算機科學爲樹根構建一棵知識樹,則計算機網絡是裏面的一片葉子。現在我把計算機網絡拿出來作爲樹根,構建一科計算機網絡的知識樹,則其中一種構建樹的方法可以按OSI 7層模型劃分,學到一個知識點(比如一種協議:IP)那就掛在網絡層這個字節點上。以後,要研究IP協議內部的細節,則把細節的知識再掛在父節點(IP協議上)


  2. 內容深度:主要分爲瞭解,理解,應用,深入理解,熟練應用等。這裏的劃分並不一定是按深度遞增的原則:例如有些人會應用,會配置一個路由協議,但是裏面的細節理解卻很不好。而一些人對路由協議算法的理解很深入,但可能並不會在一個具體的路由器上配置(需要先查看文檔)

  3. 最適合人羣:即知識掌握到了某個程度(比如說看了什麼書)後閱讀博文的收穫會比較大

  4. 最低基礎要求:有很多基本的概念(可以從網絡,書本輕易學習到)並不會再文章裏介紹,所以最少需要掌握一些基本的概念纔可以閱讀。

  5. 類型:是以上各個元素的總結和補充,說明該篇文章的性質。大概包含:

    1. 讀書筆記(閱讀完經典的名著後的總結)特點是突出重點,邏輯順序較好,但沒有什麼創新的方面。

    2. 總結抽象:主要是思想上的總結,比讀書筆記更少細節

    3. 思想創新:以上的含創新點較多的版本

    4. 概念辨析:特別針對一些重要的且易混亂的概念做辨析

    5. 細節知識:一般會具體到某個協議或技術的探討,可能是協議的大的結構,也可能是更細節的知識


  • 關於知識樹的學習方法:從頭學一個學科,那毫無疑問,必須從樹根上面的知識學起。通常樹根是指導整個學科學習的一些基本思想,概念,架構等等。對於計算機網絡,毫無疑問網絡體系結構是樹根上的知識。學完了樹根的知識後(達到了解程度),有兩種可選的學習方法:

  1. 是沿着樹葉學習,每個知識點都達到瞭解的程度,然後再回過來學一邊,樹根->樹葉,但這次把所有知識點都達到理解的程度。

  2. 先把樹根的知識學到了理解的程度,甚至是深入理解,然後才學習樹葉的知識。

    我的建議:學習能力較強,想一直深入學習整個學科的,採用第二種。

在《計算機網絡思想》這個專題裏,我都以計算機網絡爲主題(整棵大樹)而網絡體系結構是主要的根知識。現在,終於可以介紹這次這篇博文的基本元素了。


***本文屬性***


=========================================================================================

《計算機網絡思想》系列(1)網絡體系結構———理解,總結,辨析,昇華

****文章屬性****

★知識樹位置:樹根

★深度:瞭解+理解

★最適合人羣:完整閱讀過一本計算機網絡的書籍

★最低基礎要求:大概瞭解過網絡體系結構是什麼

★類型:讀書筆記+總結抽象

=========================================================================================


***正文***


閱讀完本文,你可以獲得的是:

  • 獲得一些計算機網絡核心的思想,對網絡知識體系的整體認識有所提升

  • 掌握一些基本的網絡學習方法

  • 對網絡體系結構與其設計思想有更深的理解

  • 對OSI,TCP/IP框架有更深的理解,瞭解它們的缺陷與優勢

  在研究了《計算機網絡-Andrew》的目錄與篇章結構多次,總結出比較好地介紹知識通用順序。

好書的寫作順序大概是這樣的:

  1. 需求與應用:爲什麼這樣的一項技術會存在,會發展?

  2. 總體框架與分類方法

  3. 最一般化的指導思想

  4. 按照一定分類方法後,每一項的相對一般化的原則/思想

  5. 具體的技術介紹

  6. 應用(1不同,1主要還是強調技術爲什麼會有,從哪來,這裏強調用在哪有優勢)

  7. 產業現狀:如提出一些標準化組織

  8. 學習幫助:參考書目,如何深入學習等等

爲什麼要提這個呢?因爲我的這篇文章,完全沒有按照上面的標準來講解知識,我僅僅是集中在23上。並且,我已經默認了讀者已經學習了基本的網絡體系結構的基本知識,我做的僅僅是總結精華,強調重點,沒有從頭開始講解一項項知識。其實網絡上一般的博文,都集中在5上,像我比較喜歡抽象總結與歸納,2,3比較多。而其他的寫作要點大部分都不會呈現,這也是爲什麼,看書一般比看網絡的文章要好。

網絡體系結構,屬於的是2,3點的內容。


■關於計算機網絡,並沒有一種普遍接受的分類方法,但總體來說,可以分爲網絡硬件與網絡軟件。網絡硬件總體上一般按傳輸技術和網絡尺度劃分。而網絡軟件,就是利用網絡體系結構來劃分。


【【什麼是網絡體系結構】】


爲了降低網絡設計的複雜性絕大多數網絡都組織成一個層次棧(a stackof layer)或分級棧(a stack of level),每一層都建立在其下一層的基礎之上。層的個數、每一層的內容以及每一層的功能各個網絡都不盡相同。每一層的目的是向上一層提供特定的服務,而把如何實現這些服務的細節對上一層加以屏蔽。從某種意義上講,每一層都是一種虛擬機,它向上一層提供特定的服務。

這種分層的概念被廣泛應用於計算機科學各個領域中,只是稱謂有所不同---信息隱藏、抽象數據類型、數據封裝以及面向對象程序設計。其基本思想是一個特定的軟件/硬件向其用戶提供某種服務,但是將內部狀態和算法細節隱藏。其實,分層在【軟件體系結構】這門學科中有詳細描述,分層結構是一種有實際價值軟件體系結構風格,但也有缺點。

★層和協議的集合稱爲網絡體系結構。網絡體系結構的規範必須包含足夠的信息,以便實現者爲每一層編寫的程序或者設計的硬件能遵守有關的協議。實現細節和接口規範不屬於網絡體系結構的內容,因爲他們在機器內部,對外界是不可見的。甚至,一個網絡中所有機器的接口也不必都一樣,只要每臺機器能夠正確地使用所有的協議即可。*注1

在《計算機網絡-Andrew》中,作者嚴格區分了網絡體系結構中三個最重要的概念:服務,協議,與接口



wKioL1MlWriyXFb5AAGISrvuc1k315.jpg


【服務】

務是指某一層向它上一層提供的一組原語(操作)服務定義說明了該層是做什麼的,而不是上一層實體如何訪問這一層,或者這一層如何工作

【協議】

協議是一組規則,規定了同一層上對等實體之間所交換的數據包或者報文的格式和含義。每一層用到的對等協議是本次自己內部的事情,它可以使用任何協議,只要它不改變呈現給用戶的服務即可。

【接口】

每一層的接口告訴它上面的進程如何訪問本層。它規定了有哪些參數,以及結果是什麼。*注2


【【OSI與TCP/IP】】


現在看看具體的網絡體系結構:OSI參考模型和TCP/IP參考模型。首先明確一個概念:網絡體系結構包含模型和協議,而OSI參考模型本身並不是一個網絡體系結構,因爲它並沒有定義每一層的服務和所用的協議,它只是指明瞭每一層要做什麼。

OSI參考模型真的就是一個模型,它先把模型設計出來,然後ISO這個組織爲所有層都指定了相應的標準,也就是具體的協議。嚴謹來說,這些標準並不屬於參考模型本身。OSI的模型本身有普遍意義,因此極具參考價值,但其相關的協議沒有任何人使用。TCP/IP協議模型有完全相反的特性:具體的協議先被設計出來然後被廣泛使用,然後才亡羊補牢似的創建一個模型。這個模型本身,實際上沒有多大的用處。

wKioL1MlWwiCoMZqAAJNvg3XoV4372.jpg


在學習網絡知識的角度裏,OSI參考模型無疑重要的多。無論學習任何網絡體系結構(TCP/IPATMDECnet 802體系)還是具體的網絡協議,都可以網OSI參考模型上套。絕大部分網絡體系結構實現了參考模型的一個子集,而絕大部分協議總能劃分到7層上的某一個層上面。如果你發現哪個協議違反了分層模型的原則,或者實在是難以在上面套用,那麼恭喜你,你的《違反分層模型收集列表》又可以多一項了。可以嘗試思考,這些與OSI思想違背的技術和協議,他們到底是好還是不好。


【【OSI爲何敗給了TCP/IP】】


現在來描述一下OSI模型的基本原則,然後看看TCP/IP如何作爲OSI參考模型的一個子集而存在,然後分析爲何ISO定義的與OSI搭配的具體協議被TCP/IP的協議打敗。

<OSI參考模型原則>:

1)第n層的實體在實現自身定義的功能時,只能使用第n-1層提供

的服務。

2)第n層在向第n+1層提供的服務時,此服務不僅包含第n層本

身的功能,還包含由下層服務提供的功能。

3)僅在相鄰層間有接口,且所提供服務的具體實現細節對上一層完全屏蔽


<TCP/IP>

wKiom1MlW1DyxCV-AAIDA3E80zk043.jpg

  • 從圖中得知,TCP/IPOSI3-7層上基本是對等的,只是TCP/IP的應用層基本涵蓋了表示層和會話層。但是,TCP/IP在底下二層根本沒有任何作爲,雖然有一個層叫“鏈路層”(圖中的主機至網絡)但僅僅是主機與傳輸線路之間的接口。該層描述了鏈路必須要滿足什麼功能(比如PPP,以太網,這也是現實中最常使用的底層技術)但自身沒有對這些層次的任何定義和具體協議。所以可以簡單的說,TCP/IP僅僅有3-7層的功能

  • 現在直觀地從功能實現的範圍來看,TCP/IP僅僅實現了OSI架構定義的一個子集。可爲什麼結果OSI架構搭配的協議並沒有人使用呢?因爲OSI的協議實在太失敗了。

  • OSI協議失敗的原因可以概括爲4點:

1.糟糕的時機

2.糟糕的技術

3.糟糕的實現

4.糟糕的政策

一個標準在什麼時候建立與改標準成功與否絕對重要

麻省理工學院的David Clark有一套關於標準的理論,稱之爲兩頭大象(研究活動和商業投資活動)的啓示。當一個主題首次提出,會爆發大量的研究活動,如討論、論文和會議,隨後漸漸平息並形成標準,直到企業發現該主題,然後出現投資浪潮。
關鍵在於標準的編寫必須處於兩頭大象之間,如果寫得太早,研究工作還未結束,該主題可能並未理解透徹,會影響到標準的質量。如果寫得過晚,很多公司已經以不同的方式實現並做了大量投資,標準也就無人理會。
如果兩頭大象的間隔太短,開發標準的人可能被擠在夾逢中舉步維艱。OSI就陷入了這種境地。OSI的提出時間在TCP/IP研究活動期與TCP/IP商業 投資期之間,OSI的標準尚未形成,TCP/IP的商業投資剛剛開始。企業對於OSI採取觀望態度,都希望等待其它企業先對OSI進行投資。直到最 後,OSI的標準根本就沒出現。

wKioL1MlWz7wh0ZCAACYg134HY8705.jpg

OSI的模型和協議都存在缺陷

★在模型上,選擇7層很大程度和政策上考慮有關。其中的兩層(會話層和表示層)幾乎是空的,而數據鏈路層和網絡層又包含太多內容。

★OSI具體的服務定義和協議都很複雜,實現起來很龐大,很笨拙,效率也很慢。很快OSI就等同於“糟糕的質量”了。而TCP/IP早起實現是基於UNIX的一部分,運行很好,並且免費,推廣迅速,很快得到了龐大的用戶羣。

政策的影響

OSI被認爲是一些政府官僚的產物,他們把技術上不足的標準強加給實際開發計算機網絡的可憐的研究人員和程序員。

■TCP/IP的缺陷也很明顯:

  1. 非常不通用,不適合描述TCP/IP意外的任何其他協議棧。

  2. 缺少數據鏈路層和物理層(也沒有區分兩層)。

  3. 沒有嚴格區分服務,接口,協議的概念(雖然現在有所改進)

  4. 很多協議是自主形成的(油不知疲倦的研究生開發出來)它們也許性能不好,缺乏安全性,違反分層模型,但是出現的早,被廣泛應用,地位根深蒂固。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章