TCP/IP四層模型:
1.鏈路層(數據鏈路層/網絡接口層):包括操做系統中的設備驅動程序、計算機中對應的網絡接口卡html
2.網絡層(互聯網層):處理分組在網絡中的活動,好比分組的選路。linux
3.運輸層:主要爲兩臺主機上的應用提供端到端的通訊。android
4.應用層:負責處理特定的應用程序細節。web
假設在一個局域網(LAN)如以太網中有兩臺主機,兩者運行FTP協議:算法
網絡層與運輸層的區別:shell
在TCP/TP協議族中,數據庫
網絡層IP提供的是一種不可靠的服務。它只是儘量快地把分組從源節點送到目的節點,但不提供任何可靠性的保證。安全
Tcp在不可靠的ip層上,提供了一個可靠的運輸層,爲了提供這種可靠的服務,TCP採用了超時重傳、發送和接受端到端的確認分組等機制。網絡
TCP/IP協議族的分層:post
OSI參考模型:(Open System Interconnect 開放系統互連參考模型)
一、物理層:
主要功能:利用傳輸介質爲數據鏈路層提供屋裏鏈接,實現比特流的透明傳輸。
做用:實現相鄰計算機節點之間比特流的透明傳輸,儘量屏蔽掉具體傳輸介質與物理設備的差別。使其上面的數據鏈路層沒必要考慮網絡的具體傳輸介質是什麼。
透明傳輸的意義就是:無論傳的是什麼,所採用的設備只是起一個通道做用,把要傳輸的內容無缺的傳到對方!
二、數據鏈路層:負責創建和管理節點間的鏈路。
主要功能:經過各類控制協議,將有差錯的物理信道變爲無差錯的、能可靠傳輸數據幀的數據鏈路。
具體工做:接受來自物理層的位流形式的數據,並封裝成幀,傳送到上一層;一樣,也未來自上一層的數據幀,拆裝爲位流形式的數據轉發到物理層;而且還負責處理接受端發回的確認幀的信息,以便提供可靠的數據傳輸。
該層一般又被分爲 介質訪問控制(MAC)和邏輯鏈路控制(LLC)兩個子層:
MAC子層的主要任務是解決共享型網絡中多用戶對信道競爭的問題,完成網絡介質的訪問控制。
LLC子層的主要任務是創建和維護網絡鏈接,執行差錯校驗、流量控制和鏈路控制。
三、網絡層:是OSI參考模型中最複雜的一層,也是通訊子網最高的一層,它在下兩層的基礎上向資源子網提供服務。
主要任務:經過路由算法,爲報文或分組經過通訊子網選擇最適當的路徑。該層控制數據鏈路層與物理層之間的信息轉發,創建、維持與終止網絡的鏈接。具體的說,數據鏈路層的數據在這一層被轉換爲數據包,而後經過路徑選擇、分段組合、順序、進/出路由等控制,將信息從一個網絡設備傳送到另外一個網絡設備。
通常的,數據鏈路層是解決統一網絡內節點之間的通訊,而網絡層主要解決不一樣子網之間的通訊。例如路由選擇問題。
在實現網絡層功能時,須要解決的主要問題以下:
尋址:數據鏈路層中使用的物理地址(如MAC地址)僅解決網絡內部的尋址問題。在不一樣子網之間通訊時,爲了識別和找到網絡中的設備,每一子網中的設備都會被分配一 個惟一的地址。因爲各個子網使用的物理技術可能不一樣,所以這個地址應當是邏輯地址(如IP地址)
交換:規定不一樣的交換方式。常見的交換技術有:線路交換技術和存儲轉發技術,後者包括報文轉發技術和分組轉發技術。
路由算法:當源節點和路由節點之間存在多條路徑時,本層能夠根據路由算法,經過網絡爲數據分組選擇最佳路徑,並將信息從最合適的路徑,由發送端傳送的接受端。
鏈接服務:與數據鏈路層的流量控制不一樣的是,前者控制的是網絡相鄰節點間的流量,後者控制的是從源節點到目的節點間的流量。其目的在於防止阻塞,並進行差錯檢測
四、傳輸層:
OSI的下三層的主要任務是數據傳輸,上三層的主要任務是數據處理。而傳輸層是第四層,所以該層是通訊子網和資源子網的接口和橋樑,起到承上啓下的做用。
主要任務:向用戶提供可靠的、端到端的差錯和流量控制,保證報文的正確傳輸。
主要做用:向高層屏蔽下層數據通訊的具體細節,即向用戶透明的傳送報文。
傳輸層提供會話層和網絡層之間的傳輸服務,這種服務從會話層得到數據,並在必要時,對數據進行分割,而後,傳輸層將數據傳送到網絡層,並確保數據能準確無誤的傳送到網絡層。所以,傳輸層負責提供兩節點之間數據的可靠傳送,當兩節點的聯繫肯定以後,傳輸層負責監督工做。綜上,傳輸層的主要功能以下: 傳輸鏈接管理:提供創建、鏈接和拆除傳輸鏈接的功能。傳輸層在網絡層的基礎上,提供「面向鏈接」和「面向無鏈接」兩種服務 處理傳輸差錯:提供可靠的「面向鏈接」和不可靠的「面向無鏈接」的數據傳輸服務、差錯控制和流量控制。在提供「面向鏈接」服務時,經過這一層傳輸的數據將由目標設備確認, 若是在指定的時間內未收到確認信息,數據將被從新發送。 監控服務質量
五、會話層:是OSI參考模型的第五層,是用戶應用程序和網絡之間的接口
主要任務:向兩個實體的表示層提供創建和使用鏈接的方法。將不一樣實體之間的表示層的鏈接稱爲會話。所以會話層的任務就是組織和協調兩個會話進程之間的通訊,並對數據交換進行管理。
用戶能夠按照半雙工、單工和全工的方式創建會話。當創建會話時,用戶必須提供他們想要鏈接的遠程地址。而這些地址與MAC(介質訪問控制子層)地址或網絡層的邏輯地址不一樣,他們是爲用戶專門設計的,更便於用戶記憶。域名(DN)就是網絡上使用的遠程地址。會話層的具體功能以下: 會話管理:容許用戶在兩個實體設備之間創建、維持和終止會話,並支持它們之間的數據交換。例如提供單方向會話或雙向同時會話,並管理會話中的發送順序,以及會話所佔用時間的長短。 會話流量控制:提供流量控制和交叉會話功能。 尋址:使用遠程地址創建會話鏈接。 出錯控制:從邏輯上講,會話層主要負責數據交換的創建、保持和終止,但實際的工做倒是接收來自傳輸層的數據,並負責糾錯。會話控制和遠程過程調用均屬於這一層的功能。但應注意,此層檢查的錯誤不是通訊介質的錯誤,而是磁盤空間、打印機缺紙等高級類的錯誤。
六、表示層:
表示層是OSI模型的第六層,它對來自應用層的命令和數據進行解釋,對各類語法賦予相應的含義,並按照必定的格式傳送給會話層。
其主要功能是「處理用戶信息的表示問題,如編碼、數據格式轉換和加密解密」等。
表示層的具體功能以下:
數據格式處理:協商和創建數據交換的格式,解決各應用程序之間在數據格式表示上的差別。
數據的編碼:處理字符集和數字的轉換。例如因爲用戶程序中的數據類型(整型或實型、有符號或無符號等)、用戶標識等均可以有不一樣的表示方式,所以,在設備之間須要具備在不一樣字符集或格式之間轉換的功能。
壓縮和解壓縮:爲了減小數據的傳輸量,這一層還負責數據的壓縮與恢復。
數據的加密和解密:能夠提升網絡的安全性。
七、應用層
應用層是OSI參考模型的最高層,它是計算機用戶,以及各類應用程序和網絡之間的接口。
主要功能:直接向用戶提供服務,完成用戶但願在網絡上完成的各類工做。它在其餘6層工做的基礎上,負責完成網絡中應用程序與網絡操做系統之間的聯繫,創建與結束使用者之間的聯繫,並完成網絡用戶提出的各類網絡服務及應用所需的監督、管理和服務等各類協議。此外,該層還負責協調各個應用程序間的工做。
應用層爲用戶提供的服務和協議有:文件服務、目錄服務、文件傳輸服務(FTP)、遠程登陸服務(Telnet)、電子郵件服務(E-mail)、打印服務、安全服務、網絡管理服務、數據庫服務等。上述的各類網絡服務由該層的不一樣應用協議和程序完成,不一樣的網絡操做系統之間在功能、界面、實現技術、對硬件的支持、安全可靠性以及具備的各類應用程序接口等各個方面的差別是很大的。應用層的主要功能以下:
用戶接口:應用層是用戶與網絡,以及應用程序與網絡間的直接接口,使得用戶可以與網絡進行交互式聯繫。
實現各類服務:該層具備的各類應用程序能夠完成和實現用戶請求的各類服務。
OSI 7層模型的小結
因爲OSI是一個理想的模型,所以通常網絡系統只涉及其中的幾層,不多有系統可以具備全部的7層,並徹底遵循它的規定。
在7層模型中,每一層都提供一個特殊的網絡功能。從網絡功能的角度觀察:下面4層(物理層、數據鏈路層、網絡層和傳輸層)主要提供數據傳輸和交換功能,即以節點到節點之間的通訊爲主;第4層做爲上下兩部分的橋樑,是整個網絡體系結構中最關鍵的部分;而上3層(會話層、表示層和應用層)則以提供用戶與應用程序之間的信息和數據處理功能爲主。簡言之,下4層主要完成通訊子網的功能,上3層主要完成資源子網的功能。
一個很容易理解OSI 七層模型的例子:
OSI七層模式簡單通俗理解
這個模型推出的最開始,是由於美國人有兩臺機器之間進行通訊的需求。
需求1:
科學家要解決的第一個問題是,兩個硬件之間怎麼通訊。具體就是一臺發些比特流,而後另外一臺能收到。
因而,科學家發明了物理層:
主要定義物理設備標準,如網線的接口類型、光纖的接口類型、各類傳輸介質的傳輸速率等。它的主要做用是傳輸比特流(就是由一、0轉化爲電流強弱來進行傳輸,到達目的地後在轉化爲一、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則是實際運行的網絡協議。