網際網路最初是由於軍事用途出現的,現在網路已經走進千家萬戶,稱為生活的一部分。網際網路的各個終端之間能否進行互動的軟體基礎是"網路協議棧",目前主流的網路協議棧是tcp/ip協議棧,下面我們就結合osi國際標準的七層模型和tcp/ip的四層實際標準來將說明一下這個網路協議棧是如何工作的。在此之前,我們知道的是,這個協議棧的模型是用來進行不同終端之間進行互動的乙個基礎網路結構模型,事實上,這個結構的標準osi模型是由國際網際網路標準化組織(international organization for standardization,iso)定義的,但是目前實際上我們使用的卻是tcp/ip的四層協議模型,這是因為osi的七層模型實現起來太過複雜,而tcp/ip四層模型是在osi的基礎上進行的簡化和濃縮版的網路協議模型,是目前使用最廣泛的實際標準,我們先來看一下osi的七層模型是如何工作的。
如下圖,osi的七層自頂向下分別是應用層、表示層、會話層、傳輸層、網路層、資料鏈路層、物理層,每一層的服務提供是由下向上的,即下層通過層間介面為上層提供服務。乙個主機上執行的網路規則實現的集合稱為協議棧,主機也是利用這個協議棧進行傳送和接收資料。
下面我們先介紹一下每一層的功能,再來說明主機間互動時協議棧的工作狀況。
表示層(presentation layer):對網路傳輸的資料進行變換,使得多個主機之間傳送的資訊能夠相互理解,包括資料的壓縮、加密、格式的轉換等。本層定義有ascll、jpeg、mpeg(為運**像定製的標準)。
會話層(session layer):管理主機之間的會話過程,包括會話的建立、終止和中間的管理,來提供服務請求者和提供者之間的通訊。屬於本層的規範有:tcp、udp、spx(序列分組交換協議)等。
傳輸層(transport layer):傳輸層將上層的資料處理分為分段的資料,提供可靠(tcp)或者不可靠的(udp)的傳輸,為上層掩蓋下層細節,保證會話層的資料資訊能夠傳送到另一方的會話層(但不一定是另一方的應用層)。屬於本層的一些規範有tcp、udp、spx等。
網路層(network layer):負責將各個子網之間的資料進行路由選擇,將資料從乙個主機傳送到另乙個主機,其功能包括網際互連、流量控制和擁塞控制等。屬於本層的定義規範有ip、ipx(網際網路分組交換協議)、rip、ospf,實際中的路由器就是屬於這層的。
資料鏈路層(data link layer):在物理介質基礎之上提供可靠的資料傳輸,在這一層利用通訊通道實現誤差錯傳輸,提供實體地址定址、資料層幀、資料的檢測重發、流量控制和鏈路控制等功能。屬於本層定義的規範有sdlc、hdlc、ppp、stp、幀中繼等,實際的mac就屬於本層。
物理層(physical layer):規定了物理線路和裝置的觸發、維護、關閉物理裝置的機械特性、電氣特性、功能特性和過程,為上層的傳輸提供了乙個物理介質,本層是通訊端點之間的硬體介面。屬於本層定義的規範有eia/tia rs-232、eia/tia rs-449、v.35、rj-45等,實際使用中的網絡卡就屬於本層(注意這個,老有人把它當成網路層的)。
下面我們來理解一下資料在這個模型中的流動:
現在我們假設你是右邊的主機a,要跟你的左邊的好友主機b通過qq聊天,
ok,說完,osi的七層模型功能,我們來對比一下tcp/ip的四層模型,實際的標準中tcp/ip將osi七層模型中的應用層、表示層和會話層集成為乙個應用層,取消了會話層和表示層,但他們的功能還在,放在新的應用層中來實現。
另外,傳輸層和網路層不變,最下面的物理層和資料鏈路層被合併乙個新的主機到網路層,大抵功能都還在,不過被整合一起了。
我們在初次學習的時候,一般會將兩種模型進行整合,產生乙個新的五層模型,即:
這樣對每一層的功能詳細展開,就能說明整個網路協議棧的工作原理,這就是在實際資料傳輸的乙個模型,但是要是深入了解每個層的具體功能,如何實現,所用協議等還需要進一步學習,加油!!
計算機網路-謝希仁
lniux網路程式設計-宋敬彬等
理解TCP IP協議棧 1
翻譯自 使用者層面和核心層面的任務由cpu來處理.使用者層和核心層稱為 host 以此與裝置層區分.這裡的裝置指的是用於傳送 接收資料報的network inte ce card nic 更準確的術語叫 lan card 使用者層面 首先應用程式建立要傳送的資料 figure 1中 user dat...
js小白筆記
通過 jquery,您可以使用 hide 和 show 方法來隱藏和顯示 html 元素 通過 jquery,您可以使用 toggle 方法來切換 hide 和 show 方法。顯示被隱藏的元素,並隱藏已顯示的元素 通過 jquery,您可以實現元素的淡入淡出效果。jquery 擁有下面四種 fad...
Java小白筆記
1.常量,一般字母大寫,不能再賦值,final修飾符 final int value 10 2.與,短路與,或,短路或 短路主要乙個條件成立不必執行第二個,效率更高 3.三元運算子 k i 0?i i 如果i大於等於0,把i賦值給k,否則把負i賦值給k 4.final變數經常和static關鍵字一起...