何謂通訊協定@ 露莉的資訊技術交流日誌 - 隨意窩

文章推薦指數: 80 %
投票人數:10人

TCP還會加上標籤說明數據的種類及其長度。

再下來﹐IP將封包轉換成標準的編碼格式並將之傳送 ... 露莉的資訊技術交流日誌為資訊類相關技術文件收集日誌相簿影音好友名片 關於我加入好友我的相簿我的影音 全部展開|全部收合 全部展開|全部收合 wapiko's新文章免費線上掃毒的資源如何讓無線基地台(AP)自動連線ADSL何謂通訊協定常見光碟術語大全光碟燒錄知識上網不用防火牆隨身碟自動撥放功能失效處理 wapiko's新回應沒有新回應! 關鍵字 露莉的資訊技術交流日誌 我的相簿 200708221951何謂通訊協定?網際網路相關由於網路的迅猛發展﹐出現了許多供網路使用的軟體和硬體﹐為了讓它們都能夠有效的溝通﹐我們需要建立一些規則。

在這裡面會向大家介紹目前比較通用的網路通訊協定﹐和模擬數據是如何的從一個節點傳送到另一個節點﹐從功能上面看看通訊協定的定義。

  何謂通訊協定﹖  一個比較好理解的講法是﹕通訊協定就是一些標準和規則。

例如﹐電話響起來的時候﹐為什麼接電話的人先說“喂~”﹐而不是打電話的人先介紹自己呢﹖我們可以說習慣上如此﹐那麼這個習慣行為就是回答電話的通訊協定了。

當然﹐您和您親愛的或許不是這樣接電話的﹐那麼您們使用的就是另一套協定了。

如果節點A要將一個packet送給節點B﹐它們就必須使用相同的通訊協定。

  LAN的工作就是幫助應用程式利用網路獲得﹑管理﹑和安排數據。

每一個節點都通過一張網路卡(NIC,NetworkInterfaceCard)連接到網路﹐再由此和其它的節點溝通。

在每一個獨立的工作站上面﹐已經安裝了一些應用程式﹐如Word﹑Excel等。

這些程式如果想使用網路上面的資源﹐比如在伺服器上面的數據﹑網路印表機﹑電子郵箱等等﹐會使用網路軟體(networksoftware)去和NIC溝通﹐然後NIC再和網路上的其它節點溝通。

所有這些信息都要經過轉換﹐就必須要使用通訊協定來確保所有這些參與者﹐能夠彼此理解對方和進行有效的溝通。

  正如您所見到的﹐在節點與節點之間﹐最先的交流是在NIC的層次上。

當數據從一個節點通過NIC傳送到另一個節點之後﹐數據再從NIC傳送到網路軟體。

而這個網路軟體就是我們所說的傳輸通訊協定(Transportprotocol)了﹐在雙方的機器上都會有這些transportprotocol。

對於這個網路軟體﹐我們可以從好些不同的角度去理解﹐不過我們可以簡單的從三個層次去看﹕ 第一﹐也是最容易的理解的﹐就是NIC的驅動程式。

  它負責處理網路卡和傳輸協定之間的溝通。

網路卡的廠家都會提供一支驅動程式讓您使用一些特定的協定﹐您可以使用同一張卡來供不同的作業系統使用。

只要這張網卡在“物理”上是兼容的﹐那你就可以在作業系統上面使用了﹐當然﹐您不能將Ethernet網路卡當TokenRing來使用啦。

也就是說﹐您大可不必只依賴一個牌子的廠家。

  我們也知道要讓網路卡工作﹐除了要使用正確的驅動程式之外﹐您還得要確定IRQ和IO要正確。

另外﹐在網路卡上面﹐還有一個由12個十六進位數字組成的48bit的物理地址(PhysicalAddress)﹐也叫MAC(MediaAccessControl)Address或NodeID﹐等名稱﹐相信我們前面也聽過數次了。

這個地址其實分為兩個部份﹐前面六個數字為ManufactureID﹐也就是廠家ID﹔而後面的六個才是CardID。

如果我們見到一張卡的MAC地址是﹕02608C67CD54﹐那麼我們可以知道這張卡是3Com的﹐因為02608C就是3Com的ID。

  然後﹐基於這個物理地址﹐我們就可以把邏輯地址設定於其上了。

物理地址我們是無法更改的﹐而且您也很難找到兩張相同物理地址的網路卡﹔但邏輯地址則是由網路管理者設定。

就好比您不能將公司門牌給改了﹐但您喜歡給您的公司起什麼名字都可以﹐只要不會和其它公司搞混了就行。

  如果使用不同的傳輸協定﹐邏輯地址的格式也不相同(後面我們會就會講到這問題了)。

但無論是物理地址還是邏輯地址﹐要在網路上面溝通的話﹐就必須不同﹐否則就是所謂的地址衝突啦。

 下面我們以IPX為例子認識一下邏輯地址﹕ 內部網路地址(InternalNetworkAddress)。

 簡單地說﹐internaladdress是用來識別每一台機器是“誰”。

很重要一點是﹐這個內部IPX號碼在同一個網路中﹐對每一台機器來說必須是唯一的。

例如NovellNetWare使用內部IPX號碼來識別網路中的伺服器﹐當您安裝NetWareServer的時候﹐您會被問及接受或更改一個隨機產生的內部IPX號碼﹐然後這個號碼就成了該server的ID了。

當您從工作站中輸入slist命令﹐您就可以看到每一台server的ID都被列出來了。

 外部網路地址(ExternalNetworkAddress)。

 這是用來識別一個網路或一個在網路中的網段(segment)的。

如果在同一個網路上面同時有兩台server出現﹐那麼它們就必須使用相同的externaladdress了。

這個externaladdress好比是用來識別所有的server在“哪裡”的。

在NovellNetware裡面﹐只有Server才需要設定externaladdress﹐工作站使用的是它登錄所在的server的externaladdress。

 一個完整的IPX地址會是這個樣子的﹕1C9FDB42:2E701AID﹐在“﹕”前面的部份為externaladdress﹐而後一部份則為internal。

不過這樣設定也有一個潛在的危險﹐如果您在安裝Novellserver的時候一不留神﹐接受了程式自選的ExternalAddress﹐那樣就很可能不能和其它server溝通了﹐而且在接下來的安裝中﹐您會被諸如wrongrouteraddress等錯誤信息煩死﹗程式通常也可以提示您正確的號碼﹐但如果您有兩張網路卡在上面﹐您就要自己設定了。

如果您的號碼輸入錯誤﹐您或許不可能修改系統的AUTOEXEC.NCF檔案﹐而external和internal地址都包括在這個檔案裡面﹐所以務必小心﹗  第二。

在網路處理程式的另一端﹐有一個軟體叫重導向(Redirector)。

  我們知道在單機作業模式下﹐當程式呼叫檔案IO的時候﹐會由作業系統接管這個請求﹐然後再傳給BIOS﹐再到硬體那裡。

如果當程式呼叫的檔案IO為網路地址的時候﹐那麼redirector就會接管這個請求﹐而重新導向到網路上面去﹐把請求交給對方機器。

  例如﹐當您使用Word的之後﹐要開啟一個在網路磁碟上面的檔案﹐將會如何呢﹖從Word的角度去看﹐它根本不知道有網路這回事﹐它只知道有一個和多個像A﹕﹑B﹕﹑C﹕這樣的磁碟。

就像您吃麥當勞的時候﹐您不用知道漢堡包是怎樣製作出來的﹐您只需知道魚柳包﹑雞柳包和拿到什麼樣的Kitty貓就是了。

Word在設計上並不是應用於非本地磁碟上的﹐當要使用存儲在網路上面的數據的時候﹐就必須有一種軟體能夠以磁碟代號的形式告訴Word才行。

所以﹐如果您告訴Word去一個在叫FILESER1的伺服器之DOC目錄下面找檔案﹐那麼redirector軟體就會接管這個請求了。

   然而﹐redirector在這個網路軟體集團裡面﹐也只是一個角色而已﹐要真正能夠拿回資料﹐我們還得需要另一位能士的配合﹕Redirector只是工作在client上面﹐而在server那邊﹐還必須有一個檔案系統(FileSystem)﹐或曰mounter﹐來接應redirector的請求。

  在網路世界中﹐有許多種這樣的filesystem﹐最出名的有Novell的NetWareFileSystem﹑Unix網路的NetworkFileSystem(NFS)﹑以及Microsoft的NewTechnologyFileSystem(NTFS)。

在client端的redirector必須要和在server上面的filesystem兼容(使用相同的協定)﹐否則client也只能望洋興嘆而已。

  第三。

終於來到這裡的重點了﹗出場的就是通訊協定﹐也就是節點和節點之間在網路上搬運數據的方法。

  我之所以將這三個層次的中間部份留在現在才說﹐是因為它是最抽象的。

您或許可以這樣想象﹕NIC驅動程式負責和NIC之間的溝通且儘力討其歡心﹔在client上面的redirector和在server上面的mounter﹐則和程式溝通﹐也極盡體貼之能事﹔然後通訊協定﹐則出盡法寶綴合NIC驅動程式和redirector(或mounter)﹐並建立起網路通訊的交通規則。

  正如前述﹐通訊協定只是一些標準和規則而已﹐而這些規則令到交流的融合性得以標準化。

就如我們不能離開一些經已認同的規矩去使用電話一樣﹐我們的網路也需要一些共同的溝通語言﹐才能讓所有機器相互交流而不至于混亂。

  LAN和LAN之間的通訊也一樣需要一些網路語言﹐所以它們都需要有語言大師的本領才行。

事實上﹐網路語言有多種多樣﹐由于它們在設計之初只為了應付不同的工作﹐而且它們大部份都從來不考慮要和其它網路兼容的。

傳輸協定雖然可說琳琅滿目﹐然而不幸得很﹐各自的廠商都有各自的一套偏好。

但又非常幸運的是﹕大部份新的網路作業程式都支持超過一種協定﹐可以和不同的作業系統溝通﹐比起以前獨沽一味的情形的確容易多了。

  下面我們就淺略的瀏覽一些您將會在網路上運用到的通訊協定。

  NetBEUI  讓我們回到IBM最初進軍個人電腦網路的時代﹐他們當時的確需要一個很基本的網路通訊協定﹐但他們並不打算用此來建構大型網路﹐僅僅供數十台電腦甚至更小的網路而已。

基于這個訴求﹐就誕生了NetworkBasicInput/OutputSystem﹐或稱NetBIOS。

  NetBIOS其實只有18個命令(command)來讓網路的電腦能夠建立﹑維持﹑和使用連接服務。

不過IBM在不久後又再推出了NetBIOS的延伸版本﹕NetBIOSExtenedUserInterface﹐或稱NetBEUI﹐基本上是NetBIOS的改良版本而已。

然而﹐NetBIOS和NetBEUI終究是不同的﹕NetBEUI事實上可以說是一個傳輸協定﹐而NetBIOS充其量只是一組命令來讓系統可以使用網路而已﹐在技術角度來看﹐它是一個ApplicationProgramInterface(API)。

  NetBEUI可以算是您能夠用到的最快通訊協定了。

這個“最快”是指它可以將格式化資料放進封包裡面﹐而接收節點又可以迅速的解讀到內容。

然而﹐NetBEUI卻有一個最致命的弱點﹕它不是可路由(routable)協定﹐也就是不能夠和其它網路的機器對講。

NetBEUI在本地網路裡面是非常優秀的協定﹐但如果您想和設在其它網路的機器溝通﹐NetBEUI就不是您所需要的了。

如果您想實現和其它網路的電腦溝通﹐您極有可能必需通過路由設備或路由軟體來實現﹐但無論用哪一樣﹐很遺憾﹐NetBEUI都做不到。

  不過﹐Microsoft網路則運用一種叫NetBIOSoverIP的技術﹐來連接不同網路的NetBEUI客戶。

但歸根結底﹐用來達成路由的不是NetBIOS而是TCP/IP﹐也就是下一個要介紹的協定。

  TCP/IP  美國國防部開發的TransmissionControlProtocol/InternetProtocol(TCP/IP)﹐當初是用來配合ARPANET(AdvancedResearchProjectsAgencyNet)來處理不同硬體之間的連接問題的﹐比如Sun系統和Mainframe﹑Mainframe和個人電腦之間的連接。

  InternetProtocol(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  DataLinkControl協定﹐為國際標準IEEE802.2協定﹐它的使用主要基於兩個原因﹕  第一﹐許多TokenRing網路是使用DLC來讓PC工作站和mainframe網關(gateway)溝通的。

如果您使用TokenRing而且在CONFIG.SYS裡面又有三個裝置驅動程式是以DXM開頭的﹐那您就是使用DLC驅動程式了。

  第二﹐如果您有一些網路印表機本身直接通過JetDirect網卡連上網路的﹐那麼您或許需要DLC來控制印表機了。

  IPX/SPX  InternetworkPacketExchange(IPX)是一個Novell協定﹐可以在網路設備之間建立﹑維持和終止通訊連接﹐他既負責數據的傳出﹐也負責傳入。

當數據抵達的時候﹐IPX會讀取數據的地址﹐和將之搬運到網路伺服器或工作站的正確地方。

如果伺服器或工作站需要送出數據﹐IPX則會確定好數據封包地址﹐然後再通過網路路由出去。

  SequencedPacketExchange(SPX)協定則是用來控制網路處理過程﹐諸如處理丟失封包或其它狀況。

  雖然IPX和SPX都是屬于Novell的﹐但他們的使用並不限制於Novell網路。

作為一個傳輸協定﹐IPX/SPX可以被用在許多不同的硬體上面﹐所以IPX/SPX也是一個可路由協定。

  多種傳輸堆疊(MultipleTransportStack)  到現在﹐有兩件事情是最明顯不過的﹕首先﹐沒有任何一個協定說得上是最好的﹔其次﹐您或者很想將上面所說的四個協定全跑上﹐而好消息是﹕您可以這樣做﹗  現行網路模式是可以支持多傳輸協定的﹐我們稱之為協定堆疊(protocolstack)。

比如﹐您可以在client機器上面安裝多個協定﹐而server機器卻只裝一個協定。

如果您的client同時連接好幾個server﹐這完全是可能的﹕IPX可以和Novellserver溝通﹑DLC可以讓工作站和mainframegateway對講﹑和TCP/IP可以使用Internetmail路由﹑等等。

  但要令到以上這些協定同時工作﹐我們還需要用一個方法將網路卡和協定堆疊連接在一起﹐也就是將網路傳輸層和網路卡驅動程式捆綁(bind)在一起﹐即在NICdriver和transportstack之間建立一個軟體連接﹐這樣在它們之間就需要一個很重要的標準界面了。

  通常有兩個競爭者在爭拼這一戰場﹕Novell的ODI和Mircosoft的NDIS。

下面我們就探討一下網路捆綁界面和應用程式界面是如何工作的。

  網路捆綁界面(NBI)  由於網路卡驅動程式的不足﹐您還必需額外的軟體來令到通訊協定工作﹐因為NICdriver在設計上只會和一個協定對講﹕IPX/SPX或NetBEUI或TCP/IP。

這時﹐NetworkBindingInterface(NBI)就派得上用場了﹐NBI可以提供一個共同的前端接面給設備驅動程式﹐OpenDatalinkInterface(ODI)和NetworkDriverInterfaceSpecification(NDIS)都可以做到這點。

這樣﹐NICdriver就無需再直接和什麼IPX﹑TCP/IP或NetBEUI之類的協定打交到了﹐它只需要一個ODI或NDIS界面就可以了﹐它們可以將這些協定“翻譯”給NIC聽。

   網路應用程式界面(API) 正如您在上面所讀到的﹐大多數應用程式其實都不為意到網路的存在。

不過﹐有些程式﹐如果e-mail或群組程式﹐是必須認知到網路﹐更可以說﹐它們是應網路而生的。

它們要能夠“插入”到網路中﹐並和其它在網路機器上面跑的程式溝通。

程式設計者建立的網路應用程式﹐都要適應於網路給應用程式的一套指令﹐這些指令就是所謂的API了。

  如果您懂得開汽車的話﹐您一定知道當初學開車的時候是先學如果踏油門﹑如何踩煞車﹑如何轉向等基本動作。

我們可以將這些動作看成是一些“原始命令”﹐通過這些命令我們就可以做出將汽車倒出車庫然後開到目的地﹐雖然學車的時候是沒有諸如“倒出車庫”的動作。

那麼我們就可以將API當成是那些學車的“基本動作”的操作界面。

  在那些網路服務中﹐比如redirector﹐可以居於各種不同的傳輸協定之上﹐如果沒有API﹐您的網路軟體程式就要開發一個redirector程式來接通IPX/SPX﹐又要另外一個redirector程式接通TCP/IP了。

其實來來去去都是同一個redirector﹐只是和不同的協定連接而已﹐而API則提供了一個共同的界面給所有網路服務使用。

這樣﹐我們就算開BMW或Benz都知道如何操作了﹐但您未必會開游艇哦﹐因為汽車和游艇API是不同的。

當然﹐如果有台汽車的油門是在左邊﹑煞車在右邊﹑離合器卻在中間﹑不用方向盤而是用搖竿﹗我們也可以說這台車的API是不同的。

  剛才說的redirector並不是寫來供通訊協定使用﹐而是給一個API(在我們的例子中是NetBIOS)使用﹕NetBIOSI可以居於IPX/SPX﹑NetBEUI﹑和TCP/IP這些協定之上。

這樣有個好處是﹐您可以改變您的通訊協定﹐而無需重寫您的網路服務﹐因為您的網路服務是針對API來寫的。

API會接管您的網路請求﹐然後運用正確的通訊協定進行工作。

  您或許聽過socket這個詞﹐它其實就是API啦。

在網路世界中﹐有三種API您或許會接觸到的﹕ NovellSockets NetBIOS TCP/IPSockets(用來和Internet上面的其它網路溝通) OSI模式  有好幾個主要電腦廠家﹐如IBM﹑DEC﹑Burroughs等﹐都有設計它們各自的網路結構和通訊協定﹐如果採用這些設計的機器﹐在其各自的網路上面運作良好﹐但卻不能在不同廠家的機器之間進行溝通。

為了解決這個問題﹐InternationalStandardizationOrganisation(ISO)於1978年開始開發一套標準架構﹐終於成功推出ReferenceModelforOpenSystemInterconnection(OSI)作為其標準﹐它提供了一個很有用的模式去解釋各個不同層面的網路協定。

  OSI模式共有七個層面﹐且它們可以被劃分為兩組﹕ 網路群組﹕由實體層﹑資料連接層﹑和網路層組成。

 使用者群組﹕由傳輸層﹑會談層﹑表現層﹑和應用層組成。

 您也可以從下圖看到些協定層的排列﹕ 應用層(Application) 表現層(Presentation) 會談層(Session) 傳輸層(Transport) 網路層(Network) 資料連接層(DataLink) 實體層(Physical) 前面我們集中討論的就是其中的低層協定﹐也就是網路協定﹐這些功能是保障數據在網路中能夠迅速且準確的轉送。

  實體層  在這層裡面您必須作出一些機械和電子方面的決定﹐也就是要定義出在終端和網絡之間要使用的設備。

同時﹐採用何種佈線也要在這裡決定出來。

  資料連接層  在這層指定了要採用的信息單元(messageunit)是什麼﹐(通常在LAN上面的信息單元被稱為packet或frame)﹐以及它們的格式﹑和如何通過網絡。

每一個packet都會被賦予一個地址碼和偵錯監測值(checksum)。

有一個Binarysynchronouscommunications協定﹐會判定出一個封包如果在丟失的情況下﹐要等待多久會被重新發送﹐這個協定也是在這層裡面定義。

  總體來說﹐這層的工作就是保證一個無錯誤的物理上的數據傳輸。

  網路層  這層就好比是一個中間人界乎於網絡功能和使用者功能之間。

它會定義出封包在網路中移動的路由和其處理過程﹐這層還決定了網路是如何進行管理功能的﹐比如﹐發送狀態信息給接點和規範封包的流動等。

  一個有趣的事情是﹐網路層還能將底層協定(網路功能)對上層協定(使用者功能)躲起來。

這樣﹐在網路的使用者就可以使用不同種類的硬體了。

這是非常好的事情﹐假如您用來建網的材料都不盡相同的話。

  在底下的三層之上﹐還有四層是屬于使用者功能範圍的﹐不過它們也常常會被整合在一起。

您要記住的一點是﹕無論程式設計者如何定義這些協定﹐(例如﹐把它們分為兩層或四層)﹐這四層在實際上都會被執行的。

  傳輸層  在這層﹐將會設定節點地址的傳達﹐還有錯誤檢測和修正的方法。

  會談層  這層定義了如何連接和掛斷連接﹐和在網路上面的數據如何交換。

  表現層  在這層﹐定義了數據的語法(syntax)﹑變更﹑和格式。

當應用程式的語法和格式都不同的時候﹐這層還將定義了如何翻譯這些不同。

  應用層  這是最後一層了﹐它定義了應用程式是如何進入OSI模式進行傳送。

它自己並不屬于應用程式﹐但它支持使用者的應用程式﹐如﹕檔案傳送﹑密碼驗證﹑和網路工具等。

  以上所列舉的協定層並非是他們的詳細定義﹐只是一個框架而已。

您可以把OSI的協定模式當成是人體的骨架﹐當您套上這個框架之後﹐您就差不多可以描繪出大致形狀了﹐雖然外表會有所不同﹐但骨子裡還是一樣的。

  這裡還有一個tips﹕如果您忘記了這些協定層的排列順序﹐您可以參照這句話﹕PleaseDoNotTakeSalesPerson'sAdvice。

  補充說明:    所謂的協定(protocol) ﹐就是一套大家所默認且相互遵守的規則﹐通訊協定是雙方為了確保通訊內容的正確和完整所使用的規則。

  無線電便是一個例子﹐因為同一時間只能一方說話﹐說完話之後必需以"over"做為結束的記號並等待對方回應﹐對方也需聽到"over"後才可開始對話。

這種規則便形成了一個簡單的通訊協定﹐若缺乏通訊協定﹐在無線電通話這例子當中﹐會產生兩個人同時講話因而無法聽到對方所送過來的完整訊息。

  電腦和程式都是死的﹐不會人類因為發現問題而自動配合﹐此設計一套能有效達到資料流通功能的規則十分重要﹐通訊協定貴在它制定了通訊雙方所遵守的規則﹐以達到在既定環境下有效率得交換資料的目地。

  至於常見的例子如IP﹐TCP﹐UDP﹐ICMP﹐HTTP等﹐在上面已有不少資料恕不重覆﹐只是想強調通訊協定這個名詞的含意。

露莉/Xuite日誌/回應(0)/引用(1)/好文轉寄沒有上一則|日誌首頁|沒有下一則回應



請為這篇文章評分?