在這個視頻中,我們要探討TCP/IP模型。對于TCP/IP模型考試的要求是這樣的,首先我們需要記住它各個層次的名稱和順序,以及我們需要了解TCP/IP 模型和OSI參考模型,它們在設計理念上有哪些區別,設計理念的區別又導致了TCP/IP模型和OSI參考模型的各個層次之間功能上也會有一些區別。接下來,我們會依次展開探討這些問題。
首先我們嘗試記住TCP/IP模型的各個層次。TCP/IP模型總共只有四個層次,第一層叫做網絡接口層,它的作用類似于OSI參考模型的第一層和第二層。接下來TCP/IP模型的第二層叫做網絡層,它的作用和OSI參考模型的網絡層是類似的。緊接著,第三層傳輸層,它和OSI參考模型的傳輸層也非常類似,最頂層是應用層,這一層的作用相當于OSI參考模型的會話層、表示層以及應用層。這是TCP/IP模型的四個層次,接下來我們要探討TCP/IP模型和OSI參考模型在設計理念上有哪些區別。
首先我們來回顧OSI參考模型的5、6、7三個層次,重點關注第五層和第六層。在計算機網絡的分層結構當中,上面一層會使用下一層提供的服務,或者說會使用下一層已經實現的功能。在OSI參考模型中,應用層會使用表示層的功能,也就是數據格式轉換,而表示層又會使用會話層的功能,也就是會話管理。之前的視頻中我們說過會話管理的效果類似于文件的斷點續傳,現在思考這樣一個問題:會話管理的功能和數據格式轉換的功能,對于每一個應用程序都是必要的嗎?顯然不是。比如說一個應用給另一個應用傳文件,如果左邊這臺機器的數據編碼格式和右邊這臺機器數據編碼格式是完全一樣的,數據格式轉換的功能就沒有必要存在了。另一方面,如果傳文件的過程當中網絡出現了問題,也就是文件的傳輸可能在中間某個點被中斷了。那么當網絡重新恢復的時候,我們必須斷點續傳嗎?也不一定,事實上我們也可以選擇在網絡恢復的時候重新傳整個文件。這也是一種可行的解決方案。所以會話管理這個功能對于有些應用程序來說,它也是可有可無的。既然對于某些應用程序來說,數據格式轉換、會話管理這些功能可有可無的話,表示層和會話層這兩個層次是不是就也沒有必要非得讓它存在?如果我們去掉這兩個層次,其實可以讓整個網絡體系結構更簡潔,層次越少,其實效率也會越高。
這就是TCP/IP模型和OSI參考模型在設計上的第一個很大的不一樣,它把表示層和會話層給干掉了。因為表示層和會話層所提供的這些功能,并不是所有的網絡應用都需要的,所以這兩個層次不需要存在。
如果說某些應用程序,它確實需要數據格式轉換、會話管理這些比較個性化的功能怎么辦呢?我們只需要讓這些比較個性的功能用應用層的某些協議去實現就可以了。假設微信和微信之間的通信需要使用會話管理的功能,那么這兩個應用程序在通信的時候,使用包含會話管理功能的協議就可以。相反的,如果不需要使用會話管理功能,我們就換一個不包含會話管理的協議。也就是說,我們把這兩種功能放在應用層去實現,應用程序對于這兩種功能使用與否的選擇是非常靈活的。相比之下,在OSI參考模型中,一個應用程序,不管是否需要使用數據格式轉換,是否需要使用會話管理的功能,它一定都會經過表示層和會話層的處理。對于這兩個層次功能的選擇是不靈活的,非選不可。所以TCP/IP模型的應用層在功能上其實包含了OSI參考模型的表示層,以及會話層。只不過TCP/IP模型的應用層在實際使用的時候功能的選擇會更靈活。
接下來我們再來回顧OSI參考模型的第一層和第二層。第一層物理層,需要去定義電路接口的參數,比如說網線的接口長什么樣子,光纖的接口長什么樣子,是什么尺寸,以及電信號、光信號分別是什么含義等等,這些東西都需要在物理層中去進行說明。另外,數據鏈路層需要實現差錯控制、流量控制的功能。也就是說OSI參考模型對于第一層要干什么,第二層要干什么,分別需要支持哪些功能,具有哪些特性,都需要有清晰明確的規定。這就意味著一個網絡硬件廠商,他在研發物理層和數據鏈路層的設備的時候,必須遵循OSI參考模型的規定。從某種意義上來講,OSI參考模型對于第一層,第二層的規定太死,反而會導致這些網絡硬件廠商在進行設備研發的時候更不靈活,本來可以有更多的創新,但是為了貼合這個參考模型的要求,創新被限制了。所以TCP/IP模型在底層的部分,它有不一樣的設計思路。TCP/IP模型認為,網絡硬件的種類很繁多,并且通信技術其實日新月異,可能每隔幾年就會有更高性能的設備,更先進的通信技術出現,所以TCP/IP 模型認為,在網絡層之下的部分,到底如何實現相鄰的兩個節點之間比特流的傳輸,這個其實不應該有太多的限制,這是TCP/IP模型的一個理念。
基于這樣的理念,TCP/IP模型在網絡層之下,只有一層叫做網絡接口層。TCP/IP模型只規定網絡接口層的任務是什么,就是要實現相鄰節點之間的數據傳輸。如果從垂直視角來看,就是為網絡層傳輸分組,網絡層會把分組交給這個網絡接口層,網絡接口層可以用比較靈活多樣的方式去傳輸這個分組的數據,具體是怎么傳輸的不做特別的規定。這樣的設計思想使得TCP/IP體系結構擁有更強的靈活性和適應性,每一個網絡設備商都可以去發揮自己的創造力,去研發更先進的,更好的網絡接口層技術,只要研發的通信設備、通信技術能夠和網絡層正確的交互就可以了。
我們做一個階段性的總結, OSI參考模型的會話層和表示層主要的功能是會話管理和數據管理,因為這兩個功能并不是所有的應用都需要的,所以這兩個層次可以直接干掉, TCP/IP模型會在應用層去靈活的支持數據格式轉換和會話管理這些比較個性化的功能。另一方面,OSI參考模型的物理層和數據鏈路層,詳細的規定了這兩個層次需要支持哪些功能,規定的太多,反而會導致物理層和數據鏈路層的設備廠商,他們在生產研發設備的時候不太好發揮,有很多限制。相比之下TCP/IP 模型的網絡接口層,在功能上雖然類似于物理層和數據鏈路層。但是TCP/IP模型對于網絡接口層要實現哪些功能,需要支持哪些協議,并沒有做具體的規定,而是交給網絡設備商去自由的發揮,這也使得TCP/IP模型能夠被更多的設備廠商所支持,最終也使得TCP/IP模型在商業上取得了巨大的成功。
到目前為止,我們探討的是這兩種模型在結構上的明顯區別,現在我們關注中間的兩個層次,可以看到兩種模型都有網絡層,網絡層之上也都是傳輸層。那么這些層次之間又有哪些設計理念上的區別呢?我們不妨先回顧一下OSI參考模型的網絡層和傳輸層分別需要實現哪些功能。首先OSI的網絡層和傳輸層都需要實現差錯控制、流量控制,連接管理和可靠傳輸管理這些功能。只不過,網絡層針對的是數據報,而傳輸層針對的是報文段。另外,數據鏈路層也需要支持差錯控制和流量控制的功能,只不過數據鏈路層針對的是幀。
之前的視頻中我們說過,各個層次傳輸數據的單位是不一樣的,越上面的層次,每一次傳輸的數據單位也會更長,比如說應用層以報文為單位,而報文交給傳輸層之后,傳輸層會把報文拆分成多個報文段。當然,如果報文很小的話,也可以不拆分。類似的,當傳輸層把報文段交給網絡層之后,網絡層會把比較長的報文段拆分成多個數據報,或者說拆分成多個分組。類似的,網絡層把一個分組交給數據鏈路層之后,數據鏈路層又會把比較長的分組拆分成多個幀。也就是說,越靠下的層次,傳輸數據的單位是越局部的,而越靠上面的層次,傳輸的數據是越接近全局的。顯然數據的局部正確不可以推出數據的全局正確,也就是說數據鏈路層只能確保每一個幀的傳輸是沒問題的,但是無法確保每一個分組的傳輸是沒有問題的。因此OSI參考模型認為,在網絡層這兒,又需要對分組進行差錯控制、流量控制,以此去保證分組的數據傳輸沒有問題。同樣的道理,網絡層保證了分組局部數據的正確性,但是無法保證報文段這個全局數據的正確性。因此在傳輸層,OSI又會再一次進行差錯控制、流量控制,以確保報文段的傳輸是沒有問題的,連接管理和可靠傳輸這兩個功
能也是類似的道理,就是說網絡層這兒可以確保數據分組的傳輸有序、不重復、不丟失。但是不意味著報文這個全局數據的傳輸有序、不重復、不丟失。所以網絡層這兒實現過的功能,在傳輸層這兒又需要再重新去支持,重新去實現。這是OSI參考模型的設計思路。數據的局部正確,不可以保證數據全局正確。我們不妨換一個思路,如果我們能夠確保數據的全局是正確的,是否可以推出數據的局部也是正確的。顯然,這個邏輯也是成立的。也就是說,事實上,網絡層、數據鏈路層、物理層這幾個層次,它可以不管自己的這個數據傳輸到底有沒有出現錯誤,可不可靠,反正最終都讓這個傳輸層以報文段為單位去確保數據的傳輸是沒有出錯的,是有序的,是可靠的就可以了。因為只要我們檢測出數據全局正確,那么數據的局部肯定也是正確的。
所以基于這樣的思路,TCP/IP模型的網絡層,去除掉了差錯控制、流量控制、連接的管理以及可靠傳輸管理。它去除掉了這些功能,網絡層去除掉這些功能之后,就會使得網絡層的數據傳輸變得不再可靠。比如說現在傳輸層把一個報文段交給網絡層,讓它去傳輸,網絡層會把報文段拆分成若干個分組,然后再把分組交給網絡接口層去傳輸,網絡接口層的數據傳輸是不可靠的。也就說一個分組從A結點傳輸到相鄰的B結點,在這個傳輸的過程當中,分組的數據就有可能出現錯誤了,中間節點的網絡層接收到一個分組之后,即便這個分組有可能出錯,甚至分組有可能會丟失,但都沒有關系,反正中間節點接收到一個分組之后,把它盡最大努力轉交給下一個節點就可以了。所以最終目的結點接收到的這些分組序列有可能是有錯誤的,有可能是失去的。這些分組最終會被合并成報文段,再轉交給上層的傳輸層。只不過剛才我們說,由于中間的傳輸過程網絡層并沒有進行差錯控制、流量控制、連接管理、還有可靠傳輸管理。因此,最終這個目的結點收到的報文段就有可能是有問題的,所以TCP/IP模型的網絡層,它的理念就是主打一個擺爛,我只盡我最大的能力去交付這些分組,去傳輸這些分組。數據的傳輸我知道是不可靠的,但是我就是擺爛。擺爛的結果就是
目的節點的傳輸層,他收到的報文段數據有可能是錯的,當然也有可能是對的。
接下來目的節點的傳輸層就會對報文段進行差錯控制、流量控制、連接管理、可靠傳輸管理去確保報文段的傳輸,這個全局數據的傳輸是沒有問題的。所以TCP/IP模型它并不是完全不管數據傳輸的正確性、可靠性這些東西,只不過這些任務都會由傳輸層來完成。
相比之下OSI參考模型的網絡層也需要實現差速控制、流量控制、連接的建立與釋放、可靠傳輸的功能。這些額外的功能就會使得網絡的核心部分,這些路由器它需要承載更多的事情,功能變得更復雜,負載變得更高,造價也會變得更高。而TCP/IP模型,它的網絡層功能相對簡單,這也使得網絡的核心部分這些路由器,它的負載變得更低,功能變得更簡單,造價也可以變得更低。剛才也說了TCP/IP模型的傳輸層會負責保證數據的正確性、有序性、可靠性等等這些方面。也就是說數據傳輸的正確性、可靠性的保障是交給了網絡的邊緣部分,交給了這些主機。所以相當于把網絡核心部分的壓力降低了,然后把壓力給到網絡的邊緣部分的主機,這就會使得網絡的核心部分,這些路由器傳輸分組的整體性能可以得到大幅度的提升,因為它不需要去管什么差錯、流量,這些亂七八糟的東西。所以TCP/IP模型和OSI參考模型在網絡層這個層次,設計理念上是有很大的區別的。
在這個視頻中,我們介紹了TCP/IP模型,TCP/IP相比于OSI參考模型來說,層次更少也更簡潔。在這個圖當中,總結了的TCP/IP四個層次,分別需要完成什么樣的任務,以及各個層次具體需要實現哪些功能,標藍字的這些部分是TCP/IP模型和OSI參考模型有不同的地方。注意在網絡層這個地方差錯控制、流量控制,連接管理,可靠傳輸管理這幾個功能點都是畫了刪除線的。這就意味著,在OSI參考模型中,這幾個功能是存在于網絡層當中的,但是在TCP/IP模型當中,這幾個功能從網絡層當中刪除了。
我們在這個視頻中也簡單介紹了OSI和TCP/IP它們的層次結構有什么區別,OSI參考模型的會話層、表示層和應用層,在TCP/IP模型當中對應應用層。而OSI參考模型的物理層和數據鏈路層的功能,對應了TCP/IP模型的網絡接口層。
另外在這個視頻中,我們也詳細介紹了OSI參考模型和TCP/IP模型網絡層的設計理念區別,OSI參考模型要求網絡層必須實現差錯控制、流量控制、連接管理,還有可靠傳輸管理這些功能。而TCP/IP模型的網絡層不需要支持這幾個功能,也正是因為這個差別,在OSI參考模型中,網絡層可以向上層,也就是向傳輸層提供有連接可靠的服務以及無連接不可靠的服務。之前我們提到過分組交換,或者說數據報交換,其實就是無連接不可靠的服務。網絡層在傳輸分組的時候不確保分組有序到達,也不保證分組不丟失。所以當不使用網絡層的差錯控制、流量控制、連接管理,還有可靠傳輸管理這些功能的時候,它所能提供的就是數據報服務,是無連接不可靠的。而如果網絡層的這些功能全部被啟用,那么它就可以為上層傳輸層提供有連接可靠的服務,也就是虛電路交換的服務。在虛電路交換中,可以保證分組是有序到達的,無差錯的以及不丟失的。再看TCP/IP的網絡
層,由于它不支持差錯控制、流量控制這些亂七八糟的東西,所以TCP/IP的網絡層只能向上層提供無連接不可靠的服務,也就是不保證分組的正確性、有序性。另外在TCP/IP模型中數據傳輸的可靠性是由傳輸層去實現的,如果傳輸層使用TCP協議,就可以保證數據的傳輸是有連接的、可靠的,也就是說數據的正確性,有序性等等都可以得到保證。當然TCP/IP模型的傳輸層也可以向上層應用層去提供無連接不可靠的服務。如果使用UDP協議去傳輸數據的話,那么數據的傳輸就是無連接不可靠的。關于TCP和UDP的具體內容我們會在之后的章節中進行更詳細的探討,這兒大家先有個印象就可以。事實上,有的應用程序進行網絡通信的時候,是可以允許數據的傳輸不可靠這件事情的。比如說當我們看直播的時候,我們可能對直播的流暢性要求很高,但是直播的畫面丟失了幾個幀,或者直播的聲音停了幾秒鐘,這個其實是可以忍受的。所以在現在的網絡應用當中,無連接不可靠的這種數據傳輸服務,也是有必要存在的。相比之下OSI參考模型大概是上個世紀80年代提出來的,在那個年代其實并沒有預見網絡世界能夠發展的如此迅速,應用如此廣泛。所以那個年代的設計者認為,傳輸層只能向上層提供有連接的可靠的數據傳輸服務。也就是說,數據傳輸出現一些錯誤或者出現丟失是不被允許的,是不可以容忍的。這也是OSI的傳輸層和TCP/IP傳輸層的一個區別。在考試中,這兩種體系結構的網絡層和傳輸層是最喜歡放在一起來考察的。隨著這門課后續章節的學習,大家對于這些功能到底有什么作用,以及是如何確保數據傳輸的正確可靠的,會有更直觀的理解。所以在當前階段看到這些什么有連接的可靠的服務,無連接不可靠的服務,看見這些東西感覺比較模糊是很正常的。
以上就是這小節的全部內容。