① 簡述計算機網路的OSI體系結構模型和TCP/IP體系結構模型的內容及其特點
OSI(開放系統互聯模型)分7層,
而TCP/IP模型一般分四層或五層(最底層網路接入層可以分為兩層物理層和數據鏈路層),
現在網路層次術語仍然使用OSI模型所定義的層次結構,
但現在建立的大多數網路所使用的網路標准和協議是根據TCP/IP模型的。
OSI是早期的網路模型,相比較TCP/IP模型更符合現在的網路結構。
② 計算機網路體系結構的ISO/OSI網路體系結構
國際標准化組織ISO(International Standards Organization)在80年代提出的開放系統互聯參考模型OSI(Open System Interconnection),這個模型將計算機網路通信協議分為七層。這個模型是一個定義異構計算機連接標準的框架結構,其具有如下特點:
①網路中異構的每個節點均有相同的層次,相同層次具有相同的功能。
②同一節點內相鄰層次之間通過介面通信。
③相鄰層次間介面定義原語操作,由低層向高層提供服務。
④不同節點的相同層次之間的通信由該層次的協議管理,
⑤每層次完成對該層所定義的功能,修改本層次功能不影響其它層、
⑥僅在最低層進行直接數據傳送。
⑦定義的是抽象結構,並非具體實現的描述。
在OSI網路體系結構中、除了物理層之外,網路中數據的實際傳輸方向是垂直的。數據由用戶發送進程發送給應用層,向下經表示層、會話層等到達物理層,再經傳輸媒體傳到接收端,由接收端物理層接收,向上經數據鏈路層等到達應用層,再由用戶獲取。數據在由發送進程交給應用層時,由應用層加上該層有關控制和識別信息,再向下傳送,這一過程一直重復到物理層。在接收端信息向上傳遞時,各層的有關控制和識別信息被逐層剝去,最後數據送到接收進程。
現在一般在制定網路協議和標准時,都把ISO/OSI參考模型作為參照基準,並說明與該參照基準的對應關系。例如,在IEEE802區域網LAN標准中,只定義了物理層和數據鏈路層,並且增強了數據鏈路層的功能。在廣域網WAN協議中,CCITT的X.25建議包含了物理層、數據鏈路層和網路層等三層協議。一般來說,網路的低層協議決定了一個網路系統的傳輸特性,例如所採用的傳輸介質、拓撲結構及介質訪問控制方法等,這些通常由硬體來實現;網路的高層協議則提供了與網路硬體結構無關的,更加完善的網路服務和應用環境,這些通常是由網路操作系統來實現的。 物理層建立在物理通信介質的基礎上,作為系統和通信介質的介面,用來實現數據鏈路實體間透明的比特 (bit) 流傳輸。只有該層為真實物理通信,其它各層為虛擬通信。物理層實際上是設備之間的物理介面,物理層傳輸協議主要用於控制傳輸媒體。
(1)物理層的特性
物理層提供與通信介質的連接,提供為建立、維護和釋放物理鏈路所需的機械的、電氣的、功能的和規程的特性,提供在物理鏈路上傳輸非結構的位流以及故障檢測指示。物理層向上層提供位 (bit) 信息的正確傳送。
其中機械特性主要規定介面連接器的尺寸、芯數和芯的位置的安排、連線的根數等。電氣特性主要規定了每種信號的電平、信號的脈沖寬度、允許的數據傳輸速率和最大傳輸距離。功能特性規定了介面電路引腳的功能和作用。規程特性規定了介面電路信號發出的時序、應答關系和操作過程,例如,怎樣建立和拆除物理層連接,是全雙工還是半雙工等。
(2)物理層功能
為了實現數據鏈路實體之間比特流的透明傳輸,物理層應具有下述功能:
①物理連接的建立與拆除
當數據鏈路層請求在兩個數據鏈路實體之間建立物理連接時,物理層能夠立即為它們建立相應的物理連接。若兩個數據鏈路實體之間要經過若干中繼數據鏈路實體時,物理層還能夠對這些中繼數據鏈路實體進行互聯,以建立起一條有效的物理連接。當物理連接不再需要時,由物理層立即拆除。
②物理服務數據單元傳輸
物理層既可以採取同步傳輸方式,也可以採取非同步傳輸方式來傳輸物理服務數據單元。
③物理層管理
對物理層收發進行管理,如功能的激活 (何時發送和接收、異常情況處理等)、差錯控制 (傳輸中出現的奇偶錯和格式錯)等。 數據鏈路層為網路層相鄰實體間提供傳送數據的功能和過程;提供數據流鏈路控制;檢測和校正物理鏈路的差錯。物理層不考慮位流傳輸的結構,而數據鏈路層主要職責是控制相鄰系統之間的物理鏈路,傳送數據以幀為單位,規定字元編碼、信息格式,約定接收和發送過程,在一幀數據開頭和結尾附加特殊二進制編碼作為幀界識別符,以及發送端處理接收端送回的確認幀,保證數據幀傳輸和接收的正確性,以及發送和接收速度的匹配,流量控制等。
(1)數據鏈路層的目的
提供建立、維持和釋放數據鏈路連接以及傳輸數據鏈路服務數據單元所需的功能和過程的手段。數據鏈路連接是建立在物理連接基礎上的,在物理連接建立以後,進行數據鏈路連接的建立和數據鏈路連接的拆除。具體說,每次通信前後,雙方相互聯系以確認一次通信的開始和結束,在一次物理連接上可以進行多次通信。數據鏈路層檢測和校正在物理層出現的錯誤。
(2)數據鏈路層的功能和服務
數據鏈路層的主要功能是為網路層提供連接服務,並在數據鏈路連接上傳送數據鏈路協議數據單元L-PDU,一般將L-PDU稱為幀。數據鏈路層服務可分為以下三種:
①無應答、無連接服務。發送前不必建立數據鏈路連接,接收方也不做應答,出錯和數據丟失時也不做處理。這種服務質量低,適用於線路誤碼率很低以及傳送實時性要求高的 (例如語音類的)信息等。
②有應答、無連接服務。當發送主機的數據鏈路層要發送數據時,直接發送數據幀。目標主機接收數據鏈路的數據幀,並經校驗結果正確後,向源主機數據鏈路層返回應答幀;否則返回否定幀,發送端可以重發原數據幀。這種方式發送的第一個數據幀除傳送數據外,也起數據鏈路連接的作用。這種服務適用於一個節點的物理鏈路多或通信量小的情況,其實現和控制都較為簡單。
③面向連接的服務。該服務一次數據傳送分為三個階段:數據鏈路建立,數據幀傳送和數據鏈路的拆除。數據鏈路建立階段要求雙方的數據鏈路層作好傳送的准備;數據傳送階段是將網路層遞交的數據傳送到對方;數據鏈路拆除階段是當數據傳送結束時,拆除數據鏈路連接。這種服務的質量好,是ISO/OSI參考模型推薦的主要服務方式。
(3)數據鏈路數據單元
數據鏈路層與網路層交換數據格式為服務數據單元。數據鏈路服務數據單元,配上數據鏈路協議控制信息,形成數據鏈路協議數據單元。
數據鏈路層能夠從物理連接上傳輸的比特流中,識別出數據鏈路服務數據單元的開始和結束,以及識別出其中的每個欄位,實現正確的接收和控制。能按發送的順序傳輸到相鄰結點。
(4)數據鏈路層協議
數據鏈路層協議可分為面向字元的通信規程和面向比特的通信規程。
面向字元的通信規程是利用控制字元控制報文的傳輸。報文由報頭和正文兩部分組成。報頭用於傳輸控制,包括報文名稱、源地址、目標地址、發送日期以及標識報文開始和結束的控制字元。正文則為報文的具體內容。目標節點對收到的源節點發來的報文,進行檢查,若正確,則向源節點發送確認的字元信息;否則發送接收錯誤的字元信息。
面向比特的通信規程典型是以幀為傳送信息的單位,幀分為控制幀和信息幀。在信息幀的數據欄位 (即正文)中,數據為比特流。比特流用幀標志來劃分幀邊界,幀標志也可用作同步字元。 廣域網路一般都劃分為通信子網和資源子網,物理層、數據鏈路層和網路層組成通信子網,網路層是通信子網的最高層,完成對通信子網的運行控制。網路層和傳輸層的界面,既是層間的介面,又是通信子網和用戶主機組成的資源子網的界限,網路層利用本層和數據鏈路層、物理層兩層的功能向傳輸層提供服務。
數據鏈路層的任務是在相鄰兩個節點間實現透明的無差錯的幀級信息的傳送,而網路層則要在通信子網內把報文分組從源節點傳送到目標節點。在網路層的支持下,兩個終端系統的傳輸實體之間要進行通信,只需把要交換的數據交給它們的網路層便可實現。至於網路層如何利用數據鏈路層的資源來提供網路連接,對傳輸層是透明的。
網路層控制分組傳送操作,即路由選擇,擁塞控制、網路互連等功能,根據傳輸層的要求來選擇服務質量,向傳輸層報告未恢復的差錯。網路層傳輸的信息以報文分組為單位,它將來自源的報文轉換成包文,並經路徑選擇演算法確定路徑送往目的地。網路層協議用於實現這種傳送中涉及的中繼節點路由選擇、子網內的信息流量控制以及差錯處理等。
(1)網路層功能
網路層的主要功能是支持網路層的連接。網路層的具體功能如下:
①建立和拆除網路連接
在數據鏈路層提供的數據鏈路連接的基礎上,建立傳輸實體間或者若干個通信子網的網路連接。互連的子網可採用不同的子網協議。
②路徑選擇、中繼和多路復用
網際的路徑和中繼不同與網內的路徑和和中繼,網路層可以在傳輸實體的兩個網路地址之間選擇一條適當的路徑,或者在互連的子網之間選擇一條適當的路徑和中繼。並提供網路連接多路復用的數據鏈路連接,以提高數據鏈路連接的利用率。
③分組、組塊和流量控制
數據分組是指將較長的數據單元分割為一些相對較小的數據單元;數據組塊是指將一些相對較小的數據單元組成塊後一起傳輸。用以實現網路服務數據單元的有序傳輸,以及對網路連接上傳輸的網路服務數據單元進行有效的流量控制,以免發生信息堵塞現象。
④差錯的檢測與恢復
利用數據鏈路層的差錯報告,以及其他的差錯檢測能力來檢測經網路連接所傳輸的數據單元,檢測是否出現異常情況。並可以從出錯狀態中解脫出來。
(2)數據報和虛電路
網路層中提供兩種類型的網路服務,即無連接服務和面向連接的服務。它們又被稱為數據報服務和虛電路服務。
①數據報 (Datagram)服務
在數據報方式,網路層從傳輸層接受報文,拆分為報文分組,並且獨立地傳送,因此數據報格式中包含有源和目標節點的完整網路地址、服務要求和標識符。發送時,由於數據報每經過一個中繼節點時,都要根據當時情況按照一定的演算法為其選擇一條最佳的傳輸路徑,因此,數據報服務不能保證這些數據報按序到達目標節點,需要在接收節點根據標識符重新排序。
數據報方式對故障的適應性強,若某條鏈路發生故障,則數據報服務可以繞過這些故障路徑而另選擇其他路徑,把數據報傳送至目標節點。數據報方式易於平衡網路流量,因為中繼節點可為數據報選擇一條流量較少的路由,從而避開流量較高的路由。數據報傳輸不需建立連接,目標節點在收到數據報後,也不需發送確認,因而是一種開銷較小的通信方式。但是發方不能確切地知道對方是否准備好接收、是否正在忙碌,故數據報服務的可靠性不是很高。而且數據報發送每次都附加源和目標主機的全網名稱降低了信道利用率。
②虛電路 (Virtue Circuit) 服務
在虛電路傳輸方式下,在源主機與目標主機通信之前,必須為分組傳輸建立一條邏輯通道,稱為虛電路。為此,源節點先發送請求分組Call-Request,Call-Request包含了源和目標主機的完整網路地址。Call-Request途徑每一個通信網路節點時,都要記下為該分組分配的虛電路號,並且路由器為它選擇一條最佳傳輸路由發往下一個通信網路節點。當請求分組到達目標主機後,若它同意與源主機通信,沿著該虛電路的相反方向發送請求分組Call-Request給源節點,當在網路層為雙方建立起一條虛電路後,每個分組中不必再填上源和目標主機的全網地址,而只需標上虛電路號,即可以沿著固定的路由傳輸數據。當通信結束時,將該虛電路拆除。
虛電路服務能保證主機所發出的報文分組按序到達。由於在通信前雙方已進行過聯系,每發送完一定數量的分組後,對方也都給予了確認,故可靠性較高。
③路由選擇
網路層的主要功能是將分組從源節點經過選定的路由送到目標節點,分組途經多個通信網路節點造成多次轉發,存在路由選擇問題。路由選擇或稱路徑控制,是指網路中的節點根據通信網路的情況 (可用的數據鏈路、各條鏈路中的信息流量),按照一定的策略 (傳輸時間最短、傳輸路徑最短等)選擇一條可用的傳輸路由,把信息發往目標節點。
網路路由選擇演算法是網路層軟體的一部分,負責確定所收到的分組應傳送的路由。當網路內部採用無連接的數據報方式時,每傳送一個分組都要選擇一次路由。當網路層採用虛電路方式時,在建立呼叫連接時,選擇一次路徑,後繼的數據分組就沿著建立的虛電路路徑傳送,路徑選擇的頻度較低。
路由選擇演算法可分為靜態演算法和動態演算法。靜態路由演算法是指總是按照某種固定的規則來選擇路由,例如,擴散法、固定路由選擇法、隨機路由選擇法和流量控制選擇法。動態路由演算法是指根據拓撲結構以及通信量的變化來改變路由,例如,孤立路由選擇法、集中路由選擇法、分布路由選擇法、層次路由選擇法等 從傳輸層向上的會話層、表示層、應用層都屬於端一端的主機協議層。傳輸層是網路體系結構中最核心的一層,傳輸層將實際使用的通信子網與高層應用分開。從這層開始,各層通信全部是在源與目標主機上的各進程間進行的,通信雙方可能經過多個中間節點。傳輸層為源主機和目標主機之間提供性能可靠、價格合理的數據傳輸。具體實現上是在網路層的基礎上再增添一層軟體,使之能屏蔽掉各類通信子網的差異,向用戶提供一個通用介面,使用戶進程通過該介面,方便地使用網路資源並進行通信。
(1) 傳輸層功能
傳輸層獨立於所使用的物理網路,提供傳輸服務的建立、維護和連接拆除的功能;選擇網路層提供的最適合的服務。傳輸層接收會話層的數據,分成較小的信息單位,再送到網路層,實現兩傳輸層間數據的無差錯透明傳送。
傳輸層可以使源與目標主機之間以點對點的方式簡單地連接起來。真正實現端一端間可靠通信。傳輸層服務是通過服務原語提供給傳輸層用戶(可以是應用進程或者會話層協議),傳輸層用戶使用傳輸層服務是通過傳送服務埠TSAP實現的。當一個傳輸層用戶希望與遠端用戶建立連接時,通常定義傳輸服務訪問點TSAP。提供服務的進程在本機TSAP埠等待傳輸連接請求,當某一節點機的應用程序請求該服務時,向提供服務的節點機的TSAP埠發出傳輸連接請求,並表明自己的埠和網路地址。如果提供服務的進程同意,就向請求服務的節點機發確認連接,並對請求該服務的應用程序傳遞消息,應用程序收到消息後,釋放傳輸連接。
傳輸層提供面向連接和無連接兩種類型的服務。這兩種類型的服務和網路層的服務非常相似。傳輸層提供這兩種類型服務的原因是因為,用戶不能對通信子網加以控制,無法通過使用通信處理機來改善服務質量。傳輸層提供比網路層更可靠的端一端間數據傳輸,更完善的查錯糾錯功能。傳輸層之上的會話層、表示層、應用層都不包含任何數據傳送的功能。
(2)傳輸層協議類型
傳輸層協議和網路層提供的服務有關。網路層提供的服務於越完善,傳輸層協議就越簡單,網路層提供的服務越簡單,傳輸層協議就越復雜。傳輸層服務可分成五類:
0類:提供最簡單形式的傳送連接,提供數據流控制。
1類:提供最小開銷的基本傳輸連接,提供誤差恢復。
2類:提供多路復用,允許幾個傳輸連接多路復用一條鏈路。
3類:具有0類和1類的功能,提供重新同步和重建傳輸連接的功能。
4類:用於不可靠傳輸層連接,提供誤差檢測和恢復。
基本協議機制包括建立連接、數據傳送和拆除連接。傳輸連接涉及四種不同類型的標識:
用戶標識:即服務訪問點SAP,允許實體多路數據傳輸到多個用戶。
網路地址:標識傳輸層實體所在的站。
協議標識:當有多個不同類型的傳輸協議的實體,對網路服務標識出不同類型的協議。
連接標識:標識傳送實體,允許傳輸連接多路復用。 會話是指兩個用戶進程之間的一次完整通信。會話層提供不同系統間兩個進程建立、維護和結束會話連接的功能;提供交叉會話的管理功能,有一路交叉、兩路交叉和兩路同時會話的3種數據流方向控制模式。會話層是用戶連接到網路的介面。
(1)會話層的主要功能
會話層的目的是提供一個面向應用的連接服務。建立連接時,將會話地址映射為傳輸地址。會話連接和傳輸連接有三種對應關系,一個會話連接對應一個傳輸連接;多個會話連接建立在一個傳輸連接上;一個會話連接對應多個傳輸連接。
數據傳送時,可以進行會話的常規數據、加速數據、特權數據和能力數據的傳送。
會話釋放時,允許正常情況下的有序釋放;異常情況下由用戶發起的異常釋放和服務提供者發起的異常釋放。
(2)會話活動
會話服務用戶之間的交互對話可以劃分為不同的邏輯單元,每個邏輯單元稱為活動。每個活動完全獨立於它前後的其他活動,且每個邏輯單元的所有通信不允許分隔開。
會話活動由會話令牌來控制,保證會話有序進行。會話令牌分為四種,數據令牌、釋放令牌、次同步令牌和主同步令牌。令牌是互斥使用會話服務的手段。
會話用戶進程間的數據通信一般採用互動式的半雙工通信方式。由會話層給會話服務用戶提供數據令牌來控制常規數據的傳送,有數據令牌的會話服務用戶才可發送數據,另一方只能接收數據。當數據發完之後,就將數據令牌轉讓給對方,對方也可請求令牌。
(3)會話同步
在會話服務用戶組織的一個活動中,有時要傳送大量的信息,如將一個文件連續發送給對方,為了提高數據發送的效率,會話服務提供者允許會話用戶在傳送的數據中設置同步點。一個主同步點表示前一個對話單元的結束及下一個對話單元的開始。在一個對話單元內部或者說兩個主同步點之間可以設置次同步點,用於會話單元數據的結構化。當會話用戶持有數據令牌、次同步令牌和主同步令牌時就可在發送數據流中用相應的服務原語設置次同步點和主同步點。
一旦出現高層軟體錯誤或不符合協議的事件則發生會話中斷,這時會話實體可以從中斷處返回到一個已知的同步點繼續傳送,而不必從文件的開頭恢復會話。會話層定義了重傳功能,重傳是指在已正確應答對方後,在後期處理中發現出錯而請求的重傳,又稱為再同步。為了使發送端用戶能夠重傳,必須保存數據緩沖區中已發送的信息數據,將重新同步的范圍限制在一個對話單元之內,一般返回到前一個次同步點,最多返回到最近一個主同步點。 應用層作為用戶訪問網路的介面層,給應用進程提供了訪問OSI環境的手段。
應用進程藉助於應用實體 (AE)、實用協議和表示服務來交換信息,應用層的作用是在實現應用進程相互通信的同時,完成一系列業務處理所需的服務功能。當然這些服務功能與所處理的業務有關。
應用進程使用OSI定義和通信功能,這些通信功能是通過OSI參考模型各層實體來實現的。應用實體是應用進程利用OSI通信功能的唯一窗口。它按照應用實體間約定的通信協議 (應用協議),傳送應用進程的要求,並按照應用實體的要求在系統間傳送應用協議控制信息,有些功能可由表示層和表示層以下各層實現。
應用實體由一個用戶元素和一組應用服務元素組成。用戶元素是應用進程在應用實體內部,為完成其通信目的,需要使用的那些應用服務元素的處理單元。實際上,用戶元素向應用進程提供多種形式的應用服務調用,而每個用戶元素實現一種特定的應用服務使用方式。用戶元素屏蔽應用的多樣性和應用服務使用方式的多樣性,簡化了應用服務的實現。應用進程完全獨立於OSI環境,它通過用戶元素使用OSI服務。
應用服務元素可分為兩類,公共應用服務元素 (CASE)和特定應用服務元素 (SASE)。公共應用服務元素是用戶元素和特定應用服務元素公共使用的部分,提供通用的最基本的服務,它使不同系統的進程相互聯系並有效通信。它包括聯系控制元素、可靠傳輸服務元素、遠程操作服務元素等;特定應用服務元素提供滿足特定應用的服務。包括虛擬終端、文件傳輸和管理、遠程資料庫訪問、作業傳送等。對於應用進程和公共應用服務元素來說,用戶元素具有發送和接收能力。對特定服務元素來說,用戶元素是請求的發送者,也是響應的最終接收者。
③ OSI參考模型各層的功能作簡單介紹
下面對OSI參考模型各層的功能作簡單介紹。
物理層:位於OSI參考模型的最底層,提供一個物理連接,所傳數據的單位是比特。其功能是對上層屏蔽傳輸媒體的區別,提供比特流傳輸服務。也就是說,有了物理層後,數據鏈路層及以上各層都不需要考慮使用的是什麼傳輸媒體,無論是用雙絞線、光纖,還是用微波,都被看成是一個比特流管道。
數據鏈路層:負責在各相鄰節點間的線路上無差錯地傳送以幀( Frame)為單位的數據。每一幀包括一定數量的數據和一些必要的控制信息。其功能是對物理層傳輸的比特流進行校驗,並採用檢錯重發等技術,使本來可能出錯的數據鏈路變成不出錯的數據鏈路,從而對上層提供無差錯的數據傳輸。換句話說,就是網路層及以上層不再需要考慮傳輸中出錯的問題,就可以認定下面是一條不出錯的數據傳輸信道,把數據交給數據鏈路層,它就能完整無誤地把數據傳給相鄰節點的數據鏈路層。
網路層:計算機網路中進行通信的兩台計算機之間可能要經過多個節點和鏈路,也可能要經過多個通信子網。網路層數據的傳送單位是分組或包(Packet),它的任務就是選擇合適的路由,使發送端的傳輸層傳下來的分組能夠正確無誤地按照目的地址發送到接收端,使傳輸層及以上各層在設計時不再需要考慮傳輸路由。
傳輸層:在發送端和接收端明孫之間建立一條不會出錯的路由,對上層提供可靠的報文傳輸服務。與數據鏈路層提供的相鄰節點間比特流的無差錯傳輸不同,傳輸層保證的是發送端和接收端之間的無差錯傳輸,主要控制的是包的丟失、錯序、重復等問題。
會話層:會話層雖然不參與具體的數據傳輸,但它要對數據傳輸進行管理。會話層建立在兩個互相通信的應用進程之間,組織並協調其交互。例如,在半雙工通信中,確定在某段時間誰有權發送,誰有權接收;或當發生意外時(如已建立的連接突然斷了),確定在重新恢復會話時應從何處開始,而不必重傳全部數據。
表示層:表示層主要為上層用戶解決用戶信息的語法表示問題,其主要功能是完成數據轉換、數據壓縮和數據加密。表示層將欲交換的資料從適合於某一用戶的抽象語法變換為適合於OSI系統內部使用的傳送語法。有了這樣的表示層,用戶就可以把精力集中在他們所要交談的問題本身,而不必更多地考慮對方的某些特性。
應用層:應用層是OSI參考模型中的最高層,它確定進程之間的通信性質以滿足用戶的需要,負責用戶信息的語義表示,並在兩個通信者之間進行語義匹配。這就是說,應用層不僅要提供應用進程所需要的信息交換等操作,還要作為相互作用的進程的用戶代理,來完成一些為進行語義上有意義的信息交換所必需的功能。
以上所述的各層的最主要功能可以歸納如下:
應用層:與用戶應用進程的介面,即相當於「做什麼?」
表示層:數據格式的轉換,即相當於「對方看起來像什麼?」
會話層:會話的管理與數據傳輸的同步,即相當於「輪到誰講話和從何處講?」
傳輸層:從端到端經網路透明地傳送報文,即相當於「對方在何處?」
網路層:分組交換和路由選擇,即相當於「走哪條激漏鏈路可到達該處?」
數據鏈路層:在鏈路上無差錯地傳送幀,即相當於「每一步該怎麼走?」
物理層:將比特流送到物理媒體搜御上傳送,即相當於「對上一層的每一步應該怎樣利用物理媒體?」
由上可見,OSI參考模型的網路功能可分為三組,下兩層解決網路信道問題,第三、四層解決傳輸服務問題,上三層處理應用進程的訪問,解決應用進程的通信問題。
④ 28 張圖詳解網路基礎知識:OSI、TCP/IP 參考模型(含動態圖)
目錄
1、網路協議
其實協議在我們生活中也能找到相應的影子。
舉個例子,有 2 個男生准備追求同一個妹子,妹子來自河南,講河南話,還會點普通話;一個男生來自胡建,講閩南語,也會點普通話;另一個男生來自廣東,只講粵語;
協議一致,溝通自如
語言不通,無法溝通
你們猜猜?最後誰牽手成功了?答案肯定是來自胡建的那位,雙方可以通過 普通話 進行溝通,表達內容都能理解。而來自廣東的帥哥只會講粵語,不會普通話,妹子表示聽不懂,就無法進行溝通下了。
每個人的成長環境不同,所講的語言、認知、理解能力也就不同。為了使來自五湖四海的朋友能溝通自如,就需要大家協商,認識某一個語言或規則,彼此能互相理解,這個語言就是普通話。
通過這個例子,大家可以這樣理解:
把普通話比作「協議」、把聊天比作「通信」,把說話的內容比作「數據」。
相信這樣類比,大家就知道,協議是什麼了?
簡單地說,就是程序員指定一些標准,使不同的通信設備能彼此正確理解、正確解析通信的內容。我們都知道計算機世界裡是二進制,要麼 1,要麼 0,那為啥可以表達豐富多彩的內容呢?
也是因為協議,不同欄位,不同組合,可以解析不同意思,這就依然協議,讓協議來正確處理。
例如,我們使用手機連 WiFi 來刷抖音,使用的是 802.11(WLAN)協議,通過這個協議接入網路。如果你所連的 WIFI 是不需要手動設置 IP 地址,是通過自動獲取的,就使用到了 DHCP 協議,這樣你的手機算上接入了 區域網, 如果你區域網內有台 NAS 伺服器,存放了某些不可描述的視頻資源,你就可以訪問觀看了,但這時你可能無法訪問互聯網資源,例如,你還想刷會抖音,看看妹子扭一扭,結果出現如下畫面:
出現這種畫面,說明無法使用 互聯網, 可能是無線路由器沒有設置好相關協議,比如: NAT、PPPoE 協議(上網賬號或密碼設置錯誤了),只有設置正確了,就可以通過運營商(ISP)提供的線路把區域網接入到互聯網中,實現手機可以訪問互聯網上的資源(伺服器)。玩微信撩妹子、刷抖音看妹子。
網路協議示意圖
延伸閱讀
1、區域網:最顯著的特點就是范圍有限,行政可控的區域可以是一所高校、一個餐廳、一個園區、一棟辦公樓或一個家庭的私有網路。
2、城域網:原本是介意區域網和廣域網之間,實際工作中很少再刻意去區分城域網和廣域網了,所以這邊不再介紹。
3、廣域網:簡單說就是負責把多個區域網連接起來,它的傳輸距離長距離傳輸,廣域網的搭建一般是由運營商來。
4、互聯網:把全世界上提供資源共享的 IT 設備所在網路連接起來,接入了互聯網就可以隨時隨地訪問這些資源了。
5、物聯網:把所有具有聯網功能的物體都接入互聯網就形成了物聯網。如空調聯網,就可以遠程式控制制空調; 汽車 聯網,就可以遠程獲取行程數據。
總結一下吧!我們可以把電腦、手機等 IT 設備比喻做來自五湖四海的人們,大家都通過多種語言(網路協議)實現溝通(通信)。所有人要一起交流,就用普通話,大家都能理解。所有胡建人在一起,就用閩南語進行溝通,彼此也能理解。這么的方言,就好比計算機網路世界裡也有這么多協議,只是不同協議用在不同地方。
好奇的同學,可能就會問,那網路協議是由誰來規定呢?這就需要提到一個組織,ISO。這個組織制定了一個國際標准 ,叫做 OSI 參考模型,如下,很多廠商都會參考這個制定網路協議。
OSI 參考模型圖
2、OSI 參考模型
既然是模型,就好比模範一樣,大家都要向它學習,以它為原型,展開學習研究。前面我們也提到了一些協議,這么多協議如果不進行歸納,分層,大家學習起來是不是感覺很凌亂?
所以 OSI 參考模型就是將這樣復雜的協議整理並進行分層,分為易於理解的 7 層,並定義每一層的 服務 內容,協議的具體內容是 規則 。上下層之間通過 介面 進行交互,同一層之間通過 協議 進行交互。相信很多網路工程師在今後工作中遇到問題,討論協議問題還會用到這個模型展開討論。所以說,對於計算機網路初學者來說,學習了解 OSI 參考模型就是通往成功的第一步。
OSI 參考模型分層功能
7.應用層
為應用程序提供服務並規定應用程序中通信相關的細節,OSI 的最高層。包括文件傳輸、Email、遠程登錄等協議。程序員接觸這一層比較多。
應用層示例圖
6.表示層
主要負責數據格式的轉換,為上下層能夠處理的格式。如編碼、加密、解密等。
表示層示例圖
5.會話層
即負責建立、管理和終止通信連接(數據流動的邏輯通路),數據分片、重組等傳輸的管理。
會話層示例圖
4.傳輸層
保證可靠傳輸,不需要再路由器上處理,只需再通信雙方節點上進行處理,如處理差錯控制和流量控制。
傳輸層示例圖
3.網路層
主要負責定址和路由選擇,將數據包傳輸到目的地。
網路層示例圖
2.數據鏈路層
負責物理層面上互連、節點之間的通信傳輸,將0 、 1 序列比特流劃分為具有意義的數據幀傳輸給對端。這一層有點類似網路層,網路層也是基於目的地址來傳輸,不同是:網路層是將數據包負責在整個網路轉發,而數據鏈路層僅是在網段內轉發,所以大家抓包會發現,源目 MAC 地址每經過一個二層網段,都會變化。
數據鏈路層示例圖
1.物理層
負責 0、1 比特流(0、1 序列)與電壓高低電平、光的閃滅之間的互相轉換,為數據鏈路層提供物理連接。
物理層示例圖
OSI 為啥最後沒有得到運用呢?其實最主要的原因,是 OSI 模型出現的比 tcp/ip 出現的時間晚,在 OSI 開始使用前,TCP/IP 已經被廣泛的應用了。如果要換成 OSI 模型也不太現實。其次是 OSI 是專家們討論,最後形成的,由於沒有實踐,導致該協議實現起來很復雜,很多廠商不願意用 OSI,與此相比,TCP/IP 協議比較簡單,實現起來也比較容易,它是從公司中產生的,更符合市場的要求。綜合各種因素,最終 OSI 沒有被廣泛的應用。
下面我們來看看 TCP/IP 與 OSI 分層之間的對應關系及相應的協議:
4.應用層
從上圖,可以知道 TCP/IP 四層模型,把應用層、表示層、會話層集成再一起了,該層的協議有:HTTP 、 POP3 、 TELNET 、 SSH 、 FTP 、 SNMP 等。
目前,大部分基於 TCP/IP 的應用都是 客戶端/服務端 架構。一般我們把提供資源服務的那一側叫服務端, 發起訪問服務資源的這一側叫客戶端。
應用層
3.傳輸層
主要職責就是負責兩端節點間的應用程序互相通信,每個節點上可能有很多應用程序,例如,登錄了微信,又打開了網頁,又打開迅雷看看,那數據到達後怎麼正確傳送到相應的應用程序呢?那就需要 埠號 來正確識別了。傳輸層中最為常見的兩個協議分別是傳輸控制協議 TCP (Transmission Control Protocol)和用戶數據報協議 UDP (User Datagram Protocol)
面向連接 顧名思義,就是建立連接,什麼時候建立連接呢?就是在通信之前需要先建立一條邏輯的通信鏈路。就跟我們平時打電話一樣,得先撥通,通了之後即鏈路建立好了,這條鏈路只有你和對方可以在這條鏈路傳播說話內容。掛電話後,這條鏈路也就斷開了。
面向無連接 無連接,即通信之前不需要建立連接,直接發送即可。跟我們以前寫信很像,不需要管對方在不在?直接寫信寄過去就可以了。
面向連接傳輸
面向無連 接傳輸
2.網路層
主要職責就是將數據包從源地址發送到目的地址。
在網路傳輸中,每個節點會根據數據的 IP 地址信息,來判斷該數據包應該由哪個介面(網卡)發送出去。各個地址會參考一個發出介面列表, MAC 定址中所參考的這張表叫做 MAC 地址轉發表 ,而 IP 定址中所參考的叫做 路由表 。MAC 地址轉發表根據自學自動生成。路由控製表則根據路由協議自動生成。MAC 地址轉發表中所記錄的是實際的 MAC 地址本身,而路由表中記錄的 IP 地址則是集中了之後的網路號(即網路號與子網掩碼)。
1.網路介面層
在 TCP/IP 把物理層和數據鏈路層集成為 網路介面層 。主要任務是將上層的數據封裝成幀發送到網路上,數據幀通過網路到達對端,對端收到後對數據幀解封,並檢查幀中包含的 MAC 地址。如果該地址就是本機的 MAC 地址或者是廣播地址,則上傳到網路層,否則丟棄該幀。
封裝與解封裝
所謂的封裝,其實就跟你寄快遞的時候,給物品加上紙盒包裝起來或者快件到站點,快遞員貼一層標簽的過程。在網路上,就是上層的數據往下送的時候,下層會添加頭部,不過,只有在二層,不僅會加上頭部,還會在上層數據尾部添加 FCS。
封裝
所謂解封裝,就如同你收到快件一樣,一層一層地拆外包裝,直到看到快件。網路也是,一層一層地拆掉頭部,往上層傳送,直到看到數據內容。
解封裝
我們把應用層的數據封裝傳輸層頭部後的報文,稱為 段 ;
把段封裝網路層頭部後的報文,稱為 包 ;
把包封裝乙太網頭部和幀尾,稱為 幀 。
⑤ 計算機網路技術第2章裡面OSI參考模型中的第一層物理層的協議數據單元裡面的信號(首部1010011
為什麼要在意這些 微不足道的 細節,纖正這就是陸豎埋 隨便寫的 0和1組成的數據,只是這條數據的某一部分,一般是固定的但是這並沒有寫全。這些數據都是疊加而早螞來的
⑥ 計算機網路模型(OSI & TCP/IP)
開放式系統互聯模型 (英語: O pen S ystem I nterconnection Model,縮寫:OSI;簡稱為 OSI模型 )是一種 概念模型 ,由 國際標准化組織 提出,一個試圖使各種計算機在世界范圍內互連為網路的標准框架。7層中按照功能可分為資源子網和通信子網。每層提取一個字簡記為「物聯網書會使用」
根據建議X.200,OSI將計算機網路體系結構劃分為以下七層,標有1~7,第1層在底部。 現「OSI/RM」是 英文 「Open Systems Interconnection Reference Model」的縮寫。
應用層(Application Layer)提供為應用軟體而設的介面,以設置與另一應用軟體之間的通信。例如:HTTP、HTTPS、FTP、Telnet、SSH、SMTP、POP3等。所有能與用戶交互產生網路流量的程序都在這一層。
表達層(Presentation Layer)把數據轉換為能與接收者的系統格式兼容並適合傳輸的格式。用於處理在兩個通信系統中交換信息的表示方式(語法和語義)。有如下功能:
😊數據格式變換(比特流解析成圖片...)
😊數據加密解密
😊數據壓縮與恢復
會話層(Session Layer)負責在數據傳輸中設置和維護計算機網路中兩台計算機之間的通信連接。向表示層用戶實體/用戶進程提供 建立連接 並在連接上 有序 的 傳輸 數據。這是會話,也是建立同步(SYN)。功能如下:
》建立、管理、終止會話
》使用校驗點可使會話在通信失效時從校驗點/同步點繼續恢復通信,實現數據同步。(適用於傳輸大文件)
傳輸層(Transport Layer)把傳輸表頭(TH)加至數據以形成數據包。傳輸表頭包含了所使用的協議等發送信息。例如:傳輸控制協議(TCP)、用戶數據報協議( UDP) 等。負責主機中兩個進程的通信,即端到端的通信。傳輸單位是報文段或用戶數據報。功能如下:
👍可靠傳輸、不可靠傳輸
👍差錯控制
👍流量控制
👍復用分用
網路層(Network Layer)決定數據的路徑選擇和轉寄,將網路表頭(NH)加至數據包,以形成報文。網路表頭包含了網路數據。例如:互聯網協議(IP)、ICMP、IGMP……等。主要任務是將分組從源端傳遞到目的端,為分組交換網上的不同主機提供通信服務。網路層的傳輸單位是數據報。功能有:
😎路由選擇
😎流量控制
😎差錯控制
😎擁塞控制(若所有節點來不及接受分組而要大量丟棄分組的話,網路處於擁塞狀態)
主要任務是把網路層傳下來的數據報組裝成幀。這層傳輸單位為幀。
數據鏈路層(Data Link Layer)負責網路定址、錯誤偵測和改錯。當表頭和表尾被加至數據包時,會形成 信息框 (Data Frame)。數據鏈表頭(DLH)是包含了物理地址和錯誤偵測及改錯的方法。數據鏈表尾(DLT)是一串指示數據包末端的字元串。例如乙太網、無線區域網(Wi-Fi)和通用分組無線服務(GPRS)等。
分為兩個子層:邏輯鏈路控制(logical link control,LLC)子層和介質訪問控制(Media access control,MAC)子層。功能有:
😜成幀(定義幀的開始和結束)
😜差錯控制(幀錯+位錯)
😜流量控制
😜訪問(接入)控制,控制對信道的訪問。
主要是在物理媒體上實現比特流的透明傳輸。傳輸單位是bit。物理層就是個小傻瓜。
物理層(Physical Layer)在局部區域網上傳送 數據幀 (Data Frame),它負責管理電腦通信設備和網路媒體之間的互通。包括了針腳、電壓、線纜規范、集線器、中繼器、網卡、主機介面卡等。功能有:
🤢定義介面特性
🤢定義傳輸模式(全雙工、半雙工、單工)
🤢定義傳輸速率
🤢比特同步
🤢比特編碼
TCP/IP提供了點對點鏈接的機制,將數據應該如何封裝、定址、傳輸、路由以及在目的地如何接收,都加以標准化。它將軟體通信過程 抽象化 為四個 抽象層 ,採取 協議堆棧 的方式,分別實現出不同通信協議。協議族下的各種協議,依其功能不同,被分別歸屬到這四個層次結構之中,常被視為是簡化的七層 OSI模型 。
該層包括所有和應用程序協同工作,利用基礎網路交換應用程序專用的數據的協議。 應用層 是大多數普通與網路相關的程序為了通過網路與其他程序通信所使用的層。這個層的處理過程是應用特有的;數據從網路相關的程序以這種應用內部使用的格式進行傳送,然後被編碼成標准協議的格式。
一些特定的程序被認為運行在這個層上。它們提供服務直接支持用戶應用。這些程序和它們對應的協議包括 HTTP (萬維網服務)、 FTP (文件傳輸)、 SMTP (電子郵件)、 SSH (安全遠程登錄)、 DNS (名稱<-> IP地址尋找)以及許多其他協議。 一旦從應用程序來的數據被編碼成一個標準的應用層協議,它將被傳送到IP棧的下一層。
在傳輸層,應用程序最常用的是TCP或者UDP,並且伺服器應用程序經常與一個 公開的埠號 相聯系。伺服器應用程序的埠由 互聯網號碼分配局 (IANA)正式地分配,但是現今一些新協議的開發者經常選擇它們自己的埠號。由於在同一個系統上很少超過少數幾個的伺服器應用,埠沖突引起的問題很少。應用軟體通常也允許用戶強制性地指定埠號作為運行 參數 。
鏈接外部的客戶端程序通常使用系統分配的一個隨機埠號。監聽一個埠並且通過伺服器將那個埠發送到應用的另外一個副本以創建對等鏈接(如 IRC 上的 dcc 文件傳輸)的應用也可以使用一個隨機埠,但是應用程序通常允許定義一個特定的埠范圍的規范以允許埠能夠通過實現 網路地址轉換 (NAT)的路由器映射到內部。
每一個應用層( TCP/IP參考模型 的最高層)協議一般都會使用到兩個傳輸層協議之一: 面向連接的 TCP傳輸控制協議 和無連接的包傳輸的 UDP用戶數據報文協議 。 常用的應用層協議有:
運行在 TCP 協議上的協議:
HTTP (Hypertext Transfer Protocol,超文本傳輸協議),主要用於普通瀏覽。
HTTPS (Hypertext Transfer Protocol over Secure Socket Layer, or HTTP over SSL,安全超文本傳輸協議),HTTP協議的安全版本。
FTP (File Transfer Protocol,文件傳輸協議),由名知義,用於文件傳輸。
POP3 (Post Office Protocol, version 3,郵局協議),收郵件用。
SMTP (Simple Mail Transfer Protocol,簡單郵件傳輸協議),用來發送電子郵件。
TELNET (Teletype over the Network,網路電傳),通過一個終端(terminal)登陸到網路。
SSH (Secure Shell,用於替代安全性差的 TELNET ),用於加密安全登陸用。
運行在 UDP 協議上的協議:
BOOTP (Boot Protocol,啟動協議),應用於無盤設備。
NTP (Network Time Protocol,網路時間協議),用於網路同步。
DHCP (Dynamic Host Configuration Protocol,動態主機配置協議),動態配置IP地址。
其他:
DNS (Domain Name Service,域名服務),用於完成地址查找,郵件轉發等工作(運行在 TCP 和 UDP 協議上)。
ECHO (Echo Protocol,回繞協議),用於查錯及測量應答時間(運行在 TCP 和 UDP 協議上)。
SNMP (Simple Network Management Protocol,簡單網路管理協議),用於網路信息的收集和網路管理。
ARP (Address Resolution Protocol,地址解析協議),用於動態解析乙太網硬體的地址。
傳輸層 (transport layer)的協議,能夠解決諸如端到端可靠性(「數據是否已經到達目的地?」)和保證數據按照正確的順序到達這樣的問題。在TCP/IP協議組中,傳輸協議也包括所給數據應該送給哪個應用程序。 在TCP/IP協議組中技術上位於這個層的動態路由協議通常被認為是網路層的一部分;一個例子就是 OSPF (IP協議89)。 TCP (IP協議6)是一個「可靠的」、 面向鏈接 的傳輸機制,它提供一種可靠的位元組流保證數據完整、無損並且按順序到達。TCP盡量連續不斷地測試網路的負載並且控制發送數據的速度以避免網路過載。另外,TCP試圖將數據按照規定的順序發送。這是它與UDP不同之處,這在實時數據流或者路由高 網路層 丟失率應用的時候可能成為一個缺陷。 較新的 SCTP 也是一個「可靠的」、 面向鏈接 的傳輸機制。它是面向記錄而不是面向位元組的,它在一個單獨的鏈接上提供通過多路復用提供的多個子流。它也提供多路自定址支持,其中鏈接終端能夠被多個IP地址表示(代表多個實體介面),這樣的話即使其中一個連接失敗了也不中斷。它最初是為電話應用開發的(在 IP 上傳輸 SS7 ),但是也可以用於其他的應用。 UDP (IP協議號17)是一個 無鏈接 的數據報協議。它是一個「盡力傳遞」(best effort)或者說「不可靠」協議——不是因為它特別不可靠,而是因為它不檢查數據包是否已經到達目的地,並且不保證它們按順序到達。如果一個應用程序需要這些特性,那它必須自行檢測和判斷,或者使用 TCP 協議。 UDP的典型性應用是如流媒體(音頻和視頻等)這樣按時到達比可靠性更重要的應用,或者如 DNS 查找這樣的簡單查詢/響應應用,如果創建可靠的鏈接所作的額外工作將是不成比例地大。 DCCP 目前正由IETF開發。它提供TCP流動控制語義,但對於用戶來說保留UDP的數據報服務模型。 TCP和UDP都用來支持一些高層的應用。任何給定網路地址的應用通過它們的TCP或者UDP 埠號 區分。根據慣例使一些 大眾所知的埠 與特定的應用相聯系。 RTP 是為如音頻和視頻流這樣的實時數據設計的數據報協議。RTP是使用UDP包格式作為基礎的會話層,然而據說它位於網際網路協議棧的傳輸層。
TCP/IP協議族中的 網路互連層 (internet layer)在OSI模型中叫做 網路層 (network layer)。
正如最初所定義的, 網路層 解決在一個單一網路上傳輸數據包的問題。類似的協議有 X.25 和 ARPANET 的 Host/IMP Protocol 。 隨著 網際網路 思想的出現,在這個層上添加附加的功能,也就是將數據從源 網路 傳輸到目的網路。這就牽涉到在網路組成的網上選擇路徑將數據包傳輸,也就是 網際網路 。 在網際網路協議組中, IP 完成數據從源發送到目的的基本任務。IP能夠承載多種不同的高層協議的數據;這些協議使用一個唯一的 IP協議號 進行標識。ICMP和IGMP分別是1和2。 一些IP承載的協議,如 ICMP (用來發送關於IP發送的診斷信息)和 IGMP (用來管理 多播 數據),它們位於IP層之上但是完成網路層的功能,這表明網際網路和OSI模型之間的不兼容性。所有的路由協議,如 BGP 、 OSPF 、和 RIP 實際上也是網路層的一部分,盡管它們似乎應該屬於更高的協議棧。
網路訪問(鏈接)層實際上並不是網際網路協議組中的一部分,但是它是數據包從一個設備的網路層傳輸到另外一個設備的網路層的方法。這個過程能夠在 網卡 的 軟體 驅動程序 中控制,也可以在 韌體 或者專用 晶元 中控制。這將完成如添加 報頭 准備發送、通過 實體 介質 實際發送這樣一些 數據鏈路 功能。另一端,鏈路層將完成數據幀接收、去除報頭並且將接收到的包傳到網路層。 然而,鏈路層並不經常這樣簡單。它也可能是一個 虛擬專有網路 (VPN)或者隧道,在這里從網路層來的包使用 隧道協議 和其他(或者同樣的)協議組發送而不是發送到實體的介面上。VPN和信道通常預先建好,並且它們有一些直接發送到實體介面所沒有的特殊特點(例如,它可以加密經過它的數據)。由於現在鏈路「層」是一個完整的網路,這種協議組的 遞歸 使用可能引起混淆。但是它是一個實現常見復雜功能的一個優秀方法。(盡管需要注意預防一個已經封裝並且經隧道發送下去的數據包進行再次地封裝和發送)。