TCP/IP四層模型與OSI參考模型

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

TCP/IP四層模型:

1.鏈路層(數據鏈路層/網絡接口層):包括操作系統中的設備驅動程序、計算機中對應的網絡接口卡

2.網絡層(互聯網層):處理分組在網絡中的活動,比如分組的選路。

3.運輸層:主要為兩臺主機上的應用提供端到端的通信。

4.應用層:負責處理特定的應用程序細節。

?


?

假設在一個局域網(LAN)如以太網中有兩臺主機,二者運行FTP協議:

網絡層與運輸層的區別:

  在TCP/TP協議族中,

  網絡層IP提供的是一種不可靠的服務。它只是盡可能快地把分組從源節點送到目的節點,但不提供任何可靠性的保證。

  Tcp在不可靠的ip層上,提供了一個可靠的運輸層,為了提供這種可靠的服務,TCP采用了超時重傳、發送和接受端到端的確認分組等機制。


?

TCP/IP協議族的分層:


OSI參考模型:(Open System Interconnect 開放系統互連參考模型)

?

1、物理層:

  主要功能:利用傳輸介質為數據鏈路層提供屋里連接,實現比特流的透明傳輸。

  作用:實現相鄰計算機節點之間比特流的透明傳輸,盡可能屏蔽掉具體傳輸介質與物理設備的差異。使其上面的數據鏈路層不必考慮網絡的具體傳輸介質是什么。

  透明傳輸的意義就是:不管傳的是什么,所采用的設備只是起一個通道作用,把要傳輸的內容完好的傳到對方!

?

2、數據鏈路層:負責建立和管理節點間的鏈路。

  主要功能:通過各種控制協議,將有差錯的物理信道變為無差錯的、能可靠傳輸數據幀的數據鏈路。

  具體工作:接受來自物理層的位流形式的數據,并封裝成幀,傳送到上一層;同樣,也將來自上一層的數據幀,拆裝為位流形式的數據轉發到物理層;并且還負責處理接受端發回的確認幀的信息,以便提供可靠的數據傳輸。

  該層通常又被分為?介質訪問控制(MAC)邏輯鏈路控制(LLC)兩個子層:
    MAC子層的主要任務是解決共享型網絡中多用戶對信道競爭的問題,完成網絡介質的訪問控制
    LLC子層的主要任務是建立和維護網絡連接,執行差錯校驗、流量控制和鏈路控制

?

3、網絡層:是OSI參考模型中最復雜的一層,也是通信子網最高的一層,它在下兩層的基礎上向資源子網提供服務。

  主要任務:通過路由算法,為報文或分組通過通信子網選擇最適當的路徑。該層控制數據鏈路層與物理層之間的信息轉發,建立、維持與終止網絡的連接。具體的說,數據鏈路層的數據在這一層被轉換為數據包,然后通過路徑選擇、分段組合、順序、進/出路由等控制,將信息從一個網絡設備傳送到另一個網絡設備。

  一般的,數據鏈路層是解決統一網絡內節點之間的通信,而網絡層主要解決不同子網之間的通信。例如路由選擇問題。

  在實現網絡層功能時,需要解決的主要問題如下:
    尋址:數據鏈路層中使用的物理地址(如MAC地址)僅解決網絡內部的尋址問題。在不同子網之間通信時,為了識別和找到網絡中的設備,每一子網中的設備都會被分配一 個唯一的地址。由于各個子網使用的物理技術可能不同,因此這個地址應當是邏輯地址(如IP地址)
    交換:規定不同的交換方式。常見的交換技術有:線路交換技術和存儲轉發技術,后者包括報文轉發技術和分組轉發技術。
    路由算法:當源節點和路由節點之間存在多條路徑時,本層可以根據路由算法,通過網絡為數據分組選擇最佳路徑,并將信息從最合適的路徑,由發送端傳送的接受端。
    連接服務:與數據鏈路層的流量控制不同的是,前者控制的是網絡相鄰節點間的流量,后者控制的是從源節點到目的節點間的流量。其目的在于防止阻塞,并進行差錯檢測

?

4、傳輸層:

  OSI的下三層的主要任務是數據傳輸,上三層的主要任務是數據處理。而傳輸層是第四層,因此該層是通信子網和資源子網的接口和橋梁,起到承上啟下的作用。

  主要任務:向用戶提供可靠的、端到端的差錯和流量控制,保證報文的正確傳輸。

  主要作用:向高層屏蔽下層數據通信的具體細節,即向用戶透明的傳送報文。

  傳輸層提供會話層和網絡層之間的傳輸服務,這種服務從會話層獲得數據,并在必要時,對數據進行分割,然后,傳輸層將數據傳送到網絡層,并確保數據能準確無誤的傳送到網絡層。因此,傳輸層負責提供兩節點之間數據的可靠傳送,當兩節點的聯系確定之后,傳輸層負責監督工作。綜上,傳輸層的主要功能如下:                ? ? ? ??傳輸連接管理:提供建立、連接和拆除傳輸連接的功能。傳輸層在網絡層的基礎上,提供“面向連接”和“面向無連接”兩種服務                       ? ? ??處理傳輸差錯:提供可靠的“面向連接”和不可靠的“面向無連接”的數據傳輸服務、差錯控制和流量控制。在提供“面向連接”服務時,通過這一層傳輸的數據將由目標設備確認, ?如果在指定的時間內未收到確認信息,數據將被重新發送。                                                     ? ? ? ??監控服務質量

?

5、會話層:是OSI參考模型的第五層,是用戶應用程序和網絡之間的接口

  主要任務:向兩個實體的表示層提供建立和使用連接的方法。將不同實體之間的表示層的連接稱為會話。因此會話層的任務就是組織和協調兩個會話進程之間的通信,并對數據交換進行管理。

  用戶可以按照半雙工、單工和全工的方式建立會話。當建立會話時,用戶必須提供他們想要連接的遠程地址。而這些地址與MAC(介質訪問控制子層)地址或網絡層的邏輯地址不同,他們是為用戶專門設計的,更便于用戶記憶。域名(DN)就是網絡上使用的遠程地址。會話層的具體功能如下:                             ? ???會話管理:允許用戶在兩個實體設備之間建立、維持和終止會話,并支持它們之間的數據交換。例如提供單方向會話或雙向同時會話,并管理會話中的發送順序,以及會話所占用時間的長短。                                                                         ? ? ?會話流量控制:提供流量控制和交叉會話功能。                                                         ? ? ?尋址:使用遠程地址建立會話連接。                                                              ? ? ?出錯控制:從邏輯上講,會話層主要負責數據交換的建立、保持和終止,但實際的工作卻是接收來自傳輸層的數據,并負責糾錯。會話控制和遠程過程調用均屬于這一層的功能。但應注意,此層檢查的錯誤不是通信介質的錯誤,而是磁盤空間、打印機缺紙等高級類的錯誤。

?

6、表示層:

  表示層是OSI模型的第六層,它對來自應用層的命令和數據進行解釋,對各種語法賦予相應的含義,并按照一定的格式傳送給會話層
  其主要功能是“處理用戶信息的表示問題,如編碼、數據格式轉換和加密解密”等。
  表示層的具體功能如下:
    數據格式處理:協商和建立數據交換的格式,解決各應用程序之間在數據格式表示上的差異。
    數據的編碼:處理字符集和數字的轉換。例如由于用戶程序中的數據類型(整型或實型、有符號或無符號等)、用戶標識等都可以有不同的表示方式,因此,在設備之間需要具有在不同字符集或格式之間轉換的功能。
    壓縮和解壓縮:為了減少數據的傳輸量,這一層還負責數據的壓縮與恢復。
    數據的加密和解密:可以提高網絡的安全性。

?

7、應用層

  應用層是OSI參考模型的最高層,它是計算機用戶,以及各種應用程序和網絡之間的接口。

  主要功能:直接向用戶提供服務,完成用戶希望在網絡上完成的各種工作。它在其他6層工作的基礎上,負責完成網絡中應用程序與網絡操作系統之間的聯系,建立與結束使用者之間的聯系,并完成網絡用戶提出的各種網絡服務及應用所需的監督、管理和服務等各種協議。此外,該層還負責協調各個應用程序間的工作。
  應用層為用戶提供的服務和協議有:文件服務、目錄服務、文件傳輸服務(FTP)、遠程登錄服務(Telnet)、電子郵件服務(E-mail)、打印服務、安全服務、網絡管理服務、數據庫服務等。上述的各種網絡服務由該層的不同應用協議和程序完成,不同的網絡操作系統之間在功能、界面、實現技術、對硬件的支持、安全可靠性以及具有的各種應用程序接口等各個方面的差異是很大的。應用層的主要功能如下:
    用戶接口:應用層是用戶與網絡,以及應用程序與網絡間的直接接口,使得用戶能夠與網絡進行交互式聯系。
    實現各種服務:該層具有的各種應用程序可以完成和實現用戶請求的各種服務。

?

OSI 7層模型的小結
由于OSI是一個理想的模型,因此一般網絡系統只涉及其中的幾層,很少有系統能夠具有所有的7層,并完全遵循它的規定。
在7層模型中,每一層都提供一個特殊的網絡功能。從網絡功能的角度觀察:下面4層(物理層、數據鏈路層、網絡層和傳輸層)主要提供數據傳輸和交換功能,即以節點到節點之間的通信為主;第4層作為上下兩部分的橋梁,是整個網絡體系結構中最關鍵的部分;而上3層(會話層、表示層和應用層)則以提供用戶與應用程序之間的信息和數據處理功能為主。簡言之,下4層主要完成通信子網的功能,上3層主要完成資源子網的功能。

?

一個很容易理解OSI 七層模型的例子:

OSI七層模式簡單通俗理解

這個模型推出的最開始,是因為美國人有兩臺機器之間進行通信的需求。

需求1:
科學家要解決的第一個問題是,兩個硬件之間怎么通信。具體就是一臺發些比特流,然后另一臺能收到。
于是,科學家發明了物理層:
主要定義物理設備標準,如網線的接口類型、光纖的接口類型、各種傳輸介質的傳輸速率等。它的主要作用是傳輸比特流(就是由1、0轉化為電流強弱來進行傳輸,到達目的地后在轉化為1、0,也就是我們常說的數模轉換與模數轉換)。這一層的數據叫做比特。

需求2:
現在通過電線我能發數據流了,但是,我還希望通過無線電波,通過其它介質來傳輸。然后我還要保證傳輸過去的比特流是正確的,要有糾錯功能。
于是,發明了數據鏈路層
通過各種控制協議,將有差錯的物理信道變為無差錯的、能可靠傳輸數據幀的數據鏈路。

需求3:

現在我可以在兩臺計算機之間發送數據了,那么如果我要在多臺計算機之間發送數據呢?怎么找到我要發的那臺?或者,A要給F發信息,中間要經過B,C,D,E,但是中間還有好多節點如K.J.Z.Y。我怎么選擇最佳路徑?這就是路由要做的事。
于是,發明了網絡層。                                                                     通過路由算法,為報文或分組通過通信子網選擇最適當的路徑。該層控制數據鏈路層與物理層之間的信息轉發,建立、維持與終止網絡的連接。具體的說,數據鏈路層的數據在這一層被轉換為數據包,然后通過路徑選擇、分段組合、順序、進/出路由等控制,將信息從一個網絡設備傳送到另一個網絡設備。一般的,數據鏈路層是解決統一網絡內節點之間的通信,而網絡層主要解決不同子網之間的通信。例如路由選擇問題。

需求4:                                                                           現在我能發正確的發比特流數據到另一臺計算機了,但是當我發大量數據時候,可能需要好長時間,例如一個視頻格式的,網絡會中斷好多次(事實上,即使有了物理層和數據鏈路層,網絡還是經常中斷,只是中斷的時間是毫秒級別的)。那么,我還須要保證傳輸大量文件時的準確性。于是,我要對發出去的數據進行封裝。就像發快遞一樣,一個個地發。
于是,先發明了傳輸層。
向用戶提供可靠的、端到端的差錯和流量控制,保證報文的正確傳輸。提供建立、連接和拆除傳輸連接的功能。傳輸層在網絡層基礎上,提供“面向連接”和“面向無連接”兩種服務。例如TCP,是用于發大量數據的,我發了1萬個包出去,另一臺電腦就要告訴我是否接受到了1萬個包,如果缺了3個包,就告訴我是第1001,234,8888個包丟了,那我再發一次。這樣,就能保證對方把這個視頻完整接收了。
例如UDP,是用于發送少量數據的。我發20個包出去,一般不會丟包,所以,我不管你收到多少個。在多人互動游戲,也經常用UDP協議,因為一般都是簡單的信息,而且有廣播的需求。如果用TCP,效率就很低,因為它會不停地告訴主機我收到了20個包,或者我收到了18個包,再發我兩個!如果同時有1萬臺計算機都這樣做,那么用TCP反而會降低效率,還不如用UDP,主機發出去就算了,丟幾個包你就卡一下,算了,下次再發包你再更新。

需求5:
現在我們已經保證給正確的計算機,發送正確的封裝過后的信息了。但是用戶級別的體驗好不好?難道我每次都要調用TCP去打包,然后調用IP協議去找路由,自己去發?當然不行,所以我們要建立一個自動收發包,自動尋址的功能。
于是,發明了會話層。                                                                     會話層的作用就是建立和管理應用程序之間的通信。允許用戶在兩個實體設備之間建立、維持和終止會話,并支持它們之間的數據交換。例如提供單方向會話或雙向同時會話,并管理會話中的發送順序,以及會話所占用時間的長短。

需求6:
現在我能保證應用程序自動收發包和尋址了。但是我要用Linux給window發包,兩個系統語法不一致,就像安裝包一樣,exe是不能在linux下用的,shell在window下也是不能直接運行的。于是需要表示層,幫我們解決不同系統之間的通信語法問題。

需求7:
OK,現在所有必要條件都準備好了,我們可以寫個android程序,web程序去實現需求把。


?

TCP/IP四層模型與OSI七層模型的對應關系

TCP/IP與OSI最大的不同在于OSI是一個理論上的網絡通信模型,而TCP/IP則是實際運行的網絡協議。

?


原作者:挾天子以令諸侯?

出處:http://www.cnblogs.com/gdayq/?

原文:https:/www.cnblogs.com/gdayq/p/5797645.html

?

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

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

相關文章

Metal日記:使用步驟指南

本文參考資料: juejin.im/post/5b1e8f… xiaozhuanlan.com/topic/04598… developer.apple.com/videos/play… github.com/quinn0809/G… cloud.tencent.com/developer/a… devstreaming-cdn.apple.com/videos/wwdc… Metal處理邏輯 無論是CoreImage、GPUImage框架&…

還駕馭不了4核? 別人已模擬出百萬核心上的并行

摘要:不管是臺式機還是筆記本,四核雙核都已經不是新鮮的事了。計算機領域的你可能已經認識到了給電腦選配4核的處理器完全是一種浪費,因為大多數的程序都不支持多核心的并行處理。然而斯坦福的計算機科學家最近公布,他們已經模擬出…

docker安裝并運行ubuntu

拉取鏡像 docker pull dorowu/ubuntu-desktop-lxde-vnc 運行容器: docker run -p 6080:80 dorowu/ubuntu-desktop-lxde-vnc 之后就可以http://localhost:6080/

Django內置權限擴展案例

當Django的內置權限無法滿足需求的時候就自己擴展吧~ 背景介紹 overmind項目使用了Django內置的權限系統,Django內置權限系統基于model層做控制,新的model創建后會默認新建三個權限,分別為:add、change、delete,如果給…

Java 從入門到高級學習路線

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 Java 從入門到高級學習路線《一》1.Jvm 部分Jvm 內存模型、Jvm 內存結構、Jvm 參數調優、Java 垃圾回收《二》Java 基礎部分1.必須會使用…

Flutter Mac iOS 環境配置

官方文檔:flutter.io/docs/get-st… 1.需要的命令行工具 bash curl git 2.x mkdir rm unzip which 2.SDK下載地址 flutter_macos_v1.0.0-stable.zip storage.googleapis.com/flutter_inf… 3.解壓Flutter SDK cd ~/Flutter/SDK $ unzip ~/Downloads/flutter_macos_v…

多線程研究1

單線程: from urllib.request import urlretrieve import time import random starttime.time() fopen(E:\Python\py\web\hh.txt,r)#打開存放URL的文件 af.readlines() f.close() for i in a:brandom.randint(0,30)urlretrieve(i,%d.png%b) endtime.time() print(…

android viewpage預加載和懶加載問題

1、本人理解懶加載和預加載問題某種情況下可以歸結為一類問題,下面我就說一下我遇到的預加載問題和懶加載問題及解決的相應方法: - [1 ] 預加載問題 描述:我用到了三個fragment、viewpage及tablayout實現點擊切換、滑動切換。 …

大數據,且行且思

“大數據”概念于20世紀90年代被提出,最初只是對一些在一定時間內無法用傳統方法進行抓取、管理和處理的數據的統稱。隨著時間的推移和科技的發展以及物聯網、移動互聯網、SNS的興起,每年產生的數據量都以幾何級數增長,《IDC Digital Univers…

IntelliJ IDEA中新建JAVA WEB項目、maven項目

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 在IntelliJ IDEA 中新建一個Web應用項目。 1、 在主界面頂部菜單欄依次“File”-"New"-"Project..." 2、在對話框中…

S/4HANA業務角色概覽之訂單到收款篇

2019獨角獸企業重金招聘Python工程師標準>>> 大家好我叫Sean Zhang,中文名張正永。目前在S/4HANA產品研發部門任職產品經理,而這一階段要從2017年算起,而在那之前接觸更多還是技術類的,比如做過iOS、HANA、ABAP、UI5等…

掘金量化的一個代碼,對本人寫策略避免入坑有重要意義

# codingutf-8from __future__ import print_function, absolute_import, unicode_literalsfrom gm.api import *import numpy as npdef init(context):# 選擇的兩個合約context.symbol [DCE.j1901, DCE.jm1901]# 訂閱歷史數據subscribe(symbolscontext.symbol,frequency1d,co…

C++ STL學習筆記

C STL學習筆記一 為何要學習STL: 數據結構與算法是編程的核心,STL中包含各種數據結構和優秀的算法,確實值得深入學習,本文中雖然著重使用,但希望有心的朋友能多看看相關數據結構的實現,對于C語言確實會有較…

ItelliJ IDEA開發工具使用—創建一個web項目

轉自:https://blog.csdn.net/wangyang1354/article/details/50452806概念需要明確一下IDEA中的項目(project)與eclipse中的項目(project)是不同的概念,IDEA的project 相當于之前eclipse的workspace,IDEA的M…

AKOJ-2037-出行方案

鏈接:https://oj.ahstu.cc/JudgeOnline/problem.php?id2037 題意: 安科的夏天真是不一般的熱,避免炎熱,伍學長因此想為自己規劃一個校園出行方案,使得從宿舍出發到校園的各個地方距離花費時間最短。我們已知校園一共有…

akshare 布林通道策略

import datetime import pandas as pd import backtrader as bt import matplotlib.pyplot as plt from datetime import datetime import matplotlib import akshare as ak %matplotlib inline class Boll_strategy(bt.Strategy):#自定義參數,每次買入1800手param…

一些資源網站..

github上各種免費編程書籍~~~ : https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md正則表達式學習 :https://web.archive.org/web/20161119141236/http://deerchao.net:80/tutorials/regex/regex.htmtorch:http…

極客無極限 一行HTML5代碼引發的創意大爆炸

摘要:一行HTML5代碼能做什么?國外開發者Jose Jesus Perez Aguinaga寫了一行HTML5代碼的文本編輯器。這件事在分享到Code Wall、Hacker News之后,引起了眾多開發者的注意,紛紛發表了自己的創意。 這是最初的HTML5代碼,它…

c# 寫文件注意問題及用例展示

以txt寫string舉例,正確代碼如下: private void xie(){FileStream fs new FileStream("1.txt", FileMode.Create);StreamWriter sw new StreamWriter(fs, Encoding.Default);sw.Write("123");sw.Flush();sw.Close();//fs.Flush();…

akshare sma策略

import datetimeimport pandas as pdimport backtrader as bt from datetime import datetime import matplotlib import akshare as ak %matplotlib inlineclass SmaCross(bt.Strategy):# 全局設定交易策略的參數params ((pfast, 5), (pslow, 20),)def __init__(self):sma1 …