1.2.3_2 TCP/IP模型

在這個視頻中,我們要探討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傳輸層的一個區別。在考試中,這兩種體系結構的網絡層和傳輸層是最喜歡放在一起來考察的。隨著這門課后續章節的學習,大家對于這些功能到底有什么作用,以及是如何確保數據傳輸的正確可靠的,會有更直觀的理解。所以在當前階段看到這些什么有連接的可靠的服務,無連接不可靠的服務,看見這些東西感覺比較模糊是很正常的。

以上就是這小節的全部內容。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/88820.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/88820.shtml
英文地址,請注明出處:http://en.pswp.cn/web/88820.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

EVOLVEpro安裝使用教程-蛋白質語言模型驅動的快速定向進化

寫在前面:蛋白質是生命活動的基石,其功能和序列之間的復雜關系長期以來吸引著科學家們的關注。盡管深度突變掃描等實驗方法可以解析蛋白質突變的功能影響,但這些技術的應用范圍局限于序列空間的一小部分。近年來,基于蛋白質語言模…

【Linux】Rocky Linux 清華鏡像源安裝 GitLab

使用清華鏡像源安裝 GitLab 地址:清華鏡像源 1. 搜索 gitlab,我們選擇 gitlab-ce 社區版進行安裝 2. 新建 /etc/yum.repos.d/gitlab-ce.repo,內容為 注意:el$releasever 是清華鏡像源內的文件夾版本 [gitlab-ce] nameGitlab C…

【龍澤科技】新能源汽車維護與動力蓄電池檢測仿真教學軟件【吉利幾何G6】

產品簡介新能源汽車維護與動力蓄電池檢測仿真教學軟件是依托《全國職業院校技能大賽》“新能源汽車維修”賽項中“新能源汽車維護與動力蓄電池檢測” 競賽模塊,自主開發的一款仿真教學軟件。軟件采用仿真技術對車輛進行指定維護作業,并對動力蓄電池總成進…

UE5多人MOBA+GAS 18、用對象池來設置小兵的隊伍的生成,為小兵設置一個目標從己方出生點攻打對方出生點,優化小兵的血條UI

文章目錄根據小兵隊伍更換小兵的皮膚管理小兵的生成使用對象池來管理小兵的生成為小兵設置一個目標小兵生成完整代碼調整一下小兵的UI根據小兵隊伍更換小兵的皮膚 懶得開UE了,增加一個Minion類繼承基類角色CCharacter // 幻雨喜歡小貓咪#pragma once#include &qu…

Clojure持久化數據結構的底層實現

文章目錄一、Clojure的持久化數據結構二、向量(Vector)/Map的底層結構?1. HAMT 哈希數組映射字典樹(1)簡介(2)HAMT 的核心思想(3)HAMT 的結構?a. 基本組成?b. 樹的分支因子?(4)H…

面試150 二叉樹展開為鏈表

思路 思路:使用列表存儲先序遍歷的相關節點。然后遍歷列表,分別獲取前驅節點和當前節點,將前驅節點的左指針指向空,前驅節點的右指針指向當前節點。 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, …

代碼隨想錄算法訓練營第十七天

目錄 LeetCode.654 最大二叉樹 題目鏈接 最大二叉樹 題解 解題思路 LeetCode.617 合并二叉樹 題目鏈接 合并二叉樹 題解 解題思路 LeetCode.700 二叉搜索樹中的搜索 題目鏈接 二叉搜索樹中的搜索 題解 解題思路 解題思路 LeetCode.98 驗證二叉搜索樹 題目鏈接 驗…

pycharm無法識別pip安裝的包

在使用conda創建一個新的環境后,有些包通過pip的方式安裝更方便有效,若在pip安裝后,遇到該環境沒有此包,或pycharm監測不到此包,通常是pip的環境指向有問題。 解決措施: # 首先檢查當前pip的指向 which pip…

Elasticsearch 的 `modules` 目錄

Elasticsearch 的 modules 目錄是存放**核心功能模塊**的目錄,這些模塊是 Elasticsearch 運行所必需的基礎組件,**隨官方發行版一起提供**,但設計上允許通過移除或替換模塊來**定制化部署**(比如構建一個最小化的 Elasticsearch 實…

https——TCP+TLS

https——TCPTLS主題:基于mbedtls-2.16.0,驗證TLS會話復用功能驗證環境:1.TLS服務端2.TLS客戶端2.1 基于Sesssion ID2.1.1mbedtls-2.16.0庫的宏配置2.1.2 初始化配置2.1.3 TCP連接2.1.4 首次TLS連接2.1.4.1 發送加密算法列表2.1.4.2 選擇加密…

uni-app uni-push 2.0推送圖標不展示問題

問題現象:我在uni-app的配置文件,配置了推送的大圖標小圖標發現在真機測試無法展示配置的推送圖標問題 官網文檔:開通 | uni-app官網 解決方法: 在uni-app官網中說的并不是很清楚只給了一個簡單的示例,配置并沒有告訴我…

scp:上傳大型數據集到實驗室服務器

我通過百度網盤下載了大概200GB的LUNA-2016的肺結節CT數據。實驗是在實驗室服務器上進行的,我現在需要將本地的數據集傳輸到實驗室的服務器上。我已經通過remote-ssh連接上了實驗室的服務器,但是如果通過這個插件上傳數據的話,一方面不支持上…

量子計算突破:8比特擴散模型實現指數級加速

目錄 一、量子擴散模型(Quantum Diffusion) 二、DNA存儲生成(Biological-GAN) 三、光子計算加速 四、神經形態生成 五、引力場渲染 六、分子級生成 七、星際生成網絡 八、元生成系統 極限挑戰方向 一、量子擴散模型&…

Flask3.1打造極簡CMS系統

基于Flask 3.1和Python 3.13的簡易CMS以下是一個基于Flask 3.1和Python 3.13的簡易CMS管理系統實現方案,包含核心功能和可運行代碼示例。環境準備安裝Flask和其他依賴庫:pip install flask3.1.0 flask-sqlalchemy flask-login配置數據庫在config.py中設置…

用 Node.js 構建模塊化的 CLI 腳手架工具,從 GitHub 下載遠程模板

本文將手把手帶你構建一個支持遠程模板下載、自定義項目名稱,并完成模塊化拆分的 CLI 腳手架工具,適用于初創項目、團隊內部工具或者開源項目快速初始化。🧩 為什么要自己造一個 CLI 腳手架? 在日常開發中,我們常用腳手…

08.如何正確關閉文件

如何正確關閉文件(File Handling Best Practices) 文件操作是日常開發中非常常見的任務,正確關閉文件對于避免資源泄漏尤為關鍵。錯誤的文件關閉方式可能導致文件未保存、鎖定或其他異常。 1. 常見的錯誤方式:手動 close() 許多初學者會手動調用 close() 關閉文件,這在異…

算法入門--動態規劃(C++)

深入淺出掌握動態規劃核心思想,圖文并茂實戰代碼 什么是動態規劃? 動態規劃(Dynamic Programming, DP) 是一種高效解決多階段決策問題的方法。它通過將復雜問題分解為重疊子問題,并存儲子問題的解(避免重…

[2025CVPR]GNN-ViTCap:用于病理圖像分類與描述模型

論文結構解析? 本文采用經典學術論文結構: ?引言?:闡述病理圖像分析的挑戰與現有方法局限性?相關工作?:系統梳理MIL、視覺語言預訓練和生物醫學語言模型三大領域?方法?:詳細闡述GNN-ViTCap四階段架構?實驗?:在BreakHis和PatchGastric數據集驗證性能?討論?:通…

Java SE--圖書管理系統模擬實現

一.設計思路首先這個系統可以由倆種用戶使用,分別為管理者用戶和普通者用戶,根據不同的用戶有不同的界面,每個界面有不同的功能。二.代碼實現創建三個包和一個類book包:包括Book類和Booklist類Book類:package book; pu…

[RPA] 批量數據抓取指定商品名稱信息

影刀RPA案例:批量數據抓取指定商品名稱信息流程圖:操作步驟:涉及的影刀RPA大致指令: 1. 打開影刀商城頁面 2. 使用【填寫輸入框(web)】指令輸入用戶名和密碼,并點擊"登錄"按鈕 3. 切換到"訂單管理"…