天天看點

《非常網管:網絡管理從入門到精通(修訂版)》一1.3 ISO/OSI參考模型

本節書摘來異步社群《非常網管:網絡管理從入門到精通(修訂版)》一書中的第1章,第1.3節,作者: 崔北亮 , 陳家遷,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

非常網管:網絡管理從入門到精通(修訂版)

上一節對協定分層和網絡體系結構進行了概述。接下來,本節介紹一些具體的網絡體系結構,首先介紹一個重要的網絡體系結構,即osi參考模型。

在網絡發展初期,許多研究機構、計算機廠商和公司都大力發展計算機網絡。從arpanet出現至今,已經推出了許多商品化的網絡系統。這種自行發展的網絡,在體系結構上差異很大,以至于它們之間互不相容,難于互相連接配接以構成更大的網絡系統。為此,許多标準化機構積極開展了網絡體系結構标準化方面的工作,其中最為著名的就是國際标準化組織iso提出的開放系統互連osi參考模型。osi參考模型是研究如何把開放式系統(即為了與其他系統通信而互相開放的系統)連接配接起來的标準。

osi參考模型将計算機網絡分為7層,如圖1-3-1所示。下面将從最底層開始,依次介紹模型的各層所要完成的功能。

《非常網管:網絡管理從入門到精通(修訂版)》一1.3 ISO/OSI參考模型

1.實體層

實體層(physical layer)的主要功能是完成相鄰節點之間原始比特流的傳輸。實體層協定關心的典型問題是,使用什麼樣的實體信号來表示資料“1”和“0”,一位持續的時間多長,資料傳輸是否可同時在兩個方向上進行,最初的連接配接如何建立以及完成通信後連接配接如何終止,實體接口(插頭和插座)有多少針以及各針的用處。實體層的設計主要涉及實體層接口的機械、電氣、功能和過程特性,以及實體層接口連接配接的傳輸媒體等問題。實體層的設計還涉及通信工程領域内的一些問題。實體層常用的網絡裝置有中繼器(repeater)和集線器(hub)。

2.資料鍊路層

資料鍊路層(data link layer)的主要功能是在不可靠的實體線路上進行資料的可靠傳輸。資料鍊路層完成的是網絡中相鄰節點之間可靠的資料通信。為了保證資料的可靠傳輸,發送方把使用者資料封裝成幀(frame),并按順序傳送各幀。由于實體線路的不可靠,是以發送方發出的資料幀有可能線上路上發生出錯或丢失,進而導緻接收方不能正确接收到資料幀。為了保證能讓接收方對接收到的資料進行正确性判斷,發送方為每個資料分塊計算出crc(cyclic redundancy check,循環備援校驗),并把crc添加到幀中,這樣接收方就可以通過重新計算crc來判斷資料接收的正确性。一旦接收方發現接收到的資料有錯,則發送方必須重傳這一幀資料。然而,相同幀的多次傳送也可能使接收方收到重複的幀。例如,接收方給發送方的“确認幀”被破壞後,發送方也會重傳上一幀,此時接收方就可能接收到重複幀。資料鍊路層必需解決由于幀的損壞、丢失和重複所帶來的問題。

資料鍊路層要解決的另一個問題是,防止高速發送方的資料把低速接收方“淹沒”。是以需要某種資訊流量控制機制使發送方得知接收方目前還有多少緩存空間。為了控制的友善,流量控制常常和差錯處理一同實作。

在局域以太網中,資料鍊路層通過mac(media access control,媒體通路控制)位址負責主機之間資料的可靠傳輸。資料鍊路層的裝置必須能識别出資料鍊路層的位址,如區域網路交換機能構造mac位址表,基于mac位址進行資料轉發;網卡本身具有mac位址,能根據mac位址判斷資料包是否是發往本機的資料包。網橋、交換機和網卡都屬于資料鍊路層的裝置。

實驗1-2 檢視區域網路中的某台主機是否線上

如何檢視區域網路中某台主機是否線上呢?可以選擇“開始”→“運作”指令,輸入“cmd”後單擊“确定”按鈕,在打開的dos視窗中輸入“ping 某主機的ip位址”。如果收到“reply from …”,則說明該主機肯定是線上的;如果收到“request time out”,是否能說明該主機一定不線上呢?回答是否定的,收到逾時資訊并不能說明該主機一定不線上,因為如果該主機運作防火牆軟體,禁止ping指令回應,收到的資訊也是“request time out”。ping執行完以後,可以通過在dos視窗中輸入“arp -a”,檢視本機的arp(address resolution protocol,位址解析協定)緩存,如果有緩存條目,則說明該主機是線上的,如果沒有緩存條目,則說明該主機不線上。

為了更形象地說明這個問題,請參照圖1-3-2。第一次執行“ping 192.168.1.220 –n 1”指令,嘗試去ping 192.168.1.220這個ip位址,其中的“-n 1”是ping指令的參數,表示隻ping一個資料包,ping指令預設發送的是4個包。結果收到了192.168.1.220的應答包,“reply from 192.168.1.220: bytes=32 time<1ms ttl=128”,其中“byte=32”表示收到的位元組數,ping 的應答包預設大小是32位元組;“time<1ms”,表示從發出ping包到收到應答,花費的時間小于1ms,這個值可以用來簡單地判斷網絡的健康狀況;“ttl=128”,ttl表示生存周期,每經過一台路由器,這個值至少減1。這個值和具體的作業系統以及從ping的源主機到ping的目标主機之間經過的路由器數量也有關,因不同的作業系統預設的初始值不同,可能的初始值是64、128、255。假如作業系統的預設初始值是128,則上面的結果表示,沒有經過任何一台路由器就到達目标了,假如作業系統的預設值是255,則經過的路由器可能就是255-128=127,這是不可能的情況,因為internet上沒有任何兩台主機之間的路由器會達到這個數值。

《非常網管:網絡管理從入門到精通(修訂版)》一1.3 ISO/OSI參考模型

确定源和目标之間的路由器數量,可使用“tracert”指令,如圖1-3-3所示。使用ping指令測試從www.263.net傳回的包的ttl(time to live,生存時間)是49,源主機和www.263.net主機之間經過的路由器數量大概是64-49=15,說“大概”是因為每經過一台路由器,ttl至少減1,有時減的不止是1,這和具體的網絡有關。接下來使用tracert指令測試。其中“-d”是附加參數,如果不加這個參數,tracert指令執行的速度會比較慢,因為計算機嘗試把每台路由器的ip位址解析成域名,這會花很多的時間,而且意義不大。“-d”參數表示計算機不執行ip到域名的反向解析,這會大大加快執行速度。結果顯示,經過14台路由器到達目标,第15跳已經是目标位址了。由此可見,ping指令中的ttl可以用來粗略判斷源主機和目标主機之間經過的路由器的數量,ping隻能測試計算機的連通情況,無法定位到中間出故障的某一台路由器上,而tracert可以更準确地定位到某台出故障的路由器上。

《非常網管:網絡管理從入門到精通(修訂版)》一1.3 ISO/OSI參考模型

開啟計算機“192.168.1.3”的防火牆。在計算機“192.168.1.3”上,右鍵單擊“網路上的芳鄰”,在快捷菜單中選擇“屬性”,打開“網絡連接配接”視窗,右鍵單擊“本地連接配接”,在快捷菜單中選擇“屬性”,如圖1-3-4所示。

在打開的“本地連接配接 屬性”對話框中,選擇“進階”選擇卡,選中“通過限制或阻止……”複選框,啟用計算機的防火牆,如圖1-3-5所示。

《非常網管:網絡管理從入門到精通(修訂版)》一1.3 ISO/OSI參考模型

在計算機“192.168.1.3”上啟用防火牆後,如圖1-3-2所示,ping 192.168.1.3時,收到了逾時的提示,原因是防火牆阻止了ping包。再ping一個不存在的ip位址“192.168.1.4”,也收到了逾時的提示,如何準确判斷出哪一個ip位址是線上的呢?圖1-3-2中所示的“arp -a”指令用來顯示本機儲存的arp緩存,可以看到兩個條目“192.168.1.220”和“192.168.1.3”,卻沒有看到“192.168.1.4”的條目,由此可以判斷“192.168.1.220”和“192.168.1.3”主機線上,“192.168.1.4”主機不線上。由此也可以得知,防火牆對arp是阻止不了的。ipv4中,針對區域網路的arp攻擊危害巨大,很難防禦,本書第4部分通過分析arp攻擊原理,具體介紹一些防禦攻擊的切實可行的解決辦法。

3.網絡層

網絡層(network layer)的主要功能是完成網絡中主機間的封包傳輸。在廣域網中,這包括産生從源端到目的端的路由,根據采用的路由協定,選擇最優的路徑,本書将在第3部分介紹路由的相關知識。

當封包不得不跨越兩個或多個網絡時,又會産生很多新問題。例如,第二個網絡的尋址方法可能不同于第一個網絡,第二個網絡也可能因為第一個網絡的封包太長而無法接收,兩個網絡使用的協定也可能不同。網絡層必須解決這些問題,使異構網絡能夠互連。

網絡層涉及的協定有ip、ipx等,網絡層的裝置必須能識别出網絡層的位址,如路由器、三層交換機等都可以根據ip位址做路徑選擇,它們都屬于網絡層裝置。

實驗1-3 檢視adsl上網擷取到的ip位址

如圖1-1-17所示,檢視給計算機靜态配置設定的ip位址。如果通過adsl上網,計算機将會動态擷取到一個ip位址,如何檢視擷取的ip位址呢?

可以在dos視窗中執行“ipconfig”指令,檢視計算機靜态配置設定的ip位址或動态擷取的ip位址、使用“ipconfig /all”指令除了可以檢視計算機的ip位址外,還可以檢視計算機網卡的mac位址,以及dns伺服器位址。如圖1-3-6所示,adsl顯示的結果與圖1-3-6所示類似,但ip位址是動态擷取的。

《非常網管:網絡管理從入門到精通(修訂版)》一1.3 ISO/OSI參考模型

4.傳輸層

傳輸層(transport layer)的主要功能是完成網絡中不同主機上的使用者程序之間可靠的資料通信。最好的傳輸連接配接是一條無差錯的、按順序傳送資料的管道,即傳輸層的連接配接是真正端到端的連接配接。換言之,源端主機上的某程序是利用封包頭和控制封包與目标主機上的對等程序進行對話。

由于絕大多數主機都支援多任務操作,因而機器上有多個程序,這意味着多條連接配接将進出主機,是以需要以某種方式差別封包屬于哪條連接配接。識别這些連接配接的資訊可以放入傳輸層的封包頭中。除了将幾個封包流多路複用到一條通道上,傳輸層還必須管理跨網連接配接的建立和拆除。這就需要某種命名機制,使機器内的程序能夠說明它希望交談的對象。另外,還需要有一種機制來調節資訊流,使高速主機不會過快地向低速主機傳送資料。

傳輸層相關的協定有tcp、udp(user datagram protocol,使用者資料報協定),它們涉及服務使用的端口号,主機根據端口号識别服務(常用的www服務端口号是80,ftp服務端口号是21等)和區分會話(源ip、源端口号、目标ip、目标端口号,四者共同唯一辨別一個會話)。對一些常用的服務,在檔案“c:windowssystem32driversetcservices”中記錄了服務名、所使用的協定(tcp或udp)、預設端口号。

實驗1-4 檢視服務使用的端口号

對一些不常使用或使用者自己開發的服務程式,使用者可以先建立到服務端的連接配接,然後在dos視窗中輸入指令“netstat -n”,檢視服務所對應的端口号。此方法也适用于一些常用服務。先連接配接主機“192.168.1.220”的遠端桌面(有關遠端桌面的使用,本書将在第2部分介紹),然後執行“netstat”指令來檢視遠端桌面所使用的協定和端口号,如圖1-3-7所示。可以看出遠端桌面使用的協定是tcp,本地主機的ip位址是192.168.1.200,使用的端口号是1756,該端口号是一個大于1024(包括1024)以上的随機值;外部主機的ip位址是192.168.1.220,端口号是3389,3389是遠端桌面預設使用的端口号。

《非常網管:網絡管理從入門到精通(修訂版)》一1.3 ISO/OSI參考模型

5.會話層

會話層(session layer)允許不同機器上的使用者之間建立會話關系。會話層允許進行類似傳輸層的普通資料的傳送,在某些場合還提供了一些有用的增強型服務。會話層允許使用者利用一次會話在遠端的分時系統上登入,或者在兩台機器間傳遞檔案。

會話層提供的服務之一是管理對話控制。會話層允許資訊同時雙向傳輸,或任一時刻隻能單向傳輸。如果屬于後者,則類似于實體信道上的半雙工模式,會話層将記錄此時該輪到哪一方傳輸資料。一種與對話控制有關的服務是令牌管理(token management)。有些協定保證雙方不能同時進行同樣的操作,這一點很重要。為了管理這些活動,會話層提供了令牌,令牌可以在會話雙方之間移動,隻有持有令牌的一方可以執行某種關鍵性操作。另一種會話層服務是同步。如果在平均每小時出現一次大故障的網絡上,兩台機器間要進行一次兩小時的檔案傳輸,則會出現嚴重的問題。每一次傳輸中途失敗後,都不得不重新傳送這個檔案。當網絡再次出現大故障時,可能又會半途而廢。為了解決這個問題,會話層提供了一種方法,即在資料中插入同步點。每次網絡出現故障後,僅僅重傳最後一個同步點以後的資料。

6.表示層

表示層(presentation layer)完成某些特定的功能,對這些功能,人們常常希望找到普遍的解決辦法,而不必由每個使用者自己來實作。值得一提的是,表示層以下各層隻關心從源主機到目标主機可靠地傳送比特,而表示層關心的是所傳送資訊的文法和語義。表示層服務的一個典型例子是用一種大家一緻標明的标準方法對資料進行編碼。

網絡上計算機可能采用不同的資料表示,是以需要在資料傳輸時進行資料格式的轉換。例如,在不同的機器上常用不同的代碼來表示字元串(ascii和ebcdic)、整型數(二進制反碼或補碼)以及機器字的不同位元組順序等。為了讓采用不同資料表示法的計算機之間能夠互相通信并交換資料,在通信過程中使用抽象的資料結構來表示傳送的資料,而在機器内部仍然采用各自的标準編碼。管理這些抽象資料結構,并在發送方将機器的内部編碼轉換為适合網絡上傳輸的傳送文法,以及在接收方做相反的轉換等,都是由表示層來完成的。

另外,表示層還涉及資料壓縮和解壓、資料加密和解密等工作。

7.應用層

網絡的目的在于支援運作于不同計算機的程序之間的通信,而這些程序則是為使用者完成不同任務而設計的。應用層(application layer)包含大量人們普遍需要的協定,如http(hyper text transfer protocol,超文本傳輸協定)、ftp(file transfer protocol,檔案傳輸協定)、smtp(simple message transfer protocol,簡單郵件傳輸協定)、dns(domain name service,域名解析服務)等。

對于需要通信的不同應用來說,應用層的協定都是必需的。例如,當某個使用者想要獲得遠端計算機上的一個檔案拷貝時,要向本機的檔案傳輸軟體送出請求,這個軟體與遠端計算機上的檔案傳輸程序通過檔案傳輸協定進行通信,這個協定主要處理檔案名、使用者許可狀态和其他請求細節的通信。遠端計算機上的檔案傳輸程序使用其他特征來傳輸檔案内容。

由于每個應用有不同的要求,應用層的協定集在iso/osi模型中并沒有定義,但是有些确定的應用層協定,包括虛拟終端、檔案傳輸和電子郵件等,都可作為标準化的候選。值得注意的是,osi模型本身不是網絡體系結構的全部内容,這是因為它并未确切地描述用于各層的協定和實作方法,而僅僅規定每一層應該完成的功能。不過,iso已經為各層制定了相應的标準,但這些标準并不是模型的一部分,它們是作為獨立的國際标準被釋出。

在osi參考模型中,有3個基本概念:服務、接口和協定。osi模型的最重要的貢獻是将這3個概念區厘清楚。

osi參考模型是在其協定開發之前設計出來的。這意味着osi模型不是基于某個特定的協定集而設計的,因而它更具有通用性。但另一方面,也意味着osi模型在協定實作方面存在某些不足。實際上,osi協定過于複雜,這也是osi從未真正流行開來的原因所在。

雖然osi模型和協定并未獲得巨大的成功,但是osi參考模型在計算機網絡的發展過程中仍然起到了非常重要的指導作用,作為一種參考模型和完整體系,它仍對今後計算機網絡技術标準化、規範化方向發展具有指導意義。接下來介紹目前廣泛使用的tcp/ip。

繼續閱讀