GB | BIG5
|
| 首頁 > 網絡管理 > 局域網技術 > 正文 |
 |
| 網路概論---7.通訊協定 |
| http://www.study-area.net/menu1.htm (2001-06-03 19:00:00) |
由網路的迅猛發展出現了許多供網路使用的軟體和硬體為了讓它們都能夠有效的溝通我們需要建立一些規則。
在這一章裡面我會向大家介紹目前比較通用的網路通訊協定和模擬數據是如何的從一個節點傳送到另一個節點從功能上面看看通訊協定的定義。
何為通訊協定
一個比較好理解的講法是通訊協定就是一些標準和規則。例如電話響起來的時候為什麼接電話的人先說“喂~”而不是打電話的人先介紹自己呢我們可以說習慣上如此那麼這個習慣行為就是回答電話的通訊協定了。當然您和您親愛的或許不是這樣接電話的那麼您們使用的就是另一套協定了。
如果節點A要將一個packet送給節點B它們就必須使用相同的通訊協定。
LAN的工作就是幫助應用程式利用網路獲得管理和安排數據。每一個節點都通過一張網路卡(NIC, Network Interface Card)連接到網路再由此和其它的節點溝通。在每一個獨立的工作站上面已經安裝了一些應用程式如WordExcel等。這些程式如果想使用網路上面的資源比如在伺服器上面的數據網路印表機電子郵箱等等會使用網路軟體(network software)去和NIC溝通然後NIC再和網路上的其它節點溝通。所有這些信息都要經過轉換就必須要使用通訊協定來確保所有這些參與者能夠彼此理解對方和進行有效的溝通。
正如您所見到的在節點與節點之間最先的交流是在NIC的層次上。當數據從一個節點通過NIC傳送到另一個節點之後數據再從NIC傳送到網路軟體。而這個網路軟體就是我們所說的傳輸通訊協定(Transport protocol)了在雙方的機器上都會有這些transport protocol。對於這個網路軟體我們可以從好些不同的角度去理解不過我們可以簡單的從三個層次去看
第一也是最容易的理解的就是NIC的驅動程式。
它負責處理網路卡和傳輸協定之間的溝通。網路卡的廠家都會提供一支驅動程式讓您使用一些特定的協定您可以使用同一張卡來供不同的作業系統使用。只要這張網卡在“物理”上是兼容的那你就可以在作業系統上面使用了當然您不能將Ethernet網路卡當Token Ring來使用啦。也就是說您大可不必只依賴一個牌子的廠家。
我們也知道要讓網路卡工作除了要使用正確的驅動程式之外您還得要確定IRQ和IO要正確。另外在網路卡上面還有一個由12個十六進位數字組成的48bit的物理地址(Physical Address)也叫MAC(Media Access Control) Address或 Node ID等名稱相信我們前面也聽過數次了。這個地址其實分為兩個部份前面六個數字為Manufacture ID也就是廠家ID而後面的六個才是Card ID。如果我們見到一張卡的MAC地址是02608C67CD54那麼我們可以知道這張卡是3Com的因為02608C就是3Com的ID。
然後基這個物理地址我們就可以把邏輯地址設定於其上了。物理地址我們是無法更改的而且您也很難找到兩張相同物理地址的網路卡但邏輯地址則是由網路管理者設定。就好比您不能將公司門牌給改了但您喜歡給您的公司起什麼名字都可以只要不會和其它公司搞混了就行。
如果使用不同的傳輸協定邏輯地址的格式也不相同(後面我們會就會講到這問題了)。但無論是物理地址還是邏輯地址要在網路上面溝通的話就必須不同否則就是所謂的地址突啦。
下面我們以IPX為例子認識一下邏輯地址
內部網路地址(Internal Network Address)。
簡單地說internal address是用來識別每一台機器是“誰”。很重要一點是這個內部IPX號碼在同一個網路中對每一台機器來說必須是唯一的。例如Novell NetWare使用內部IPX號碼來識別網路中的伺服器當您安裝NetWare Server的時候您會被問及接受或更改一個隨機產生的內部IPX號碼然後這個號碼就成了該server的ID了。當您從工作站中輸入slist命令您就可以看到每一台server的ID都被列出來了。
外部網路地址(External Network Address)。
這是用來識別一個網路或一個在網路中的網段(segment)的。如果在同一個網路上面同時有兩台server出現那麼它們就必須使用相同的external address了。這個external address好比是用來識別所有的server在“哪裡”的。在Novell Netware裡面只有Server才需要設定external address工作站使用的是它登錄所在的server的external address。
一個完整的IPX地址會是這個樣子的1C9FDB42 : 2E701AID在“” 前面的部份為external address而後一部份則為internal。不過這樣設定也有一個潛在的危險如果您在安裝Novell server的時候一不留神接受了程式自選的External Address那樣就很可能不能和其它server溝通了而且在接下來的安裝中您會被諸如 wrong router address 等錯誤信息煩死程式通常也可以提示您正確的號碼但如果您有兩張網路卡在上面您就要自己設定了。如果您的號碼輸入錯誤您或許不可能修改系統的AUTOEXEC.NCF檔案而external和internal地址都包括在這個檔案裡面所以務必小心
第二。在網路處理程式的另一端有一個軟體叫重導向(Redirector)。
我們知道在單機作業模式下當程式呼叫檔案IO的時候會由作業系統接管這個請求然後再傳給BIOS再到硬體那裡。如果當程式呼叫的檔案IO為網路地址的時候那麼redirector就會接管這個請求而重新導向到網路上面去把請求交給對方機器。
例如當您使用Word的之後要開啟一個在網路磁碟上面的檔案將會如何呢從Word的角度去看它根本不知道有網路這回事它只知道有一個和多個像ABC這樣的磁碟。就像您吃麥當勞的時候您不用知道漢堡包是怎樣作出來的您只需知道魚柳包雞柳包和拿到什麼樣的Kitty貓就是了。Word在設計上並不是應用於非本地磁碟上的當要使用存儲在網路上面的數據的時候就必須有一種軟體能夠以磁碟代號的形式告訴Word才行。所以如果您告訴Word去一個在叫FILESER1的伺服器之DOC目錄下面找檔案那麼redirector軟體就會接管這個請求了。
然而redirector在這個網路軟體集團裡面也只是一個角色而已要真正能夠拿回資料我們還得需要另一位能士的配合 Redirector只是工作在client上面而在server那邊還必須有一個檔案系統(File System)或曰mounter來接應redirector的請求。
在網路世界中有許多種這樣的file system最出名的有 Novell的 NetWare File SystemUnix網路的Network File System (NFS)以及Microsoft 的New Technology File System (NTFS)。在client端的redirector必須要和在server上面的file system兼容(使用相同的協定)否則client也只能望洋興嘆而已。
第三。終來到這章的戲肉了出場的就是通訊協定也就是節點和節點之間在網路上搬運數據的方法。
我之所以將這三個層次的中間部份留在現在才說是因為它是最抽象的。您或許可以這樣想象NIC驅動程式負責和NIC之間的溝通且力討其歡心在client上面的redirector和在server上面的mounter則和程式溝通也極盡體貼之能事然後通訊協定則出盡法寶綴合NIC驅動程式和redirector(或mounter)並建立起網路通訊的交通規則。
正如前述通訊協定只是一些標準和規則而已而這些規則令到交流的融合性得以標準化。就如我們不能離開一些經已認同的規矩去使用電話一樣我們的網路也需要一些共同的溝通語言才能讓所有機器相互交流而不至混亂。
LAN和LAN之間的通訊也一樣需要一些網路語言所以它們都需要有語言大師的本領才行。事實上網路語言有多種多樣由它們在設計之初只為了應付不同的工作而且它們大部份都從來不考慮要和其它網路兼容的。傳輸協定雖然可說琳琅滿目然而不幸得很各自的廠商都有各自的一套偏好。但又非常幸運的是大部份新的網路作業程式都支持超過一種協定可以和不同的作業系統溝通比起以前獨沽一味的情形的確容易多了。
下面我們就淺略的瀏覽一些您將會在網路上運用到的通訊協定。
NetBEUI
讓我們回到IBM最初進軍個人電腦網路的時代他們當時的確需要一個很基本的網路通訊協定但他們並不打算用此來建構大型網路僅僅供數十台電腦甚至更小的網路而已。基這個訴求就誕生了Network Basic Input/Output System或稱NetBIOS。
NetBIOS其實只有18個命令(command)來讓網路的電腦能夠建立維持和使用連接服務。不過IBM在不久後又再推出了NetBIOS的延伸版本NetBIOS Extened User Interface或稱NetBEUI基本上是NetBIOS的改良版本而已。然而NetBIOS和NetBEUI終究是不同的NetBEUI事實上可以說是一個傳輸協定而NetBIOS充其量只是一組命令來讓系統可以使用網路而已在技術角度來看它是一個Application Program Interface (API)。
NetBEUI可以算是您能夠用到的最快通訊協定了。這個“最快”是指它可以將格式化資料放進封包裡面而接收節點又可以迅速的解讀到內容。然而NetBEUI卻有一個最致命的弱點它不是可路由(routable)協定也就是不能夠和其它網路的機器對講。NetBEUI在本地網路裡面是非常優秀的協定但如果您想和設在其它網路的機器溝通NetBEUI就不是您所需要的了。如果您想實現和其它網路的電腦溝通您極有可能必需通過路由設備或路由軟體來實現但無論用哪一樣很遺憾NetBEUI都做不到。
不過Microsoft 網路則運用一種叫 NetBIOS over IP 的技術來連接不同網路的 NetBEUI 客戶。但歸根結底用來達成路由的不是 NetBIOS 而是 TCP/IP也就是下一個要介紹的協定。
TCP/IP
美國國防部開發的 Transmission Control Protocol / Internet Protocol (TCP/IP)當初是用來配合ARPANET (Advanced Research Projects Agency Net)來處理不同硬體之間的連接問題的比如Sun系統和MainframeMainframe和個人電腦之間的連接。
Internet Protocol (IP)工作於網路層(以後會繼續和大家探討 OSI 的網路層級)它提供了一套標準讓不同的網路有規則可循當然前提是您想使用IP從一個網路將封包路由到另一個網路。IP在設計上是用來在LAN和LAN及PC和PC之間進行傳輸的。
您可以把IP看成是戲規則而TCP則用來詮釋這些規則的。雖然TCP/IP原先是專門為幾所大學和機構的使用而設計的但現在TCP/IP已經成為最流行的通訊協定了我們使用的Internet就是用TCP/IP來傳送封包的了。下面就讓我們看看TCP/IP是怎樣工作的
假如您的公司在好些地方都有分公司各自都有著自己的本地網路(LAN)在總公司跑的是Novell網路但分公司大部份都是用麥金塔電腦。當Mac有數據要傳送給PC的時候將會如何呢
首先TCP會在這兩個平建立起一個可以提供全雙工檢錯(對雙向的數據都進行錯誤檢測)的連接。
接著IP制定好溝通規則以及Mac和PC之間的連接port。到這裡為止TCP已經準備好數據了如果數據太大IP就將之分拆成幾份較小的封包並且在封包上面加上一個新的header(轉送地址)確保封包會被正確傳送。TCP還會加上標說明數據的種類及其長度。
再下來IP將封包轉換成標準的編碼格式並將之傳送給PC。
最後在PC上面的TCP將封包解碼並翻譯成PC能夠懂的格式也就是它自己所使用的網路協定。您可以從下圖看到這個過程
TCP/IP可以說是現行協定中用途最廣的協定之一由它嘗試在所有硬體上實現所有事情。不過它也是最慢的傳輸協定之一在某些情形之下它的速度只有NetBEUI的七成。
由於TCP/IP在設計上可供多種硬體部件使用所以它是一個可路由協定。
DLC
Data Link Control協定為國際標準IEEE802.2協定它的使用主要基於兩個原因
第一許多Token Ring網路是使用DLC 來讓PC工作站和mainframe網關(gateway)溝通的。如果您使用Token Ring而且在CONFIG.SYS裡面又有三個裝置驅動程式是以DXM開頭的那您就是使用DLC 驅動程式了。
第二如果您有一些網路印表機本身直接通過JetDirect網卡連上網路的那麼您或許需要DLC 來控制印表機了。
IPX/SPX
Internetwork Packet Exchange (IPX) 是一個Novell協定可以在網路設備之間建立維持和終止通訊連接他既負責數據的傳出也負責傳入。當數據抵達的時候IPX會讀取數據的地址和將之搬運到網路伺服器或工作站的正確地方。如果伺服器或工作站需要送出數據IPX則會確定好數據封包地址然後再通過網路路由出去。
Sequenced Packet Exchange (SPX) 協定則是用來控制網路處理過程諸如處理丟失封包或其它狀況。
雖然IPX和SPX都是屬Novell的但他們的使用並不限制於Novell網路。作為一個傳輸協定IPX/SPX可以被用在許多不同的硬體上面所以IPX/SPX也是一個可路由協定。
多種傳輸堆疊(Multiple Transport Stack)
到現在有兩件事情是最明顯不過的首先沒有任何一個協定說得上是最好的其次您或者很想將上面所說的四個協定全跑上而好消息是您可以這樣做
現行網路模式是可以支持多傳輸協定的我們稱之為協定堆疊(protocol stack)。比如您可以在client機器上面安裝多個協定而server機器卻只裝一個協定。如果您的client同時連接好幾個server這完全是可能的IPX可以和Novell server溝通DLC可以讓工作站和mainframe gateway對講和TCP/IP可以使用Internet mail路由等等。
但要令到以上這些協定同時工作我們還需要用一個方法將網路卡和協定堆疊連接在一起也就是將網路傳輸層和網路卡驅動程式捆綁(bind)在一起即在NIC driver和transport stack之間建立一個軟體連接這樣在它們之間就需要一個很重要的標準界面了。
通常有兩個競爭者在爭拼這一戰場Novell的ODI和Mircosoft的NDIS。下面我們就探討一下網路捆綁界面和應用程式界面是如何工作的。
網路捆綁界面 (NBI)
由於網路卡驅動程式的不足您還必需額外的軟體來令到通訊協定工作因為NIC driver在設計上只會和一個協定對講IPX/SPX或NetBEUI或TCP/IP。這時 Network Binding Interface (NBI)就派得上用場了NBI 可以提供一個共同的前端接面給設備驅動程式Open Datalink Interface (ODI) 和 Network Driver Interface Specification (NDIS)都可以做到這點。這樣NIC driver就無需再直接和什麼IPXTCP/IP或NetBEUI之類的協定打交到了它只需要一個ODI 或 NDIS 界面就可以了它們可以將這些協定“翻譯”給NIC 聽。
我們可以從下圖看看client和server的傳輸過程中網路軟體中各組件之間的關
網路應用程式界面 (API)
正如您在上面所讀到的大多數應用程式其實都不為意到網路的存在。不過有些程式如果e-mail或群組程式是必須認知到網路更可以說它們是應網路而生的。它們要能夠“插入”到網路中並和其它在網路機器上面跑的程式溝通。程式設計者建立的網路應用程式都要適應於網路給應用程式的一套指令這些指令就是所謂的 API 了。
如果您懂得開汽車的話您一定知道當初學開車的時候是先學如果踏油門如何踩煞車如何轉向等基本動作。我們可以將這些動作看成是一些“原始命令”通過這些命令我們就可以做出將汽車倒出車庫然後開到目的地雖然學車的時候是沒有諸如“倒出車庫”的動作。那麼我們就可以將API當成是那些學車的“基本動作”的操作界面。
在那些網路服務中比如redirector可以居於各種不同的傳輸協定之上如果沒有API您的網路軟體程式就要開發一個redirector程式來接通IPX/SPX又要另外一個redirector程式接通TCP/IP了。其實來來去去都是同一個redirector只是和不同的協定連接而已而API則提供了一個共同的界面給所有網路服務使用。這樣我們就算開 BMW 或 Benz 都知道如何操作了但您未必會開艇哦因為汽車和艇 API 是不同的。當然如果有台汽車的油門是在左邊煞車在右邊離合器卻在中間不用方向盤而是用搖竿我們也可以說這台車的 API 是不同的。
剛才說的redirector 並不是寫來供通訊協定使用而是給一個API (在我們的例子中是NetBIOS)使用NetBIOSI可以居於IPX/SPXNetBEUI和TCP/IP 這些協定之上。這樣有個好處是您可以改變您的通訊協定而無需重寫您的網路服務因為您的網路服務是針對API來寫的。API會接管您的網路請求然後運用正確的通訊協定進行工作。
您或許聽過 socket 這個詞它其實就是API啦。在網路世界中有三種API您或許會接觸到的
Novell Sockets
NetBIOS
TCP/IP Sockets (用來和Internet上面的其它網路溝通)
OSI 模式
有好幾個主要電腦廠家如IBMDECBurroughs等都有設計它們各自的網路結構和通訊協定如果採用這些設計的機器在其各自的網路上面運作良好但卻不能在不同廠家的機器之間進行溝通。為了解決這個問題International Standardization Organisation (ISO) 於1978年開始開發一套標準架構終於成功推出 Reference Model for Open System Interconnection (OSI) 作為其標準它提供了一個很有用的模式去解釋各個不同層面的網路協定。
OSI 模式共有七個層面且它們可以被劃分為兩組
網路群組由實體層資料連接層和網路層組成。
使用者群組由傳輸層會談層表現層和應用層組成。
您也可以從下圖看到些協定層的排列
應用層 (Application)
表現層 (Presentation)
會談層 (Session)
傳輸層 (Transport)
網路層 (Network)
資料連接層 (Data Link)
實體層 (Physical)
前面我們集中討論的就是其中的低層協定也就是網路協定這些功能是保障數據在網路中能夠迅速且準確的轉送。
實體層
在這層裡面您必須作出一些機械和電子方面的決定也就是要定義出在終端和網絡之間要使用的設備。同時採用何種線也要在這裡決定出來。
資料連接層
在這層指定了要採用的信息單元(message unit)是什麼(通常在LAN上面的信息單元被稱為packet或frame)以及它們的格式和如何通過網絡。每一個packet都會被賦予一個地址碼和偵錯監測值(checksum)。有一個Binary synchronous communications協定會判定出一個封包如果在丟失的情況下要等待多久會被重新發送這個協定也是在這層裡面定義。
總體來說這層的工作就是保一個無錯誤的物理上的數據傳輸。
網路層
這層就好比是一個中間人界乎於網絡功能和使用者功能之間。它會定義出封包在網路中移動的路由和其處理過程這層還決定了網路是如何進行管理功能的比如發送狀態信息給接點和規封包的流動等。
一個有趣的事情是網路層還能將底層協定(網路功能)對上層協定(使用者功能)躲起來。這樣在網路的使用者就可以使用不同種類的硬體了。這是非常好的事情假如您用來建網的材料都不盡相同的話。
在底下的三層之上還有四層是屬使用者功能圍的不過它們也常常會被整合在一起。您要記住的一點是無論程式設計者如何定義這些協定(例如把它們分為兩層或四層)這四層在實際上都會被執行的。
傳輸層
在這層將會設定節點地址的傳達還有錯誤檢測和修正的方法。
會談層
這層定義了如何連接和掛斷連接和在網路上面的數據如何交換。
表現層
在這層定義了數據的語法(syntax)變更和格式。當應用程式的語法和格式都不同的時候這層還將定義了如何翻譯這些不同。
應用層
這是最後一層了它定義了應用程式是如何進入OSI模式進行傳送。它自己並不屬應用程式但它支持使用者的應用程式如檔案傳送密碼驗和網路工具等。
以上所列舉的協定層並非是他們的詳細定義只是一個框架而已。您可以把OSI的協定模式當成是人體的骨架當您套上這個框架之後您就差不多可以描繪出大致形狀了雖然外表會有所不同但骨子裡還是一樣的。
這裡還有一個tips如果您忘記了這些協定層的排列順序您可以參照這句話Please Do Not Take Sales Person's Advice。
(http://www.fanqiang.com)
進入【UNIX論壇】
|
|
| 相關文章 |
網路概論---10.電信 (Telecommunication) (2001-06-03 22:08:00) 網路概論---9.超越LAN之外 --- Internetworking (2001-06-03 21:04:00) 網路概論---8.網路作業系統 (2001-06-03 20:10:00) 網路概論---7.通訊協定 (2001-06-03 19:00:00) 網路概論---6.網路管理模式 (2001-06-03 18:55:37) 網路概論---5.網路架構 (2001-06-03 17:04:00) 網路概論---4.連線材料 (2001-06-03 16:10:00) 網路概論---3.一些網路名詞 (2001-06-03 15:00:00) 網路概論---2.網路能做些什麼 (2001-06-03 14:08:00) 網路概論---1.何為網路? (2001-06-03 13:04:00)
|
|
|
|
 |
★ 樊強制作 歡迎分享 ★ |