新浪網

  新浪首頁 > 科技時代 > FreeBSD使用大全連載 > FreeBSD連載(33):DOD參考模型
 


FreeBSD連載(33):DOD參考模型

http://www.sina.com.cn 1999年12月5日 18:11 王波

第4章 網絡配置與使用

  60年代末,美國國防部(DOD)對建立分組交換的廣域網很感興趣,其基本想法是通過連接多個地域的分散網絡 ,那么局部地區的網絡故障不影響其他部分網絡的正常運行。主要是由于當時正處于冷戰的形勢下,他們要求建立能夠在部分 地區被襲擊的情況下,仍正常運行的軍事網絡。

  研究機構ARPA開始了這個稱為ARPAnet的網絡項目的研究,由于這個項目要求在不同的計算機之間進行通 信,而不同的計算機上會運行不同的操作系統,因此就存在不同系統之間如何按照同樣的規則進行交流的問題。因此最重要的 問題就是開發所有的系統都遵守的標准協議,讓它來實現應用程序對應用程序的通信,并獨立于具體的計算機平台。因此,他 們開發了獨立于特定計算機系統的標准協議,以實現各種計算機之間的通信。

  由于存在多種應用程序,因此協議也并非一個,而是一組協議。而TCP協議和IP協議就是他們開發的這些協議中 最重要的兩個,因此通常就以TCP/IP來稱呼整個協議族,稱為TCP/IP協議,這正是當前流行的Internet 使用的協議標准。

  TCP/IP的成功與BSD Unix分不開的,由于TCP/IP是平台獨立的,而當時大學的研究機構主要使 用BSD Unix,因而加州大學伯克利分校最先在BSD Unix中實現了TCP/IP。于是這一技朮很快推廣到使 用BSD Unix的大學中,TCP/IP得到迅速推廣,越來越多的網絡使用這個協議,越來越多的網絡也通過這個協議 進行了互聯,逐漸形成了今天的Internet。

  • DOD參考模型

  參考模型是關于計算機之間如何進行通信的一種形象化表示方式,它將進行通信所需要的每一步驟按照層次的概念組 織起來。如果一個步驟處理的事情是負責物理線路的具體傳輸,就認為屬于模型中的低層,反過來,如果一個步驟是與具體的 應用程序打交道,就認為屬于模型中的高層,在高層和低層之間按照邏輯關系,還有一些中間層次。

  將通信過程划分為不同層次的原因是因為通信過程是一個復雜的過程,對于用戶來講,能使用WWW瀏覽信息,能發 送電子郵件就能滿足需要,他們只關心這些應用程序,而不關心具體的通信過程﹔另外一些軟件駐留在后台處理通信過程中必 要的任務,如建立連接,發送數據等,而不關心數據是如何發送出去的﹔還有一些硬件專門用來負載信號的傳遞﹔這樣不同的 軟硬件有著層次分明的調用關系,自然就形成了層次的概念,而參考模型正是對這些層次進行區分和定義。

  在參考模型中,數據的物理傳送是由應用程序──屬于模型的最高層,向低層傳送,直至具體傳輸數據的傳輸協議層 ,由這個層將數據通過物理介質──如電纜、光纜、微波等傳送到目的計算機。當數據到達目的計算機時,它沿模型向上傳遞 ,最終到達目的計算機中的應用程序。這個過程就是傳送數據的物理過程。

  可以使用一個簡單例子來解釋這個通信過程。例如朋友之間互相傳遞信函是另一種較容易理解的通信過程,這個過程 中有寄信者、收信者、郵遞員、郵車等等。由寄信者將信交給郵遞員,郵遞員處理信件之后將信通過郵車發到對方的城市,對 方城市的郵遞員再將信交給收信者。這樣就可以將這個過程按層次划分,寄信者和收信者可以看作一個層次,他們使用郵政服 務,可以看成應用層﹔所有層次的郵政員工是一個層次,進行具體的處理通信工作,可以稱為通信層﹔而郵車可以看成另一個 層次,處理具體發送郵件工作,稱為傳輸層﹔這只是一個簡單例子,具體網絡通信過程則要復雜的多。

  從上圖可以看出,雖然物理數據的傳送是先從上到下,再從下到上回到另一台計算機的應用程序中,如果不考慮低層 是如何進行具體處理的,就可以將通信看成在每一層與另一個計算機中的相應層之間進行的。這樣在每層與另一台計算機相應 層之間就存在邏輯上的連接通信和傳遞數據的能力。如果還使用前面的寄信的例子來說明的話,就是寄信者只考慮收信者,收 信者也只考慮寄信者,而不管郵遞員是如何處理信件的,在邏輯上就是朋友之間的通信關系。

  這樣用邏輯通信的方式將數據傳送歸結到各層中的協議上,每一個協議只定義了完成通信的一個任務,成功的完成整 個通信過程要求多個協議協同進行,這些協議將分屬參考模型的不同層次,而且每個協議只與對方相應的協議通信,而不需考 慮整個通信過程,這樣復雜的通信過程就得到了簡化,從而能更容易實現。

  按照對網絡的不同理解,可以有不同的參考模型,將通信分為不同的層次結構,其中影響最大的就是國際標准化組織 開發的OSI標准七層模型和TCP/IP中使用DOD四層模型。

  DOD模型的四層分別為:

    • 應用層(Application)
    • 主機到主機層(Host to Host)
    • 網絡互連層(Internet)
    • 網絡訪問層(Network Access)

  • 網絡訪問層

  TCP/IP并沒有定義任何網絡訪問層的協議,這個層的協議大部分是由其他通信組織定義的,這反而使TCP/IP 能適合几乎全部硬件平台。網絡訪問層和硬件相關,負責基本的通信,這一層最常見硬件的是以太網和使用普通電話線的 撥號連接。對于以太網,這一層定義了介質訪問控制地址(MAC地址),用于標識不同的計算機。有了網絡訪問層,計算機 之間就有了物理連接,計算機之間就為相互交換數據提供了條件。

  在FreeBSD下,網絡硬件是以網絡界面(Interface)的形式存在的,如果計算機的網卡被正確探測 到的話,則就有一個相應的網絡界面。例如第一個3C905網卡的網絡界面是xl0,第一個Ne2000兼容網卡網絡界 面是ed0,使用內核級PPP驅動的ppp網絡界面為ppp0等。這些網絡界面都對應于內核中的硬件驅動程序,只有在 硬件被檢測到之后,這些網絡界面才能被正常使用。除此之外,還有一個本地環路網絡界面lo0,這使得即使沒有任何網絡 界面的硬件存在,也能使用FreeBSD運行網絡程序為本機提供網絡服務。

  • 網際層(Internet層)

  Internet層負責確定一台計算機能在網絡上的位置,并找出通向它的路徑,然后才能夠相互交換數據。這種 路徑選擇功能既復雜又重要,因此實現這個功能的IP協議是整個TCP/IP協議組中的最基本協議。

  • IP地址

  IP協議給每個計算機都分配了一個唯一的IP地址,這個地址是一個分為四部分的32位長的數,每個部分為8位 ,使用點將其分開,例如192.168.1.64,這樣IP地址就表示的比較清晰﹔每個IP地址被划分為兩個部分,一 個為網絡地址(Network Address),用于表示計算機所在的子網絡,一個為節點地址(Node Addr ess),用于標識計算機在子網絡中的位置﹔網絡地址和節點地址通過網絡掩碼(netmask)進行區分,對應網絡掩 碼二進制位為一的IP地址部分為網絡部分,其他的為節點部分。

  例如網絡掩碼255.255.255.0(16進制形式為0xffffff00)將192.168.1.64 的網絡部分分為192.168.1和64兩部分,因此其網絡地址為192.168.1.0,節點部分為0.0.0.6 4。這個IP地址在FreeBSD下可以寫作192.168.1.64/255.255.255.0或者192.16 8.1.64/24,后面一種形式和前一個是等價的,表示子網掩碼的二進制位中前面為1的位共有24位,即255.2 55.255.0。

  同一個網絡中的網絡地址應該相同,但節點地址應該不同,因而子網掩碼可以決定這個網絡中可以擁有的TCP/I P主機的數量,即節點地址的范圍減2,其中節點地址二進制位全為0的地址為網絡地址,表示這個網絡本身,而節點地址二 進制位全為0的地址為廣播地址,用于在網絡中發送廣播包。

  在IP協議中,為了便于管理,為不同種類的IP地址定義了缺省的網絡掩碼,而定義的具備不同網絡掩碼的IP地 址就組成不同的網絡類別。

  A類網絡:1.0.0.0到127.0.0.0,缺省網絡掩碼為255.0.0.0,每個網絡可以容納16, 777,214台計算機﹔

  B類網絡:128.0.0.0到191.0.0.0,缺省網絡掩碼為255.255.0.0,每個網絡可以容 納65,534台計算機﹔

  C類網絡:192.0.0.0到223.0.0.0,缺省網絡掩碼為255.255.255.0,每個網絡只 能容納254台計算機﹔

  其他的IP地址屬于D、E、F類地址,被IP協議保留用在了mutlicast等其他方面。

  這樣划分的目的是為了讓IP地址可以同時滿足要求不同IP地址數量的大型網絡和小型網絡的需要。然而隨著In ternet的發展,IP地址開始變得緊張起來,當前已經提出了IPv6標准,以擴展IP地址的范圍,解決地址緊張的 問題。當前絕大多數網絡還沒有支持IPv6,因此完全轉向IPv6還是一個漫長的過程,這也是FreeBSD不將比較 成熟的FreeBSD IPv6計划──KAME,包括入FreeBSD發行版本的原因之一。當前主要使用另一種IP 地址轉換技朮(NAT, Network Address Translete)來解決IP地址緊張的問題。

  • 路由

  有了IP地址,計算機就能確定在它在網絡上的位置。當一台計算機要和另外計算機通信時,它首先必須知道對方的 IP地址,如果該IP的網絡地址和它相同,兩台計算機就處在同一個子網上,能通過網絡訪問層進行通信。直接通過IP地 址請求獲得對方的MAC地址,以通過網絡訪問層進行通信,這需要通過另一個協議──ARP協議,從IP地址獲得對方的 MAC地址。

  如果兩台計算機不在同一個網絡內,就需要一些特殊的計算機──路由器的幫助,才能將IP數據包發送到對方計算 機上。當兩台計算機不在同一個網絡內時,計算機將查看自己的路由表,找出通往對方的合適路由器的IP地址,將IP數據 包發送給這台路由器,由各級路由器負責將IP包發送到目的地。因此一台計算機要想和子網外的計算機通信,至少要知道一 台路由器,由這台路由器負責將數據發送到子網外,通常稱這台路由器為缺省網關(default Gateway)。

  那么,路由器就必須了解到通往其他子網的通路,這些路徑可以通過route命令由管理員手工加進去,也可以通 過路由器之間相互交換數據,使路由器學習到更多的路由信息。路由器之間交換路由數據的協議主要有RIP、OSPF、B GP等協議。FreeBSD也能很好的支持這些路由交換功能,因此FreeBSD也是用做軟件路由器的最佳選擇。

  • DNS與名字解析

  通常IP地址不易記憶,實際使用中是通過使用主機名來標記一台計算機,而主機名可以自動轉換為IP地址,再進 行實際的連接。主機名與IP地址的對應關系可以配置在主機名配置文件/etc/hosts中,但在網絡上更普遍的是通 過DNS協議,將對應關系保存在網絡上多台名字服務器(DNS server)中,這樣就能通過名字服務器來維護自己 組織機構的名字解析數據。

  由于網絡上不同的計算機屬于不同的網絡和組織機構,因此計算機的名字可以分為區分組織的域名(Domain Name)和在組織內區分計算機的主機名,形成一種多級的結構。例如一台計算機的名字為wb.example.com .cn,其中wb為主機名,example.com.cn為域名,其中example代表工作的單位,com是類別代 碼,代表這個單位是公司機構,cn是國別代碼,代表這個機構位于中國。

  • 主機-主機層

  這一層負責維護不同計算機上的兩個進程的通信,它的主要作用就是將應用程序與網絡的復雜性相隔離,應用層只需 發出請求,而不必顧及任務是如何完成的。這一層包括兩個協議:傳輸控制協議TCP和數據報協議UDP。

  TCP協議是一種面向連接、有分組順序控制和差錯控制的安全准確的協議,因此必須在網絡上傳送額外的維護信息 ,網絡開銷大,但也是最常用的網絡協議。TCP協議在不同機器之間建立了虛擬連接,它使用一個16位的端口地址(po rt number)來區分不同連接。應用程序必須使用一個或几個端口地址用來提供網絡服務,因此對于常用的網絡服務 ,其使用的端口地址就是固定的。FreeBSD下在/etc/services就定義了一些常用的端口地址。

  UDP協議不建立連接,因此也不保証數據正確完整,相對來講網絡開銷小,然而對于不可靠的網絡連接,數據完整 性無法保証。UDP也使用端口地址發送和接受屬于不同應用程序的數據。

  • 應用層

  應用層就是為了讓應用程序在不同的計算機上運行并相互通信而實現的多種協議,每種協議都對應一類應用程序。并 且隨著Internet上的應用程序的不斷增加,應用協議的種類也越來越多。在/etc/services文件中定義 的每一行就對應一個固定端口,就可能對應于一種應用程序類型。除此之外還有很多非標准應用程序,當然一個系統中并不會 同時運行所有種類的應用程序。

  大部分TCP/IP應用程序是屬于客戶機/服務器類型的,這種類型的應用程序包含兩個部分,其中服務器程序通 常運行在服務器系統的后台,稱為守護程序(daemon)。守護進程運行在后台,隨時接受客戶連接以提供服務﹔客戶軟 件就是應用程序的用戶接口,用戶通過它使用服務器上的資源。

  由于希望在需要的時候服務器能立即提供服務,這樣就需要啟動大量并不常用的守護進程運行在系統中,就浪費了系 統資源。因此Unix使用一個超級守護程序inetd來監控這些不常用到的服務請求。只有在inetd接到客戶程序的 連接請求后,才啟動相應的應用服務程序進行處理,這樣系統中就不必運行過多的守護進程了,從而節約系統資源。inet d的配置文件為/etc/inetd.conf,管理員必須配置這個文件,以便指定系統提供那種服務。

#

# Internet server configuration database
#
# @(#)inetd.conf 5.4 (Berkeley) 6/30/90
#
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l
telnet stream tcp nowait root /usr/libexec/telnetd telnetd
shell stream tcp nowait root /usr/libexec/rshd rshd
login stream tcp nowait root /usr/libexec/rlogind rlogind
finger stream tcp nowait nobody /usr/libexec/fingerd fingerd -s
#exec stream tcp nowait root /usr/libexec/rexecd rexecd
#uucpd stream tcp nowait root /usr/libexec/uucpd uucpd
#nntp stream tcp nowait usenet /usr/libexec/nntpd nntpd
comsat dgram udp wait root /usr/libexec/comsat comsat
ntalk dgram udp wait root /usr/libexec/ntalkd ntalkd
#tftp dgram udp wait nobody /usr/libexec/tftpd tftpd /tftpboot

  inetd.conf中的第一列為使用的端口地址,通常在/etc/services中進行定義,第二列和第 三列為連接種類,stream為tcp連接,dgram為udp,第四列可以為非daemon方式啟動的進程配置為n owait,為以daemon方式啟動的進程設置為wait。然后為執行程序的用戶,要執行的程序位置和要執行的程序 命令及其參數。

未完,待續。。。  



 
  新浪首頁 > 科技時代 > FreeBSD使用大全連載 > FreeBSD連載(33):DOD參考模型


網站簡介 | 網站導航 | 廣告服務 | 中文閱讀 | 聯系方式 | 招聘信息 | 幫助信息

Copyright(C) 1999 SINA.com, Stone Rich Sight. All Rights Reserved

版權所有  四通利方 新浪網