互聯網數據傳輸原理 |OSI七層網絡參考模型

網絡模型

在這里插入圖片描述

OSI 網絡參考模型,僅作為參考,也就是說OSI網絡實際中并不使用。我們只是把OSI網絡模型作為參考,在網絡出現問題的時候,可以從一個宏觀的整體去分析和解決問題。而且搭建網絡的時候也并不一定需要劃分為7層

但是當今互聯網廣泛使用的是TCP/IP網絡模型,他原本是四層,實際上劃分為五層更符合實

OSI模型的目的:解決主機之間的網絡通訊

各層的作用

例子:華為電腦用瀏覽器訪問蘋果電腦搭建的網站。兩個應用具體需要如何進行交互就是應用層的事情了。應用層并不是說你需要使用什么應用程序,而是應用如何溝通。常用的應用層協議HTTP協議,使得應用之間可以實現溝通。

在這里插入圖片描述

應用層就是最接近用戶的那一層。但是應用層只不過是邏輯上把兩個應用連通,實際物理上的連通是需要物理層的。我們要發送出去的數據在計算機里只不過是無數的0和1,0或者1就叫做比特。物理層就要把這些比特用不同的媒介傳輸出去。

在這里插入圖片描述

可以用電,用光或者其他形式的電磁波來表示和傳輸信號。數據從網絡接口出去以后會經過不同的網絡拓撲。

在這里插入圖片描述

并不是一條線走到底,因此需要中繼器和集線器這樣的設備。

在這里插入圖片描述

但還是不夠,信號要去到哪臺設備是需要定向的。因此需要高級一點的網絡模型,在數據鏈路層這里,比特會被封裝成

在這里插入圖片描述

幀就是這一層表示數據的特殊名字而已。在封裝的時候會加上MAC地址,也就是傳說中的物理地址。網卡出廠的時候就有著全球唯一的MAC地址。

在這里插入圖片描述

為了可以通過MAC地址對不同設備進行數據的傳輸,就出現了交換機。這里說的是二層交換機。

在這里插入圖片描述

比方說這里有一臺交換機,連接多臺主機。

在這里插入圖片描述

發送端發送數據的時候,交換機就知道了發送端的MAC地址。如果此時交換機也知道接收端的MAC地址,就可以把數據直接發送過去了。物理地址就是這樣一跳一跳地進行傳遞

在這里插入圖片描述

另外因為物理層在傳輸0和1的時候,可能會0變成1,或者1變成0。會進行差錯檢測以及一定的差錯糾正。

在這里插入圖片描述

另外設備之間的傳輸能力以及接受能力也是個問題,很可能這邊“噴水”式傳輸,另一邊“夾縫式”接受。因此需要流控制來避免這種不對稱。

在這里插入圖片描述

我們知道互聯網是一張大網,如果用MAC物理地址來作為唯一的尋址方法是不科學的。

比如我和你買了同一個廠的網卡,我和你的網卡差別只有一個字母。

在這里插入圖片描述

但是我和你距離十萬八千里,物理地址此時就很難做出快速定位。

在這里插入圖片描述

相當于我有你的名字,但不知道你住哪里,找不到你。因此需要IP地址來進行尋址路由選擇。IP這樣的邏輯地址就是實現端到端的基礎了,而不是物理地址那樣的跳到跳傳輸。

在這里插入圖片描述

說到路由選擇,也就是說路由器也是網絡層的核心。

在這里插入圖片描述

就是網絡層里數據的名字。在封裝為二層的幀之前就是包。

在這里插入圖片描述

路由器根據包里IP地址進行路由轉發。

在這里插入圖片描述

地址管理和路由選擇就是這一層的核心。雖然有MAC和IP地址可以抵達對方主機,但是對方主機可能運行著無數多個軟件進程。假設我用谷歌和火狐瀏覽器同時登錄網站,如何讓數據去到指定的軟件服務上,就需要用到端口號作為地址來定位了。比如客戶端這里生成不同的端口號。

在這里插入圖片描述

即使同時訪問HTTP端口80也是沒問題的,根據不同的源端口號來作出響應就可以了。所以傳輸層(運輸層)在網絡層的端到端基礎上,實現了服務進程到服務進程的傳輸就是傳輸層里數據的名字。

在這里插入圖片描述

傳輸層管理兩個節點之間數據的傳輸,負責可靠傳輸不可靠傳輸,既TCP UDP

在這里插入圖片描述

其中TCP允許應用把字節流變成多份段,而不是整個字節數據完整地發送出去。

在這里插入圖片描述

傳輸層還有流量控制來確保傳輸速度,再加上錯誤控制來進行數據完整的接收。

在這里插入圖片描述

接下來會話層也比較好理解。比方說你現在登錄了某個網站,網站服務可以保持你的登錄狀態,不用每次都輸入賬號和密碼。當然網站服務會管理和控制登錄狀態。

在這里插入圖片描述

另外會話層還負責同步服務。比方說你上次看到電影高潮的時刻突然停電了,再次登錄賬號的時候就可以自動同步島上次看到的時間段。

在這里插入圖片描述

不同計算機內部的各自表達方式可能不太相同。表示層就來負責這樣的轉換,也就是編碼解碼

在這里插入圖片描述

數據往往還需要進行加密,比方說HTTPS( SSL/ TLS)就會對我們的數據進行加密和解密。

在這里插入圖片描述

另外我們可能還需要給文件瘦身,壓縮也是這一層負責的。

在這里插入圖片描述

應用層,表示層和會話層的數據統稱為應用數據或者應用負載也可以叫上層數據。同時也是教科書上說的報文。

數據在各層的名字分別是:報文比特

在這里插入圖片描述

就地址來說:有端口號IP邏輯地址MAC物理地址

在這里插入圖片描述

就傳輸功能來講:有服務進程到服務進程端到端跳到跳

在這里插入圖片描述

數據流通過程

客戶端要發送數據,也就是報文。報文來到傳輸層加上端口號,封裝成段。段來到了網絡層,加上IP地址,封住成包。注意這里的包是含有目標IP地址的,畢竟你要知道數據要發送到什么地方。

在這里插入圖片描述

但因為目標IP地址不是同一個網絡下的,要發送到其他的網絡就需要經過默認網關。現在就出現了一個問題,客戶端主機最初并不知道默認網關的MAC地址,沒有辦法封裝成幀。這個時候就可以用ARP協議進行廣播,找到網關IP對應的MAC地址把包封裝成幀。

網關:計算機的網關(Gateway)就是到其他網段的出口,也就是路由器接口IP地址

ARP協議:即地址解析協議, 用于實現從 IP 地址到 MAC 地址的映射,即詢問目標IP對應的MAC地址

源MAC地址填自己的,目標MAC地址填廣播地址。假設當前網絡有個二層交換機,這個交換機只需要記錄下不同的接口對應的MAC地址就好了,交換機收到廣播后就幫忙發送出去“人手一份”。

在這里插入圖片描述

所以默認網關收到消息后查看了幀,發現了發送端的MAC地址,再解封發現包里面的IP地址,就會把客戶端MAC地址和IP地址關聯為一臺主機。同時默認網關會把自己的IP地址放入包里,再結合自己的MAC地址封裝成幀,默認網關就這樣做出響應。這樣原路返回,發送端就知道默認網關的MAC地址了。

在這里插入圖片描述

現在就可以封裝成幀,并且發送數據。

在這里插入圖片描述

比特流到了默認網關的時候,解封為幀發現是送給自己的,那解封為包查看到目標IP地址是在另一網絡中的,就會進行路由轉發,最終到達了目的網絡。如果目標的網關知道目標IP地址和MAC地址是哪臺主機,封裝成幀就可以直接發送過去了。

在這里插入圖片描述

如果不知道也還是可以用ARP喊下街就好。目標主機收到包確認是自己的IP地址以后,解封查看段可以發現源和目標端口號,用目標端口號給到指定的應用程序。應用程序處理好以后,就可以按照源的信息做出響應。回去的原理也是一樣的。

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

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

相關文章

【uniapp】小程序中input輸入框的placeholder-class不生效解決辦法

問題描述 uniapp微信小程序&#xff0c;使用input組件時&#xff0c;想要改變提示詞 placeholder 的樣式&#xff0c;但是使用placeholder-class 改變不了 如下&#xff1a; <input type"text" placeholder"搜索" placeholder-class"placeholde…

2024最新金三銀四軟件測試面試題

一直以來大大小小參與過不少面試&#xff0c;遇到過不少坑&#xff0c;但是沒來的及好好總結匯總下。現在把之前遇到的問題匯總下&#xff0c;希望以后自己能加深印象。 1、appium 怎么定位toast彈框 appium1.6以后回答需要升級u2進行定位。 2、什么是事務&#xff0c;知道事…

PADS9.5封裝庫轉換為AD庫

1、打開PADS Layout&#xff0c;File – Library&#xff0c;選中usr&#xff0c;如下圖&#xff1a; 2、封裝– 導入&#xff0c;選中你的 .d后綴文件(也就是PADS的封裝文件)&#xff0c;打開。 3、元件 – 新建 – PCB封裝 - 分配 - 確定。 4、&#xff0c;選擇“斜線”…

Laya2.13.3接入第三方庫Socket.io

服務端&#xff1a; 1.新建一個文件夾&#xff0c;使用npm.init -y創建node工程 2.在控制臺使用以下代碼下載Socket.io npm install socket.io 3.創建一個app.js的文件&#xff0c;將以下代碼填入 import { Server } from "socket.io"; import { createServer }…

Linux學習筆記3 xshell(lnmp)

xshell能連接虛擬機的前提是真機能夠ping通虛擬機網址 裝OpenSSL依賴文件 [rootlocalhost nginx-1.12.2]# yum -y install openssl pcre-devel 依賴檢測[rootlocalhost nginx-1.12.2]# ./configure [rootlocalhost nginx-1.12.2]# yum -y install zlib [rootlocalhost n…

【騰訊云 HAI域探秘】StableDiffusionWebUI 讓我找到了宮崎駿動漫里的夏天

目錄 前言一、HAI二、應用場景三、構建 Stable Diffusion 模型1、新建HAI應用2、StableDiffusionWebUI&#xff08;1&#xff09;功能介紹&#xff08;2&#xff09;頁面轉中文&#xff08;3&#xff09;AI繪圖① 正向提示詞語② 反向提示詞③ “” 、“ AND”、“|” 用法④ 權…

自定義函數參數傳遞問題

最近&#xff0c;被一個函數調用參數傳遞的問題困惑了一陣。自己寫的解釋程序&#xff0c;一直用的好好的。在暗自得意的過程中&#xff0c;突然出現了bug&#xff0c;被潑了一頭冷水。當然&#xff0c;bug是在無意中被發現的&#xff0c;確定以后則可以編制專用的代碼來揭示它…

重積分的應用@物體對外部質點的引力問題

文章目錄 引力(*)分析兩質點間的引力公式三重積分計算引力薄片情形計算例 引力(*) 這里討論的是:空間一物體對于物體外一點 P 0 ( x 0 , y 0 , z 0 ) P_{0}(x_0,y_0,z_0) P0?(x0?,y0?,z0?)處單位質量的質點的引力 分析 仍然使用元素法, 設占有空間有界閉區域 Ω \Omega …

網絡協議與 IP 編址

網絡協議與 IP 編址 之前大概了解過了網絡的一些基礎概念&#xff0c;見文章&#xff1a; 網絡基礎概念。 之前簡單了解OSI模型分層&#xff1a; TCP/IP模型OSI模型TCP/IP對等模型應用層應用層表示層應用層會話層主機到主機層傳輸層傳輸層因特網層網絡層網絡層網絡接入層數據鏈…

jsonwebtoken生成token和解析

先上npm地址 jsonwebtoken&#xff1a;jsonwebtoken - npm express-jwt&#xff1a;express-jwt - npmps const express require(express); const jwt require(jsonwebtoken); const { expressjwt: expressJWT} require(express-jwt)const app express();// 設置密鑰 co…

愛智EdgerOS之深入解析數據庫模塊的Redis Client

一、Redis 簡介 無論是什么類型的應用&#xff0c;都少不了和數據打交道。尤其是一些復雜的應用場景&#xff0c;都少不了一個高效可靠的數據庫。例如日常開發中最常見的 MySQL 等關系型數據庫&#xff0c;讓數據的存儲、檢索輕松簡單起來&#xff0c;甚至可以輕松地處理百萬量…

51單片機c語言燒錄軟件,51單片機燒寫程序的方法

STC89C51是應用廣泛的51單片機&#xff0c;很多人都是通過該單片機入門學習的&#xff0c;單片機的學習需要勤動手。單片機需要燒寫程序&#xff0c;要用到相關的軟件和硬件。下面介紹一下51單片機燒寫程序的方法。 1 所用到的硬件工具 51單片機燒寫程序需要用到單片機的UART…

C語言數組(下)

我希望各位可以在思考之后去看本期練習&#xff0c;并且在觀看之后獨立編寫一遍&#xff0c;以加深理解&#xff0c;鞏固知識點。 練習一&#xff1a;編寫代碼&#xff0c;演?多個字符從兩端移動&#xff0c;向中間匯聚 我們依舊先上代碼 //編寫代碼&#xff0c;演?多個字…

數據庫Delete的多種用法

數據庫的Delete操作是用來刪除數據庫中的數據記錄的&#xff0c;它是數據庫操作中的一種重要操作&#xff0c;能夠幫助用戶刪除不需要的數據&#xff0c;以便保持數據庫的整潔和高效。在使用Delete操作時&#xff0c;需要注意確保操作的準確性和安全性&#xff0c;以免誤刪重要…

基于 Gin 的 HTTP 中間人代理 Demo

前面實現的代理對于 HTTPS 流量是進行盲轉的&#xff0c;也就是說直接在 TCP 連接上傳輸 TLS 流量&#xff0c;但是我們無法查看或者修改它的內容。當然了&#xff0c;通常來說這也是不必要的。不過對于某些場景下還是有必要的&#xff0c;例如使用 Fiddler 進行抓包或者監控其…

觸想嵌入式工業一體機在智能垃圾分類站的應用

1、行業發展背景 根據住建部給出的目標&#xff0c;到2025年前&#xff0c;全國地級及以上城市要基本建成垃圾分類處理系統。隨著垃圾分類政策在全國強制落地&#xff0c;終端執行層面面臨的最迫切問題是垃圾分類的準確性與社會參與意愿&#xff0c;而這兩點與垃圾分類操作的簡…

CNN發展史脈絡 概述圖整理

CNN發展史脈絡概述圖整理&#xff0c;學習心得&#xff0c;供參考&#xff0c;錯誤請批評指正。 相關論文&#xff1a; LeNet&#xff1a;Handwritten Digit Recognition with a Back-Propagation Network&#xff1b; Gradient-Based Learning Applied to Document Recogniti…

Python 中的數學運算(Python Math)

更多資料獲取 &#x1f4da; 個人網站&#xff1a;ipengtao.com Python中的math模塊是數學運算的重要工具&#xff0c;提供了豐富的數學函數和常數。本文將深入探討math模塊的功能和用法&#xff0c;使您能夠更好地利用Python進行數學運算。 Python的math模塊是一個強大的工具…

C51--OLED

GME12864-12 OLED寫入指令數據&#xff1a; 1、start&#xff08;&#xff09;開始 2、slave address 存積地址&#xff1a;011110 xx 寫入&#xff1a;b 0111 1000 &#xff08;0x78&#xff09;&#xff08;R / W位置為0時&#xff0c;表示寫入&#xff09; 3、ACK 4、cotro…

操作系統———磁盤調度算法模擬

實驗目的 磁盤是可供多個進程共享的設備&#xff0c;當有多個進程都要求訪問磁盤是&#xff0c;應采用一種最佳調度算法&#xff0c;以使各進程對磁盤的平均訪問時間最小。目前最成用的磁盤調度算法有先來先服務&#xff08;FCFS&#xff09;&#xff0c;最短尋道時間優先&…