專利名稱::協(xié)議鏈路層的制作方法協(xié)議鏈路層相關(guān)申請(qǐng)的交叉引用本申請(qǐng)要求于2006年2月1日提交的題為"PROTOCOLLINKLAYER"的美國(guó)臨時(shí)專利申請(qǐng)序號(hào)60/763,959的4又益,并且涉及于2006年2月1日提交的題為"PROTOCOLCIRCUITLAYER"的美國(guó)臨時(shí)專利申請(qǐng)序號(hào)60/763,977、以及于2006年2月1日提交的題為"CONGESTIONMANAGEMENTANDLATENCYPREDICTIONINCSMAMEDIA"的美國(guó)臨時(shí)專利申請(qǐng)序號(hào)60/764,013。背景計(jì)算機(jī)組成網(wǎng)絡(luò)來(lái)在它們之間交換數(shù)據(jù)已經(jīng)長(zhǎng)達(dá)數(shù)十年之久。一個(gè)重要的網(wǎng)絡(luò)-因特網(wǎng)包括經(jīng)通信信道互連的大量計(jì)算機(jī)和計(jì)算機(jī)網(wǎng)絡(luò)。出于各種原因而使用因特網(wǎng),包括電子商務(wù)、交換諸如電子郵件之類的信息、獲取信息和進(jìn)行研究等等。已經(jīng)建立了用于通過(guò)因特網(wǎng)交換信息的許多標(biāo)準(zhǔn),例如電子郵件、G叩her(基于菜單驅(qū)動(dòng)的因特網(wǎng)信息查詢工具)和萬(wàn)維網(wǎng)(WorldWideWeb"WWW")。WWW服務(wù)允許服務(wù)器計(jì)算機(jī)系統(tǒng)(即web(網(wǎng)絡(luò))服務(wù)器或網(wǎng)站)向遠(yuǎn)程客戶端計(jì)算機(jī)系統(tǒng)發(fā)送圖形網(wǎng)頁(yè)(webpage)信息。遠(yuǎn)程客戶端計(jì)算機(jī)系統(tǒng)然后能夠顯示網(wǎng)頁(yè)。WWW的每個(gè)資源(例如計(jì)算機(jī)或網(wǎng)頁(yè))能夠通過(guò)統(tǒng)一資源定位器("URL")來(lái)唯一地標(biāo)識(shí)。為了查看特定網(wǎng)頁(yè),遠(yuǎn)程客戶端計(jì)算機(jī)系統(tǒng)在請(qǐng)求(例如超文件傳輸協(xié)議("HTTP")請(qǐng)求)中指定該網(wǎng)頁(yè)的URL。請(qǐng)求被轉(zhuǎn)發(fā)到支持該網(wǎng)頁(yè)的web服務(wù)器。當(dāng)該web服務(wù)器接收到該請(qǐng)求時(shí),它將所請(qǐng)求的網(wǎng)頁(yè)發(fā)送給客戶端計(jì)算機(jī)系統(tǒng)。當(dāng)客戶端計(jì)算機(jī)系統(tǒng)接收到該網(wǎng)頁(yè)時(shí),它通常使用瀏覽器來(lái)顯示網(wǎng)頁(yè)。瀏覽器通常是用于請(qǐng)求和顯示網(wǎng)頁(yè)的專用應(yīng)用程序。目前通常使用超文本標(biāo)記語(yǔ)言("HTML")來(lái)定義網(wǎng)頁(yè)。HTML提供標(biāo)準(zhǔn)的標(biāo)簽集,所述標(biāo)簽集定義網(wǎng)頁(yè)是如何被顯示的。當(dāng)用戶請(qǐng)求瀏覽器顯示網(wǎng)頁(yè)時(shí),瀏覽器發(fā)送請(qǐng)求給服務(wù)器計(jì)算機(jī)系統(tǒng)來(lái)向客戶端計(jì)算機(jī)系統(tǒng)傳送定義網(wǎng)頁(yè)的HTML文件。當(dāng)所請(qǐng)求的HTML文件凈皮客戶端計(jì)算機(jī)系統(tǒng)收到時(shí),瀏覽器顯示由HTML文件所定義的網(wǎng)頁(yè)。HTML文件包含用于控制文本、圖形、控件和其他特征的顯示的各種標(biāo)簽。HTML文件可以包含在該服務(wù)器計(jì)算機(jī)系統(tǒng)或者其他服務(wù)器計(jì)算機(jī)系統(tǒng)上可用的其他網(wǎng)頁(yè)的URL。還存在著新的協(xié)議,例如可擴(kuò)展標(biāo)記語(yǔ)言("XML")和無(wú)線接入?yún)f(xié)議("WAP")。XML比HTML提供了更大的靈活性。WAP尤其提供了在手持、無(wú)線設(shè)備(例如蜂窩電話和便攜式計(jì)算機(jī)(例如PDA))上查看網(wǎng)頁(yè)的能力。所有這些協(xié)議提供了經(jīng)由各種數(shù)據(jù)處理設(shè)備來(lái)為用戶提供信息的更為容易的方法。用于在數(shù)據(jù)處理設(shè)備之間交換數(shù)據(jù)的許多其他協(xié)議和手段繼續(xù)發(fā)展,以更進(jìn)一步幫助信息的交換。附圖簡(jiǎn)述圖1是圖示出一些實(shí)施例中的鏈路層與CoCo協(xié)議組的其他層之間的關(guān)系的框圖。圖2是圖示出各實(shí)施例中的CoCo協(xié)議組中的各層的關(guān)系的框圖。圖3是圖示出一些實(shí)施例中的鏈路層協(xié)議的詳細(xì)視圖的框圖。圖4是圖示出一些實(shí)施例中的CoCo協(xié)議首部的框圖。圖5是圖示出一些實(shí)施例中的鏈路設(shè)置(linksetup)子層所采用的分組格式的框圖。圖6是圖示出一些實(shí)施例中的鏈路設(shè)置分組的框圖。圖7是圖示出一些實(shí)施例中的鏈路設(shè)置分組的確認(rèn)部分的框圖。圖8是圖示出一些實(shí)施例中的鏈路設(shè)置分組的編碼部分的框圖。圖9是圖示出一些實(shí)施例中的鏈路設(shè)置分組的公鑰(publickey)部分的框圖。圖IO是圖示出在一些實(shí)施例中如何確定往返時(shí)間(roundtriptime)和接收質(zhì)量的流程圖。圖ll是示出各實(shí)施例中的鏈路狀態(tài)的狀態(tài)圖。圖12是圖示出一些實(shí)施例中的鏈路數(shù)據(jù)分組的框圖。圖13是圖示出一些實(shí)施例中的多播(multicasting)的框圖。圖14是圖示出一些實(shí)施例中的鏈路數(shù)據(jù)分組的目的地集合部分(setsection)的框圖。圖15是圖示出在一些實(shí)施例中使用的用于折疊(fold)哈希值(hashvalue)的技術(shù)的流程圖。圖16是圖示出一些實(shí)施例中的數(shù)據(jù)鏈路分組的簽名(signature)字段部分的框圖。圖17是圖示出一些實(shí)施例中的數(shù)據(jù)鏈路分組的分組信息部分的框圖。圖18是圖示出一些實(shí)施例中的鏈路數(shù)據(jù)分組的分段部分的框圖。圖19是圖示出一些實(shí)施例中的鏈路數(shù)據(jù)分組的確認(rèn)部分中的字段的框圖。鏈路概念鏈路是表示兩個(gè)CoCo節(jié)點(diǎn)之間的直接連接的軟件抽象。鏈路層的主要任務(wù)是檢測(cè)相鄰CoCo設(shè)備的存在并且建立到它們的鏈路。鏈路層協(xié)議功能的描述鏈路建立采用傳統(tǒng)三向握手協(xié)議(包含"問(wèn)候(hello)","問(wèn)候-確認(rèn)(hello-ack)"和"最終確認(rèn)(final陽(yáng)ack)"的分組,見(jiàn)[ISI])的變體。鏈路建立包括協(xié)商編碼方法和迪菲-赫爾曼(Diffie-Hellman)密鑰交換,以使得可以對(duì)通過(guò)鏈路發(fā)送的通信以密碼形式(cryptographically)求校驗(yàn)和[S]。這確保了標(biāo)識(shí)的一致性;即,可以向節(jié)點(diǎn)保證通過(guò)鏈路接收到的所有分組都來(lái)自于其與之建立該鏈路的節(jié)點(diǎn)。一旦建立了鏈路,鏈路層就在網(wǎng)絡(luò)接口層和更高的協(xié)議層(路由和電路層)之間傳遞(relay)分組。-監(jiān)視服務(wù)質(zhì)量(QoS)統(tǒng)計(jì),并能夠?qū)⑦@些報(bào)告給更高的協(xié)議層。通過(guò)抑制單個(gè)網(wǎng)絡(luò)接口上的冗余分組傳輸而支持多播。.在分組大小超過(guò)網(wǎng)絡(luò)接口的最大傳輸單元(MTU)時(shí)執(zhí)行分段。.關(guān)閉不活動(dòng)鏈路以便為新的鏈路請(qǐng)求釋放系統(tǒng)資源。其他協(xié)議層上下文中的鏈路層圖1圖示出鏈路層與CoCo協(xié)議組的其他層之間的關(guān)系。圖1中以較暗的背景和斜體字示出了CoCo協(xié)議組層。在[BLMS][BMV][BELM]中可以分別找到有關(guān)路由層、電路層和命名系統(tǒng)層的更多細(xì)節(jié)。網(wǎng)絡(luò)接口層是操作系統(tǒng)的用于諸如以太網(wǎng)卡的物理網(wǎng)絡(luò)設(shè)備的設(shè)備驅(qū)動(dòng)。鏈路層的組件圖2是圖示出CoCo協(xié)議組中的各層的關(guān)系的框圖。鏈路層連接至網(wǎng)絡(luò)接口層并且包括以下組件.協(xié)議抽象層(PAL),其把到達(dá)網(wǎng)絡(luò)接口的進(jìn)入(incoming)數(shù)據(jù)幀轉(zhuǎn)換成由CoCo協(xié)議組所使用的分組對(duì)象。鏈路設(shè)置子層,其建立與CoCo網(wǎng)絡(luò)中的相鄰節(jié)點(diǎn)之間的鏈路。-鏈路數(shù)據(jù)子層,其在所建立的鏈路上傳送數(shù)據(jù)。QoS處理機(jī)(handler),其監(jiān)視鏈路質(zhì)量。圖3給出了鏈路層協(xié)議的更為詳細(xì)的視圖,包括它們的接口。圖3中的每個(gè)箭頭表示函數(shù)調(diào)用,所述函數(shù)調(diào)用是接口的一部分。從層A到層B的箭頭指示從層A調(diào)用層B中的程序或函數(shù)。箭頭尾端的圓圈指示用于向調(diào)用程序(caller)返回值的函數(shù)。鏈路層接口鏈路層接口提供如下函數(shù),路由和電路層使用這些函數(shù)來(lái)確定鏈路的存在和不存在,并通過(guò)鏈路發(fā)送和接收分組LinkUp(link)(連接鏈路(鏈路))鏈路層調(diào)用LinkUp(link)來(lái)向電路和路由層通知鏈路已開啟。LinkDown(link)(斷開鏈路(鏈路))鏈路層調(diào)用LinkDown(link)來(lái)向電路和路由層通知鏈路已關(guān)閉。Receive(packet,link)(接收(分組,鏈路))鏈路層調(diào)用Receive(packet,link)來(lái)向電路和路由層通知分組已經(jīng)通過(guò)鏈路到達(dá)。Send(packet,link)(發(fā)送(分組,鏈路))電路或^各由層調(diào)用Send(packet,link)以通過(guò)鏈路發(fā)送分組。GetQoS(link)電路或路由層調(diào)用GetQoS(link)來(lái)獲得與給定鏈路相關(guān)聯(lián)的QoS度量(metrics)。鏈路層分組類型在PAL對(duì)進(jìn)入的數(shù)據(jù)幀進(jìn)行解析(parse)之后,其丟棄網(wǎng)絡(luò)接口首部;剩下的數(shù)據(jù)是鏈路設(shè)置分組或者鏈路數(shù)據(jù)分組。-鏈路設(shè)置分組鏈路設(shè)置分組包含建立鏈路所必需的信息。它的分組首部是整個(gè)鏈路設(shè)置分組;不存在鏈路設(shè)置分組的單獨(dú)數(shù)據(jù)部分。鏈路設(shè)置分組僅在鏈路層內(nèi)使用。.鏈路數(shù)據(jù)分組除了實(shí)際的用戶數(shù)據(jù)(和與更高的協(xié)議層相關(guān)的任何數(shù)據(jù))之外,鏈路數(shù)據(jù)分組包含額外字段用以處理數(shù)據(jù)分組確認(rèn)、數(shù)據(jù)分組分段和加密(cryptographical)校驗(yàn)和。鏈路數(shù)據(jù)分組被轉(zhuǎn)發(fā)至路由和電路層。協(xié)議抽象層鏈路層的協(xié)議抽象層(PAL)對(duì)到達(dá)網(wǎng)絡(luò)接口(例如以太網(wǎng)或衛(wèi)星接口)的進(jìn)入數(shù)據(jù)幀進(jìn)行解析,使用該數(shù)據(jù)來(lái)創(chuàng)建CoCo首部和地址轉(zhuǎn)換表,并且此后丟棄網(wǎng)絡(luò)接口數(shù)據(jù)幀的首部。在丟棄網(wǎng)絡(luò)接口后,剩下的數(shù)據(jù)是鏈路設(shè)置分組或者鏈路數(shù)據(jù)分組。鏈路層檢查這些分組,并將鏈路設(shè)置分組發(fā)送至鏈路設(shè)置子層,以及將鏈路數(shù)據(jù)分組發(fā)送至鏈路數(shù)據(jù)子層??傊?,PAL:從網(wǎng)絡(luò)設(shè)備或連接獲得數(shù)據(jù)幀。構(gòu)造CoCo首部和地址轉(zhuǎn)換表,其從網(wǎng)絡(luò)接口層(通常是用于諸如以太網(wǎng)卡之類的網(wǎng)絡(luò)設(shè)備的設(shè)備驅(qū)動(dòng))捕獲相關(guān)信息。除去并丟棄網(wǎng)絡(luò)接口層首部。將經(jīng)修改的分組傳至鏈路設(shè)置子層或者鏈路數(shù)據(jù)子層。CoCo首部和地址轉(zhuǎn)換表CoCo首部和地址轉(zhuǎn)換表是對(duì)來(lái)自于網(wǎng)絡(luò)接口層的首部的替代。在從網(wǎng)絡(luò)接口接收到分組后,PAL創(chuàng)建CoCo首部和地址轉(zhuǎn)換表。當(dāng)幀從任何物理網(wǎng)絡(luò)接口到達(dá)時(shí),PAL讀取幀首部以構(gòu)造CoCo首部并將條目(entry)添加到其地址轉(zhuǎn)換表中。地址轉(zhuǎn)換表僅存在于存儲(chǔ)器中,并且僅由PAL使用。PAL從幀首部中提取源地址,并將該源地址與源節(jié)點(diǎn)的通用節(jié)點(diǎn)標(biāo)識(shí)符(UNI)關(guān)聯(lián)起來(lái),在地址轉(zhuǎn)換表中存儲(chǔ)該關(guān)聯(lián)。地址轉(zhuǎn)換表是針對(duì)節(jié)點(diǎn)所使用的每個(gè)類型的物理傳輸而創(chuàng)建的。UNI于是在整個(gè)CoCo協(xié)議中使用;僅當(dāng)數(shù)據(jù)被發(fā)送至網(wǎng)絡(luò)接口層時(shí)才可能需要地址轉(zhuǎn)換表。(參見(jiàn)[BLMS]以獲取關(guān)于UNI的更多信息)CoCo首部的格式是統(tǒng)一的,不管分組到達(dá)哪種接口類型,CoCo首部都是相同的。CoCo首部被存儲(chǔ)在存儲(chǔ)器中,并且對(duì)于更高的協(xié)議層而言是可用的;其結(jié)構(gòu)在圖4中示出,括號(hào)中給出了每個(gè)字段的比特大小。"類型(Type)"字段描述了跟在CoCo首部之后的分組類型-或者是鏈路設(shè)置分組或者是鏈路數(shù)據(jù)分組。"加密(Encrypt)字段"描述了分組是否被加密。因?yàn)橹钡芥溌芬呀?jīng)被建立之后才發(fā)生加密,所以所有的鏈路設(shè)置分組是未加密的;所有的廣播分組也是未加密的,原因在于對(duì)將由多個(gè)節(jié)點(diǎn)解密的消息進(jìn)行加密是有難度的。"分組大小(PacketSize),,字段是跟在CoCo首部之后的整個(gè)分組的以字節(jié)為單位的大小。CoCo節(jié)點(diǎn)還通過(guò)物理網(wǎng)絡(luò)接口發(fā)送CoCo首部,以充當(dāng)對(duì)分組完整性的檢查。在PAL以慣常方式制成CoCo首部之后,對(duì)照通過(guò)導(dǎo)線(wire)發(fā)送的CoCo首部對(duì)結(jié)果進(jìn)行檢查;如果它們不匹配,則丟棄分組。PAL支持的傳輸PAL支持多種網(wǎng)絡(luò)接口格式,包括以太網(wǎng)(IEEE802.3)令牌環(huán)(tokenring)(IEEE802.5)Wi-Fi(IEEE802.il).同步光網(wǎng)絡(luò)(SONET)異步傳輸模式(ATM)衛(wèi)星因?yàn)槠渌麄鬏敿夹g(shù)使用先前所列出的網(wǎng)絡(luò)接口格式,所以鏈路層還支持網(wǎng)際協(xié)議(IP)傳輸控制協(xié)議(TCP)用戶數(shù)據(jù)報(bào)協(xié)議(UDP).全球移動(dòng)通信系統(tǒng)(GSM)和碼分多址(CDMA).蜂窩數(shù)字分組數(shù)據(jù)(CDPD),通用分組無(wú)線服務(wù)(GPRS)和1XRTT由于PAL的模塊化設(shè)計(jì),所以能夠很容易擴(kuò)展PAL以支持其他格式。鏈路設(shè)置子層鏈路設(shè)置子層執(zhí)行以下功能.發(fā)現(xiàn)其他節(jié)點(diǎn)的存在并保持對(duì)其他節(jié)點(diǎn)的知曉(awareness)建立到一定范圍內(nèi)的節(jié)點(diǎn)的鏈路為每個(gè)鏈路建立迪菲-赫爾曼密鑰為每個(gè)鏈路建立編碼方法計(jì)算并驗(yàn)證工作令牌以抵抗拒絕服務(wù)攻擊為每個(gè)鏈路監(jiān)視往返時(shí)間確定何時(shí)鏈路不活動(dòng)并關(guān)閉它們鏈路設(shè)置子層針對(duì)節(jié)點(diǎn)使用重復(fù)(iterative)、兩相過(guò)程以交換信息,/人而完成前述功能。鏈路設(shè)置分組鏈路設(shè)置子層使用單一分組格式,如圖5中所示,其被稱為鏈路設(shè)置分組。鏈路設(shè)置分組為節(jié)點(diǎn)提供這樣的機(jī)制使節(jié)點(diǎn)向其他節(jié)點(diǎn)通告(announce)其存在和標(biāo)識(shí),并使節(jié)點(diǎn)同時(shí)通知其他節(jié)點(diǎn)其已經(jīng)從它們那里聽(tīng)到(hear)這樣的通告。因此,在某些上下文(context)中,鏈路設(shè)置分組充當(dāng)問(wèn)候分組,而在其他上下文中,其充當(dāng)確認(rèn)或者ack(確認(rèn))分組。為了促進(jìn)在網(wǎng)絡(luò)上動(dòng)態(tài)添加和刪除節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)在固定時(shí)間間隔廣播鏈路設(shè)置分組。這也使得鏈路設(shè)置分組在同一分組中既用作問(wèn)候又用作ack成為可能。該固定時(shí)間間隔被稱作問(wèn)候間隔(hellointerval),并且通常是1秒。確認(rèn)被捎帶(piggyback)到外出(outgoing)的問(wèn)候分組上。每個(gè)節(jié)點(diǎn)保存被稱作ack-set(確認(rèn)集)的節(jié)點(diǎn)集,該節(jié)點(diǎn)已經(jīng)在被稱作ack-interval(確認(rèn)間隔)的固定時(shí)間間隔(大約5-10秒)內(nèi)從該節(jié)點(diǎn)集接收到問(wèn)候。ack-interval是鏈路超時(shí)參數(shù),如果節(jié)點(diǎn)A在ack-interval或更長(zhǎng)時(shí)間內(nèi)沒(méi)有從節(jié)點(diǎn)B接收到任何問(wèn)候分組,其將節(jié)點(diǎn)B從其確認(rèn)集中丟棄并且不再在其外出的問(wèn)候消息中對(duì)B進(jìn)行確認(rèn)。為防止來(lái)自于分組洪流(packetfloods)的安全攻擊,每個(gè)節(jié)點(diǎn)計(jì)算工作令牌,所述工作令牌被包括在每個(gè)鏈路設(shè)置分組中。工作令牌對(duì)于一支稱作工作令牌有效時(shí)間(worktokenvalidityintervalWTVI)的一定時(shí)間量而言是有效的,其通常是大于問(wèn)候間隔但是小于ack-interval的時(shí)間長(zhǎng)度。當(dāng)工作令牌到期(expire)(基于WTVI)時(shí),節(jié)點(diǎn)在發(fā)出其下一個(gè)鏈路設(shè)置分組之前應(yīng)該計(jì)算新的工作令牌。鏈路層所使用的第四時(shí)間間隔是迪菲-赫爾曼高速緩存間隔(DHCI)其應(yīng)該大于WTVI,且還應(yīng)該長(zhǎng)于確認(rèn)間隔。DHCI是節(jié)點(diǎn)A保存迪菲-赫爾曼密鑰的高速緩存版本的時(shí)間長(zhǎng)度,其中節(jié)點(diǎn)A使用所述迪菲-赫爾曼密鑰的高速緩存版本與節(jié)點(diǎn)B進(jìn)行通信。因?yàn)橛?jì)算迪菲-赫爾曼密鑰是資源密集的,所以甚至在鏈路已經(jīng)被丟棄之后仍保存密鑰的高速緩存版本是有用的,以防節(jié)點(diǎn)B嘗試重新建立其到節(jié)點(diǎn)A的鏈路。如果節(jié)點(diǎn)A在DHCI內(nèi)沒(méi)有從節(jié)點(diǎn)B接收到鏈路設(shè)置分組,則節(jié)點(diǎn)A將清除(purge)該密鑰的高速緩存拷貝。圖5中示出了由部分隔開的鏈路設(shè)置分組,其中虛線指示能夠被重復(fù)的分組部分,并且括號(hào)中的數(shù)字指示每個(gè)字段的比特大小。鏈路設(shè)置分組包含以下部分鏈路建立字段確認(rèn)和相關(guān)聯(lián)的字段的集合(ack-set)所支持編碼的列表節(jié)點(diǎn)的公鑰。鏈路設(shè)置分組的鏈路建立部分圖6中所示的鏈路設(shè)置分組的初始固定長(zhǎng)度部分包括以下字段工作令牌(WorkToken)(128)用于工作令牌馬全證的隨機(jī)數(shù),如"工作令牌,,部分中所述。這有助于防止拒絕服務(wù)攻擊。工作令牌僅對(duì)于由工作令牌有效間隔所確定的時(shí)間長(zhǎng)度是有效的,其后應(yīng)當(dāng)計(jì)算新的工作令牌。時(shí)間標(biāo)記(TimeStamp)(64)計(jì)算工作令牌的時(shí)刻(使用ustime數(shù)據(jù)格式)。該字段在每個(gè)工作令牌有效間隔更新,而不是在每個(gè)問(wèn)候間隔更新。UNI(64)唯一標(biāo)識(shí)該CoCo節(jié)點(diǎn)的通用節(jié)點(diǎn)標(biāo)識(shí)符(UNI)。其是未分級(jí)(unranked)的UNI,參見(jiàn)[BLMS]以獲得更多信息。HelloNum(問(wèn)候號(hào))(32)隨著由該CoCo節(jié)點(diǎn)發(fā)送的每個(gè)鏈路設(shè)置分組而增加的序號(hào)。鏈路設(shè)置分組在被稱作問(wèn)候間隔的有規(guī)律的間隔被廣播。NumAcks(確認(rèn)數(shù)目)(16)捎帶到該分組上的確認(rèn)的數(shù)目。NumEncodings(編碼數(shù)目)(16)發(fā)送CoCo節(jié)點(diǎn)所支持的編碼的數(shù)目。鏈路設(shè)置分組的確認(rèn)部分圖7是圖示出一些實(shí)施例中的鏈路設(shè)置分組的確認(rèn)部分的框圖。該字段集包含對(duì)從另一CoCo節(jié)點(diǎn)接收到鏈路設(shè)置分組的確認(rèn)。這些確認(rèn)被捎帶到鏈路設(shè)置分組的鏈路建立部分。在單個(gè)鏈路設(shè)置分組中能夠有若干個(gè)確認(rèn),每個(gè)對(duì)從不同CoCo節(jié)點(diǎn)接收到鏈路設(shè)置分組進(jìn)行確認(rèn)。鏈路設(shè)置分組中的確認(rèn)數(shù)目由鏈路建立部分的NumAcks字段給出(參見(jiàn)圖6)。每個(gè)確認(rèn)包括以下字段的集合確認(rèn)的節(jié)點(diǎn)(NodeAsked)(64)正被確認(rèn)的節(jié)點(diǎn)的通用節(jié)點(diǎn)標(biāo)識(shí)符(■)。最后聽(tīng)到的HelloNum(HelloNumLastHeard)(32)乂人正^皮確:〖人的節(jié)點(diǎn)接收到的最后分組的HelloNum。保持時(shí)間(HoldTime)(32)自來(lái)自于正凈皮確認(rèn)的節(jié)點(diǎn)的最后分組到達(dá)之后過(guò)去的時(shí)間;見(jiàn)圖10。Ack簽名(AckSignature)(64)該節(jié)點(diǎn)與正被確認(rèn)的分組的CoCo節(jié)點(diǎn)之間所協(xié)商的迪菲-赫爾曼密鑰的哈希,用于防止確認(rèn)的欺騙(spoofing)。所使用的哈希函數(shù)由該節(jié)點(diǎn)對(duì)來(lái)協(xié)商,這在下文中的"編碼與安全"部分中被解釋。鏈路設(shè)置分組的編碼部分圖8是圖示出鏈路設(shè)置分組的編碼部分的框圖。該部分包含編碼(Encoding)字段序列,對(duì)于源節(jié)點(diǎn)所支持的每對(duì)加密/哈希編碼方法都有一個(gè)。鏈路設(shè)置分組中的編碼字段的數(shù)目由鏈路建立部分的編碼數(shù)目字段給出(參見(jiàn)圖6)。每個(gè)編碼字段包括以下子字段加密(Encryption)(4)用于加密方法的4比特標(biāo)識(shí)符,該方法將與其相關(guān)聯(lián)的"哈希"作為編碼對(duì)被一起使用。當(dāng)前所支持的加密方法是RC4、DES、3DES、Blowfish和AES。哈希(Hash)(4)用于哈希法的4比特標(biāo)識(shí)符,該哈希法將與其相關(guān)聯(lián)的"加密"作為編碼對(duì)被一起使用。當(dāng)前所支持的哈希法是MD5、SHA1和RIPEMD。保留(Reserved)(8)保留以備將來(lái)使用。鏈路設(shè)置分組的/>鑰部分圖9是圖示出鏈路設(shè)置分組的公鑰部分的框圖。公#]大小(PublicKeySize)(16)以字節(jié)為單位的"公鑰,,字段的大小。公鑰(PublicKey)(變量;通常為512)用于迪菲-赫爾曼密鑰交換的公鑰;參見(jiàn)"編碼與安全"部分。確定往返時(shí)間和接收質(zhì)量圖10是圖示出如何確定往返時(shí)間和接收質(zhì)量的流程圖。鏈路設(shè)置子層使得每個(gè)節(jié)點(diǎn)能夠確定.到每個(gè)其他節(jié)點(diǎn)的往返時(shí)間來(lái)自于其他節(jié)點(diǎn)的信號(hào)的質(zhì)量.其他節(jié)點(diǎn)所感知的(perceived)其自身信號(hào)的質(zhì)量。為了使節(jié)點(diǎn)A計(jì)算到節(jié)點(diǎn)B的往返時(shí)間,節(jié)點(diǎn)A記錄其向節(jié)點(diǎn)B發(fā)送設(shè)置分組的時(shí)刻與其從確認(rèn)設(shè)置(檢查HelloNum的值相同)的節(jié)點(diǎn)B接收到鏈路設(shè)置分組的時(shí)刻之間經(jīng)過(guò)的時(shí)間,并且此后減去出現(xiàn)在該確認(rèn)中的保持時(shí)間。除了往返時(shí)間計(jì)算之外,鏈路設(shè)置層能夠根據(jù)其所發(fā)送的稍后被確認(rèn)的鏈路設(shè)置分組的百分比來(lái)確定信號(hào)質(zhì)量。例如,如果節(jié)點(diǎn)B從節(jié)點(diǎn)A接收到標(biāo)以1、2、3、4等的問(wèn)候分組,則它就知道其具有來(lái)自于節(jié)點(diǎn)A的強(qiáng)信號(hào)。另一方面,如果節(jié)點(diǎn)B從節(jié)點(diǎn)A接收到標(biāo)以4、9、15、23的問(wèn)候分組,則它就知道來(lái)自于節(jié)點(diǎn)A的信號(hào)相對(duì)較弱。與之類似,如果節(jié)點(diǎn)A從節(jié)點(diǎn)B接收到確認(rèn)并且A的問(wèn)候分組在數(shù)序中包含空缺,(例如5、11、17、21),則節(jié)點(diǎn)A知道來(lái)自于節(jié)點(diǎn)B的信號(hào)弱,其去往節(jié)點(diǎn)B的信號(hào)弱,或者二者皆弱。編碼與安全鏈路層的編碼與安全取決于節(jié)點(diǎn)之間的迪菲-赫爾曼密鑰交換,以及工作令牌的交換以防止拒絕服務(wù)攻擊。工作令牌流氓(rogue)節(jié)點(diǎn)可以通過(guò)以下手段對(duì)網(wǎng)絡(luò)發(fā)起拒絕服務(wù)攻擊使其范圍內(nèi)的節(jié)點(diǎn)充斥鏈路設(shè)置請(qǐng)求假裝(simulate)存在著大量偽節(jié)點(diǎn)(fakenode)。這些行為構(gòu)成了攻擊,原因在于接收鏈路設(shè)置請(qǐng)求的節(jié)點(diǎn)應(yīng)該執(zhí)行迪菲-赫爾曼密鑰交換計(jì)算,而該計(jì)算是資源密集的(大約需要400MHzXscale處理器工作1毫秒)。在存在大量惡意建立請(qǐng)求的情況下,來(lái)自于合法(legitimate)節(jié)點(diǎn)的鏈路設(shè)置請(qǐng)求可能會(huì)被延遲或者由于超時(shí)被完全拒絕。因此,鏈路設(shè)置協(xié)議使用被稱為工作令牌的機(jī)制來(lái)迫使嘗試建立鏈路的節(jié)點(diǎn)執(zhí)行非平凡(nontrivial)計(jì)算。這使得這樣的拒絕服務(wù)攻擊對(duì)于攻擊者而言成本更高,從而降低了它們的可能性或者完全阻止了它們,這取決于攻擊者的計(jì)算資源。出于這些考慮,在迪菲-赫爾曼計(jì)算之前對(duì)工作令牌進(jìn)行驗(yàn)證。如果工作令牌無(wú)效,則節(jié)點(diǎn)可以不投入時(shí)間去計(jì)算迪菲-赫爾曼密鑰,其中對(duì)迪菲-赫爾曼密鑰的計(jì)算是比工作令牌驗(yàn)證更為昂貴的計(jì)算。在節(jié)點(diǎn)A能夠向節(jié)點(diǎn)B發(fā)送鏈路設(shè)置分組之前,節(jié)點(diǎn)A應(yīng)該計(jì)算有效的工作令牌W,節(jié)點(diǎn)A將有效的工作令牌W置于其鏈路設(shè)置分組的工作令牌字段中(參見(jiàn)圖6)。該時(shí)間標(biāo)記T也被包括在鏈路設(shè)置分組(參見(jiàn)圖6)中。在接收到鏈路設(shè)置分組時(shí),節(jié)點(diǎn)B使用時(shí)間標(biāo)記來(lái)確定該工作令牌是否到期(以及因此是否是無(wú)效的)工作令牌算法在以下的工作令牌算法中,函數(shù)h是由所有CoCo節(jié)點(diǎn)使用的協(xié)議源代碼內(nèi)的全局哈希函數(shù)集。h的輸出在其范圍[O,MAX]上均勻分布。將下列算法的步驟3.b中的值r選擇為相對(duì)于MAX較小。在網(wǎng)絡(luò)提供時(shí)設(shè)定該值r,并且能夠針對(duì)特定配置來(lái)選擇該值r,以調(diào)整該協(xié)議的安全與效率之間的折衷。這是因?yàn)椴襟E3.b在概率上(probabilistically)以MAX/r次預(yù)期重復(fù)而獲得成功,原因是h的輸出在其范圍上均勻分布。下列算法中所使用的符號(hào)(Z,Y)指示Z和Y的二進(jìn)制表示的串并置(stringconcatenation)。工作令牌計(jì)算節(jié)點(diǎn)A應(yīng)當(dāng)確保其發(fā)出的所有鏈路設(shè)置分組都包含有效的工作令牌。如果當(dāng)前時(shí)間與其最近發(fā)送的分組的時(shí)間標(biāo)記T之間的時(shí)間差小于工作令牌有效間隔,則節(jié)點(diǎn)A重新發(fā)送其最近的分組。否則,先前發(fā)送的工作令牌現(xiàn)在無(wú)效并且應(yīng)該通過(guò)執(zhí)行下列步驟來(lái)重新計(jì)算1.節(jié)點(diǎn)A通過(guò)將其鏈路設(shè)置分組的UNI字段(參見(jiàn)圖6)設(shè)為其名稱N來(lái)對(duì)其自身進(jìn)行標(biāo)識(shí)。2.節(jié)點(diǎn)A將其鏈路設(shè)置分組的"時(shí)間標(biāo)記"字段設(shè)置為當(dāng)前時(shí)間T。3.此后,節(jié)點(diǎn)A:a.選擇128比特的隨機(jī)數(shù)X。b.測(cè)試以查看是否c=h(X,T,N,X)<r。(逗號(hào)表示并置運(yùn)算(concatenationoperation)。)c.重復(fù)步驟3a和3b直到其發(fā)現(xiàn)使得結(jié)果所得到的c確實(shí)小于r的X。4.節(jié)點(diǎn)A將其鏈路設(shè)置分組的"工作令牌"字段設(shè)置為工作令牌W,該工作令牌W是用于完成步驟3c的X的成功值。利用現(xiàn)在計(jì)算出的新的有效工作令牌,節(jié)點(diǎn)A發(fā)出鏈路設(shè)置分組,該鏈路設(shè)置分組將W、T和N的值包含在分組的鏈路建立部分的適當(dāng)字段中。l丄l丄l工作令牌驗(yàn)證當(dāng)節(jié)點(diǎn)B從節(jié)點(diǎn)A接收到鏈路設(shè)置分組時(shí),其應(yīng)該在繼續(xù)進(jìn)行其到節(jié)點(diǎn)A的鏈路建立之前驗(yàn)證工作令牌是有效的。因?yàn)轵?yàn)證工作令牌比計(jì)算迪菲-赫爾曼密鑰快得多,開銷降低,原因在于不是所有鏈路設(shè)置分組都會(huì)包含有效的工作令牌并且資源不會(huì)浪費(fèi)在為這些分組計(jì)算迪菲-赫爾曼密鑰上。此外,通過(guò)默默地(silently)忽略所有包含無(wú)效工作令牌的鏈路設(shè)置分組,協(xié)議減少了其所使用的分組的數(shù)目,因而也降低了由該協(xié)議引起的總體業(yè)務(wù)開銷。默默地忽略失敗還降低了對(duì)攻擊的暴露程度,原因在于協(xié)議所產(chǎn)生的活動(dòng)越少,利用其的機(jī)會(huì)就越少。每個(gè)節(jié)點(diǎn)B為每個(gè)節(jié)點(diǎn)A保持對(duì)先前計(jì)算出的迪菲-赫爾曼密鑰的高速緩存,其中該節(jié)點(diǎn)B已經(jīng)從該節(jié)點(diǎn)A接收到有效的鏈路設(shè)置請(qǐng)求。這確保了節(jié)點(diǎn)B可以在丟失了其對(duì)節(jié)點(diǎn)A的確認(rèn)的情況下不需要再次計(jì)算迪菲-赫爾曼密鑰。高速緩存的密鑰還能夠被用于快速重新建立最近丟棄的鏈路。如果節(jié)點(diǎn)B在超過(guò)迪菲-赫爾曼高速緩存間隔的持續(xù)時(shí)間內(nèi)沒(méi)有從節(jié)點(diǎn)A接收到鏈路設(shè)置分組,則節(jié)點(diǎn)B最終清除其為節(jié)點(diǎn)A高速緩存的密鑰。為驗(yàn)證來(lái)自于節(jié)點(diǎn)A的鏈路設(shè)置分組中的工作令牌是有效的,節(jié)點(diǎn)B執(zhí)行以下步驟1.節(jié)點(diǎn)B從其從節(jié)點(diǎn)A處接收到的鏈路設(shè)置分組的"工作令牌"、"時(shí)間標(biāo)記"和UNI字段中分別提取W、T和N;參見(jiàn)圖6。2.根據(jù)鏈路設(shè)置分組中的時(shí)間標(biāo)記T、當(dāng)前時(shí)間和工作令牌有效間隔,節(jié)點(diǎn)B檢查工作令牌是否到期。a.如果工作令牌已經(jīng)到期,則節(jié)點(diǎn)B忽略鏈路設(shè)置請(qǐng)求,原因在于節(jié)點(diǎn)A可能通過(guò)使用W和T先前有效的值嘗試分組洪流攻擊或者回復(fù)攻擊。b.如果工作令牌尚未到期,則節(jié)點(diǎn)B繼續(xù)進(jìn)行驗(yàn)證過(guò)程。3.節(jié)點(diǎn)B檢查其是否具有來(lái)自于節(jié)點(diǎn)A的高速緩存的迪菲-赫爾曼密鑰。a.如果存在為節(jié)點(diǎn)A高速緩存的密鑰,則節(jié)點(diǎn)B在其發(fā)出的下一個(gè)鏈路設(shè)置分組中確認(rèn)節(jié)點(diǎn)A,將"Ack簽名"字段(參見(jiàn)圖7)設(shè)置為其高速緩存器中的哈希密鑰。b.如果不存在為節(jié)點(diǎn)A高速緩存的密鑰,則節(jié)點(diǎn)B繼續(xù)進(jìn)行驗(yàn)證過(guò)程。4.節(jié)點(diǎn)B計(jì)算v=h(W,T,N,W)。(逗號(hào)表示并置運(yùn)算。)v的值應(yīng)與工作令牌計(jì)算(先前已經(jīng)描述)的步驟3.b中所計(jì)算的c的成功值相同,并且因此v應(yīng)該小于r。a.如果v》r,則B忽略鏈路設(shè)置請(qǐng)求,原因在于節(jié)點(diǎn)A尚未發(fā)送有效的工作令牌并且因此可能是流氓節(jié)點(diǎn)。b.如果v々,則節(jié)點(diǎn)A已經(jīng)發(fā)送了有效的工作令牌,故節(jié)點(diǎn)B繼續(xù)進(jìn)行鏈路設(shè)置過(guò)程。在有效的工作令牌被驗(yàn)證之后,通過(guò)對(duì)其從節(jié)點(diǎn)A接收到的鏈路設(shè)置分組進(jìn)行確認(rèn),節(jié)點(diǎn)B準(zhǔn)備好繼續(xù)進(jìn)行鏈路設(shè)置過(guò)程。確認(rèn)鏈3各i更置請(qǐng)求在驗(yàn)證了節(jié)點(diǎn)A發(fā)送了有效的工作令牌之后,節(jié)點(diǎn)B繼續(xù)進(jìn)行鏈路設(shè)置。如果節(jié)點(diǎn)B還不具有用于其與節(jié)點(diǎn)A的鏈路的迪菲-赫爾曼密鑰的高速緩存值(參見(jiàn)工作令牌驗(yàn)證算法中的步驟3),則其執(zhí)行以下步驟1.節(jié)點(diǎn)B計(jì)算用于其與節(jié)點(diǎn)A的鏈路的迪菲-赫爾曼密鑰。參見(jiàn)"迪菲-赫爾曼密鑰交換,,部分以獲得更多信息。2.節(jié)點(diǎn)B對(duì)具有識(shí)別節(jié)點(diǎn)A的UNI的迪菲-赫爾曼密鑰進(jìn)行高速緩存。因?yàn)楣?jié)點(diǎn)A有規(guī)律地廣播其鏈路設(shè)置問(wèn)候分組并且節(jié)點(diǎn)B對(duì)其從節(jié)點(diǎn)A接收的每個(gè)問(wèn)候進(jìn)行確認(rèn),所以保存迪菲-赫爾曼密鑰的高速緩存版本可能是有用的。3.節(jié)點(diǎn)B為鏈路建立加密和哈希函數(shù)對(duì)。參見(jiàn)"建立鏈路加密和哈希"部分以獲得更多信息。4.節(jié)點(diǎn)B在其所廣播的下一個(gè)鏈路設(shè)置分組中對(duì)節(jié)點(diǎn)A進(jìn)行確認(rèn),將"Ack簽名"字段(參見(jiàn)圖7)設(shè)置為其所計(jì)算的哈希迪菲-赫爾曼密鑰。這使得節(jié)點(diǎn)A能夠快速地對(duì)確認(rèn)進(jìn)行鑒別,防止流氓節(jié)點(diǎn)欺騙ack,由于節(jié)點(diǎn)A需要包括在其鏈路設(shè)置分組中的所有額外ack的緣故,這會(huì)使未使用的鏈路保持開啟并使性能降級(jí)。迪菲-赫爾曼密鑰交換因?yàn)榈戏?赫爾曼密鑰交換是鏈路層的安全與編碼的組成部分,所以該部分提供了對(duì)該過(guò)程的簡(jiǎn)要概述。節(jié)點(diǎn)A和B就素?cái)?shù)p、生成元(generator)g和模(modulo)p達(dá)成一致。(p和g值在規(guī)定時(shí)間被提供給每個(gè)設(shè)備并且能夠被公告。)節(jié)點(diǎn)A選擇私鑰(privatekey)a,而節(jié)點(diǎn)B選擇私鑰P(a和P均在1和p-1之間)??梢栽谝?guī)定時(shí)間向CoCo節(jié)點(diǎn)提供私鑰,或者CoCo節(jié)點(diǎn)可以在啟動(dòng)時(shí)間通過(guò)若干標(biāo)準(zhǔn)方法中任一種來(lái)選擇私鑰(見(jiàn)[S]中的"生成密鑰,,部分)。如下計(jì)算在兩個(gè)節(jié)點(diǎn)之間交換的密鑰1.節(jié)點(diǎn)A向節(jié)點(diǎn)B發(fā)送其公鑰-值^二g,在公鑰字段中,在從A到B的鏈路設(shè)置問(wèn)候分組中發(fā)送;參見(jiàn)圖9)。2.節(jié)點(diǎn)B向節(jié)點(diǎn)A發(fā)送其公鑰-值尸£=/(在公鑰字段中,在從B到A的鏈路設(shè)置確認(rèn)分組中發(fā)送;參見(jiàn)圖9)。3.節(jié)點(diǎn)六計(jì)算(尸5廣=(/廣4.節(jié)點(diǎn)B計(jì)算(尸》^(gY5.來(lái)自于步驟3和4的這兩個(gè)值是相同的,所以可被稱作^w,"或者如果明白此上下文,其可被簡(jiǎn)稱作k。對(duì)于A和B這二者而言,該值是已知的,對(duì)于其他節(jié)點(diǎn)則不是,原因在于從g"確定oc在計(jì)算上是不可行的(見(jiàn)[S])。因此A和B能夠?qū)⑵渥鳛榧用芊椒ǖ拿孛苊荑€(secret用所述加密方法、(參見(jiàn):建立鏈路加密和哈希,''部分)。、、'迪菲-赫爾曼密鑰交換之后標(biāo)識(shí)的連續(xù)性在節(jié)點(diǎn)A和B之間交換了鏈路設(shè)置分組和迪菲-赫爾曼密鑰之后,每個(gè)節(jié)點(diǎn)知道另一個(gè)節(jié)點(diǎn)應(yīng)該已具有有效的私鑰。此后密鑰fe/^w在其中該鏈路被使用的整個(gè)會(huì)話過(guò)程中使用,故一旦會(huì)話開始,將不會(huì)有中間人攻擊。任何中間人攻擊應(yīng)該發(fā)生在鏈路建立之前并且應(yīng)該持續(xù)鏈路的生存期(lifetime)。迪菲-赫爾曼密鑰交換保證了標(biāo)識(shí)的連續(xù)性;也就是,一旦節(jié)點(diǎn)開始通過(guò)鏈路進(jìn)行通信,就保證了在鏈路會(huì)話的持續(xù)時(shí)間內(nèi)其與相同節(jié)點(diǎn)進(jìn)行對(duì)話。建立鏈^各加密和哈希每個(gè)節(jié)點(diǎn)保存其所支持的編碼的有序列表。列表中的每個(gè)編碼表示與哈希函數(shù)配對(duì)的加密方法。當(dāng)節(jié)點(diǎn)發(fā)送鏈路設(shè)置分組時(shí),它包括出現(xiàn)在分組的編碼部分中的該列表中的編碼(參考圖5和圖8)。編碼以與在節(jié)點(diǎn)A向節(jié)點(diǎn)B發(fā)送鏈路設(shè)k(問(wèn)候)分組并且節(jié)點(diǎn)B向節(jié)點(diǎn)A發(fā)送鏈路設(shè)置確認(rèn)分組之后,節(jié)點(diǎn)A和B均具有另一節(jié)點(diǎn)所支持的成對(duì)的加密方法和哈希函數(shù)的列表,其按照優(yōu)選程度(bypreference)排序。節(jié)點(diǎn)A和B均執(zhí)行以下步驟以確定將在新建立的A-B鏈路上使用這些編碼方法中的哪個(gè)。1.確定節(jié)點(diǎn)A還是節(jié)點(diǎn)B是優(yōu)選編碼器(參見(jiàn)以下部分)。2.選取位于優(yōu)選編碼器列表上的最高位置的編碼方法,該方法也出現(xiàn)在另一個(gè)節(jié)點(diǎn)的列表上。如果沒(méi)有找到匹配,則通信發(fā)生于該未加密的鏈路上。(如果安全需求要求在未加密的鏈路上不傳送數(shù)據(jù),則用于數(shù)據(jù)傳輸?shù)碾娐酚肋h(yuǎn)不會(huì)包括未加密的鏈路;參見(jiàn)[BMV]部分以獲得更多信息。)該鏈路編碼選擇算法是高效的,原因在于其僅需要由每個(gè)參與者接收單個(gè)分組。確定優(yōu)選編碼器的算法該算法是節(jié)點(diǎn)A和B這二者通過(guò)就結(jié)果達(dá)成一致來(lái)作出結(jié)論的確定性過(guò)程。節(jié)點(diǎn)A和B通過(guò)比較(T^-尸5)模P與(尸5-尸》模戶來(lái)執(zhí)行該算法。如果前者更大,則節(jié)點(diǎn)A是優(yōu)選編碼器。如果后者更大,則節(jié)點(diǎn)B是優(yōu)選編碼器。此處,/^和尸B分別是節(jié)點(diǎn)A和B的迪菲-赫爾曼公鑰,并且/是用于執(zhí)行迪菲-赫爾曼計(jì)算的素?cái)?shù)^t。注意,該算法是確定性的,故節(jié)點(diǎn)A和B這二者都計(jì)算相同的優(yōu)選解碼器。鏈路狀態(tài)圖11是示出可能的鏈路狀態(tài)的狀態(tài)圖。每個(gè)節(jié)點(diǎn)都保存鏈路狀態(tài)表,對(duì)于該節(jié)點(diǎn)所聽(tīng)到(hearfrom)的每個(gè)節(jié)點(diǎn),該鏈路狀態(tài)表都包括條目,所述條目包含用于與該節(jié)點(diǎn)通信的迪菲-赫爾曼密鑰;見(jiàn)"編碼與安全"部分。.其從該節(jié)點(diǎn)接收到的最后的hello-num(問(wèn)候號(hào))。.其從該節(jié)點(diǎn)聽(tīng)到的最后的確認(rèn)中的hello-num。每個(gè)節(jié)點(diǎn)還為它所聽(tīng)到的每個(gè)節(jié)點(diǎn)保存狀態(tài)機(jī)。節(jié)點(diǎn)A上的狀態(tài)機(jī)管理其與節(jié)點(diǎn)b的鏈路的狀態(tài)并且被稱作a-b鏈路狀態(tài)機(jī)。節(jié)點(diǎn)a的A-B鏈路狀態(tài)機(jī)能夠處于四種狀態(tài)之一(參見(jiàn)圖11)。空(blank):節(jié)點(diǎn)A不知道節(jié)點(diǎn)B。0向節(jié)點(diǎn)A知道節(jié)點(diǎn)B但是尚未從節(jié)點(diǎn)B接收到鏈路設(shè)置問(wèn)候。(A知道B但是尚未聽(tīng)到B。)單向節(jié)點(diǎn)A已經(jīng)從B接收到鏈路設(shè)置問(wèn)候但是尚未從節(jié)點(diǎn)B接收到確認(rèn)。(A聽(tīng)到B但是不知道B是否聽(tīng)到A。)-雙向節(jié)點(diǎn)A已經(jīng)從節(jié)點(diǎn)B接收到鏈路設(shè)置問(wèn)候并且已經(jīng)從節(jié)點(diǎn)B接收到確認(rèn)。(A聽(tīng)到B并且知道B也聽(tīng)到A。)節(jié)點(diǎn)A將僅在A-B鏈路狀態(tài)機(jī)處于雙向狀態(tài)時(shí)才向節(jié)點(diǎn)B發(fā)送鏈路數(shù)據(jù)分組。令M為節(jié)點(diǎn)A的A-B鏈路狀態(tài)^L。狀態(tài)才幾M能夠以以下6種方式之一進(jìn)行改變1.如果M處于狀態(tài)"空,,或者"0向"并且節(jié)點(diǎn)A從節(jié)點(diǎn)B接收到鏈路設(shè)置問(wèn)候分組,則M轉(zhuǎn)換到以下?tīng)顟B(tài)之一.如果來(lái)自節(jié)點(diǎn)B的鏈路設(shè)置分組不包含對(duì)節(jié)點(diǎn)A的ack,則為單向狀態(tài)。如果來(lái)自節(jié)點(diǎn)B的鏈路設(shè)置分組還包含對(duì)節(jié)點(diǎn)A的ack,則為雙向狀態(tài)。(例如,如果節(jié)點(diǎn)A發(fā)起與節(jié)點(diǎn)B的鏈路設(shè)置,則會(huì)發(fā)生這種情況。)節(jié)點(diǎn)A:-瞼證工作令牌。.建立鏈路的加密和哈希函數(shù)對(duì)。計(jì)算迪菲-赫爾曼密鑰并將其高速緩存(如果密鑰沒(méi)有被高速緩存)。.將節(jié)點(diǎn)B添加到其ack-list(確認(rèn)列表)。2.如果M處于單向狀態(tài)并且節(jié)點(diǎn)A從節(jié)點(diǎn)B接收到關(guān)于其自身的鏈路設(shè)置確認(rèn),則M轉(zhuǎn)換到雙向狀態(tài)。3.如果M處于雙向狀態(tài)并且節(jié)點(diǎn)A在長(zhǎng)于ack-interval的時(shí)間內(nèi)沒(méi)有從節(jié)點(diǎn)B接收到關(guān)于其自身的確認(rèn),則M轉(zhuǎn)換到單向狀態(tài)。4.如果M處于單向或雙向狀態(tài)并且節(jié)點(diǎn)A在長(zhǎng)于ack-interval的時(shí)間內(nèi)沒(méi)有從節(jié)點(diǎn)B接收到鏈路設(shè)置問(wèn)候,則M轉(zhuǎn)換到0向狀態(tài)。.節(jié)點(diǎn)A將節(jié)點(diǎn)B從其確認(rèn)列表中除去。5.如果M處于0向狀態(tài)并且節(jié)點(diǎn)A的迪菲-赫爾曼高速緩存間隔到期,貝'JM轉(zhuǎn)換到"空"狀態(tài)。節(jié)點(diǎn)A將用于節(jié)點(diǎn)B的迪菲-赫爾曼密鑰從其高速緩存器中除去。6.在所有狀態(tài)中,節(jié)點(diǎn)A在每個(gè)問(wèn)候間隔發(fā)送鏈路設(shè)置分組,其包含(遞增的)HelloNum、時(shí)間標(biāo)記和工作令牌;以及節(jié)點(diǎn)A在最后的確認(rèn)間隔(所述確認(rèn)間隔在其鏈路狀態(tài)表中具有條目)內(nèi)聽(tīng)到的每個(gè)節(jié)點(diǎn)的確認(rèn)。鏈路數(shù)據(jù)子層鏈路數(shù)據(jù)子層負(fù)責(zé)在所建立的鏈路上將數(shù)據(jù)從一個(gè)節(jié)點(diǎn)傳送到另一節(jié)點(diǎn),管理數(shù)據(jù)流,監(jiān)視諸如等待時(shí)間(latency)和往返時(shí)間之類的QoS測(cè)量,以及扭j亍壓縮和分段。更高層分組類型非鏈路設(shè)置分組的任何分組都被鏈路層當(dāng)作目的地為更高協(xié)議層的數(shù)據(jù);在CoCo協(xié)議中,這些包括路由層、電路層和命名系統(tǒng)層。.群集(clustering)分組包含與群集、允許更高效路由的CoCo節(jié)點(diǎn)的遞歸分解有關(guān)的信息(參見(jiàn)[BLMS])。廣告分組包含關(guān)于到達(dá)節(jié)點(diǎn)的成本的信息(參見(jiàn)[BLMS])。電路控制分組包含關(guān)于電路的建立和維護(hù)的信息,所述電路為專用端到端通信路徑(參見(jiàn)[BMV])。鏈路數(shù)據(jù)分組不同于鏈路設(shè)置分組,鏈路數(shù)據(jù)分組包含用戶數(shù)據(jù)。分組首部中未指定數(shù)據(jù)的長(zhǎng)度,原因在于在協(xié)議抽象層所構(gòu)造的CoCo首部(參見(jiàn)圖4)中給出了整個(gè)分組長(zhǎng)度。用于每個(gè)數(shù)據(jù)分組的CoCo首部被存儲(chǔ)在節(jié)點(diǎn)的存儲(chǔ)器中,故將會(huì)使用數(shù)據(jù)分組的更高協(xié)議級(jí)能夠;f艮容易訪問(wèn)該CoCo首部。在能夠節(jié)點(diǎn)A與B之間發(fā)送數(shù)據(jù)分組之前,應(yīng)該在節(jié)點(diǎn)A與B之間建立鏈路。因此,節(jié)點(diǎn)A和B將已經(jīng)交換了鏈路數(shù)據(jù)分組并且將已經(jīng)計(jì)算了它們的鏈路所特有(specificto)的迪菲-赫爾曼密鑰(參見(jiàn)"迪菲-赫爾曼密鑰交換,,部分)。節(jié)點(diǎn)A和B還將已經(jīng)協(xié)商了A-B鏈路所特有的哈希函數(shù)/2顏和加密方法qs(參見(jiàn)"建立鏈路加密和哈希,,部分)。以函數(shù)e^對(duì)整個(gè)數(shù)據(jù)分組的內(nèi)容進(jìn)行加密。注意,"無(wú)(none)"是加密方法之一,故如果節(jié)點(diǎn)A和B這二者就把"無(wú),,作為加密方法達(dá)成一致,則A和B中每一個(gè)都知道在發(fā)送時(shí)不嘗試加密且在接收時(shí)也不嘗試解密。圖12中示出了由部分隔開的鏈路數(shù)據(jù)分組,其中虛線指示能夠被重復(fù)的分組部分,并且括號(hào)中的數(shù)字以比特為單位指示字段大小。鏈路數(shù)據(jù)分組包含以下部分*當(dāng)數(shù)據(jù)分組被多播時(shí)所使用的字段;-用作數(shù)據(jù)分組的安全校驗(yàn)和的簽名-每個(gè)數(shù)據(jù)分組所特有的信息-分段信息,故如果需要對(duì)分組進(jìn)行分段,則數(shù)據(jù)能夠被重構(gòu)對(duì)接收到的數(shù)據(jù)分組的確認(rèn)的集合正被確認(rèn)的分組的平均保持時(shí)間將會(huì)由更高協(xié)議層處理或?qū)?huì)^L發(fā)送到網(wǎng)絡(luò)接口層的實(shí)際數(shù)據(jù)鏈路數(shù)據(jù)分組的多播部分圖13是圖示出多播的框圖。鏈路層協(xié)議支持多播。對(duì)多播的支持實(shí)現(xiàn)了對(duì)從單個(gè)源發(fā)送到多個(gè)目的地的數(shù)據(jù)的非冗余傳輸,這意味著如果從源到目的地的鏈路共享接口,則在廣播接口上僅發(fā)送數(shù)據(jù)分組的一個(gè)拷貝。例如,假設(shè)節(jié)點(diǎn)A具有到使用相同無(wú)線接口的節(jié)點(diǎn)B和C的鏈路,如圖13所示。為了向節(jié)點(diǎn)B和C這二者發(fā)送相同的分組,節(jié)點(diǎn)A在接口上僅對(duì)分組廣播一次。對(duì)于其中許多接收方共享相同廣播鏈路的多播信息,對(duì)多播的支持表示了帶寬利用極大降低。盡管如此,因?yàn)槎嗖サ慕邮辗绞褂貌煌牡戏?赫爾曼密鑰對(duì)其到源節(jié)點(diǎn)的鏈路上的數(shù)據(jù)進(jìn)行加密,所以多播數(shù)據(jù)分組不被加密。圖14示出了鏈路數(shù)據(jù)分組的多播部分,該部分在單播(unicast)數(shù)據(jù)分組中不存在。使用目的地集合來(lái)改進(jìn)多播效率圖14是圖示出鏈路數(shù)據(jù)分組的目的地集合部分的框圖。在發(fā)送多播分組之前,節(jié)點(diǎn)應(yīng)該識(shí)別哪些節(jié)點(diǎn)是廣播數(shù)據(jù)的預(yù)定(intended)接收方。對(duì)于每個(gè)預(yù)定接收方,節(jié)點(diǎn)計(jì)算簽名并在外出的分組上附加該簽名(參見(jiàn)"鏈路數(shù)據(jù)分組的簽名部分,,)。此外,廣播節(jié)點(diǎn)根據(jù)預(yù)定接收方的UNI的并置創(chuàng)建24比特的哈希值。該哈希值被放入鏈路數(shù)據(jù)分組的DestSetHash字段(參見(jiàn)圖14)。DestSetHash值為接收廣播分組的節(jié)點(diǎn)提供了確定它們是否是預(yù)定接收方中任何一個(gè)的快速方法。當(dāng)節(jié)點(diǎn)接收到廣播分組時(shí),其比較接收到的分組的DestSetHash字段與先前接收到的DestSetHash值的表。該表對(duì)DestSetHash和隨分組發(fā)送的簽名數(shù)組(array)中的該節(jié)點(diǎn)的簽名的位置進(jìn)行交叉引用(cross-reference)。如果節(jié)點(diǎn)不是預(yù)定接收方,則簽名位置對(duì)于該DestSetHash值而言將會(huì)為0,并且節(jié)點(diǎn)能夠丟棄分組。如果接收到的分組的DestSetHash字段不在表中,則節(jié)點(diǎn)計(jì)算其對(duì)于該分組的簽名(見(jiàn)"鏈路數(shù)據(jù)分組的簽名部分")并且將其簽名與附于該分組的每個(gè)簽名(其指示預(yù)定接收方)進(jìn)行比較。如果節(jié)點(diǎn)找到匹配,則其將DestSetHash值和簽名位置添加到其已知DestSetHash值的表中。如果沒(méi)有找到簽名匹配,則DestSetHash值被添加到簽名位置為0的表中,這指示該節(jié)點(diǎn)不是包含該DestSetHash的廣播分組的預(yù)定接收方之一;該令點(diǎn)此后丟棄該分組。因?yàn)楹灻€充當(dāng)分組完整性的校驗(yàn)和,所以具有不完整數(shù)據(jù)的分組具有與分組完整時(shí)的相同分組不同的簽名。如果這樣的不完整分組帶著新的DestSetHash值到達(dá)預(yù)定接收方,則預(yù)定接收方將找不到任何匹配的簽名并且因此將會(huì)錯(cuò)誤地得出結(jié)論該DestSetHash值指示該節(jié)點(diǎn)(即接收到分組的節(jié)點(diǎn))不是預(yù)定接收方。該節(jié)點(diǎn)因而將錯(cuò)誤地忽略具有該DestSetHash值的所有將來(lái)的廣播分組。通過(guò)依賴于在媒體訪問(wèn)控制(MAC)級(jí)處執(zhí)行的校驗(yàn)和,能夠避免這種情況以確保數(shù)據(jù)完整性,所述MAC是網(wǎng)絡(luò)接口級(jí)的一部分。鏈路數(shù)據(jù)分組的多播部分中的字段NumSigs(簽名數(shù)目)(8)出現(xiàn)在分組中的簽名數(shù)目,其在1到255的范圍內(nèi)。針對(duì)多播數(shù)據(jù)分組的每個(gè)預(yù)定接收方都創(chuàng)建單獨(dú)的簽名(參見(jiàn)"鏈路數(shù)據(jù)分組的簽名部分")。該字段僅出現(xiàn)在多播數(shù)據(jù)分組中;在單播數(shù)據(jù)分組中沒(méi)有該字段。DestSetHash(24)包含根據(jù)預(yù)定目的地節(jié)點(diǎn)的集合的哈希創(chuàng)建的唯一值。該字段僅出現(xiàn)在多播數(shù)據(jù)分組中;在單播數(shù)據(jù)分組中沒(méi)有該字段。鏈路數(shù)k分組的簽名部分鏈路數(shù)據(jù)分組的簽名部分起著分組數(shù)據(jù)的安全校-瞼和的作用,并且還鑒別數(shù)據(jù)發(fā)送方。數(shù)據(jù)分組的發(fā)送方-節(jié)點(diǎn)A計(jì)算數(shù)據(jù)的哈希和用于接收方的迪菲-赫爾曼密鑰/z"AA:)并且將其置于鏈路數(shù)據(jù)分組首部的Sig(簽名)字段中。當(dāng)節(jié)點(diǎn)B接收到分組時(shí),其將哈希函數(shù)h應(yīng)用到串k,D,K并且驗(yàn)證結(jié)果是否與Sig字段的內(nèi)容相匹配。如果二者匹配,則節(jié)點(diǎn)B知道數(shù)據(jù)以高概率(因?yàn)锳0是校驗(yàn)和)無(wú)損地到達(dá),并且其還知道數(shù)據(jù)應(yīng)該來(lái)自于節(jié)點(diǎn)A(因?yàn)橹挥蠥知道k的值)。折疊哈希值圖15是圖示出用于對(duì)哈希值進(jìn)行折疊的技術(shù)的流程圖。標(biāo)準(zhǔn)哈希函數(shù)的輸出-例如MD5-是128比特的哈希值。通過(guò)被稱為折疊的過(guò)程將其折疊成32比特。為了將128比特的哈希值/2128折疊成32比特結(jié)果/32,對(duì)/2l28的4個(gè)32比特的子串逐比特應(yīng)用異或運(yùn)算符。更確切地,對(duì)于z'=0...31中的每一個(gè),進(jìn)行/232[。=/z128[>]@/z128[i+32]/128[,+64]/128[Z'+96]其中表示異或運(yùn)算符。為了更為直觀地理解,假設(shè)/^28是圖15中的頂部所示出的串。通過(guò)將4個(gè)32比特的子串重新排列為圖15中的4個(gè)32比特串的堆疊,能夠獲得單個(gè)32比特的哈希值作為每列中出現(xiàn)的4個(gè)比特的逐比特的異或的結(jié)果。盡管/2128的296個(gè)不同的哈希值折疊成/32的單個(gè)哈希值,但是/232的232個(gè)不同的值使得通過(guò)僅僅猜測(cè)哈希值來(lái)冒充節(jié)點(diǎn)頗為困難。鏈路數(shù)據(jù)分組的簽名部分中的字段圖16是圖示出數(shù)據(jù)鏈路分組的簽名字段部分的框圖。Sig(32)用作數(shù)據(jù)的安全校驗(yàn)和并且鑒別數(shù)據(jù)發(fā)送方。節(jié)點(diǎn)A將該字段設(shè)置為/z"AA)的32比特折疊串,其中h是協(xié)商的哈希函數(shù),k是用于該鏈路的迪菲-赫爾曼密鑰,而D表示分組中的數(shù)據(jù),其跟在分組首部之后。在該上下文中,逗號(hào)表示并置運(yùn)算符。單播數(shù)據(jù)分組僅具有一個(gè)Sig字段,而多播數(shù)據(jù)分組能夠具有多個(gè)Sig字段,簽名的實(shí)際數(shù)目由分組的多播部分中的NumSigs字段給出(參見(jiàn)圖14)。鏈路數(shù)據(jù)分組的分組信息部分一旦節(jié)點(diǎn)A和B彼此之間建立了鏈路,從A發(fā)送到B的分組就祐二順序地(0,1,2……)以分組ID(PID)進(jìn)行編號(hào)。同樣地,從B發(fā)送到A的分組也被順序地編號(hào),針對(duì)其自身PID使用單獨(dú)的序列。為抵御傳遞攻擊,鏈路層丟棄所到達(dá)的具有小于HighestPID的或大于HighestPID+RangePID的PID的分組,其中HighestPID(最高PID)是目前在任何鏈i各數(shù)據(jù)分組中接收到的PID的最大值,而RangePID(PID范圍)的典型定值是1000。在任何實(shí)施方式中,應(yīng)當(dāng)做出適當(dāng)調(diào)整以處理"巻繞(wraparound),,,即,適應(yīng)從具有全1比特模式的PID到具有全0比特模式的PID的平滑轉(zhuǎn)換。這是必要的,原因在于PID是32比特?zé)o符號(hào)整數(shù)字段,所以執(zhí)行模232運(yùn)算。鏈路數(shù)據(jù)分組的分組信息部分中的字段圖17是圖示出數(shù)據(jù)鏈路分組的分組信息部分的框圖。PID(32)是隨著在鏈路的生存期內(nèi)發(fā)送的每個(gè)分組而順序遞增的整數(shù)(每個(gè)鏈路,每個(gè)方向)。NumAcks(8)是^皮包括在該(夕卜出)分組中的進(jìn)入分組的確認(rèn)數(shù)目。參見(jiàn)"鏈路數(shù)據(jù)分組的確認(rèn)部分"以獲得更多信息。ToS(2)指定用于通過(guò)鏈路傳送的數(shù)據(jù)的服務(wù)類型。表l中給出了當(dāng)前支持的ToS類型。表l:當(dāng)前支持的ToS類型<table>tableseeoriginaldocumentpage23</column></row><table>如果更多的類型被識(shí)別且被認(rèn)為是期望的,則可以使用鏈路數(shù)據(jù)分組首部中的TOS字段旁的保留字段中的6比特中的一些比特。類型(Type)(8)描述了分組中所包含的數(shù)據(jù)的類型,如表2中所示。如果分組僅包含確認(rèn),則該字段被設(shè)置為0;否則,該字段對(duì)更高的協(xié)議層而言是可用的。<table>tableseeoriginaldocumentpage24</column></row><table>Frag(l)當(dāng)分組表示來(lái)自于原始數(shù)據(jù)分組的若干分段之一時(shí),其被設(shè)為1;否則被設(shè)為0。當(dāng)分組大小超過(guò)網(wǎng)絡(luò)接口MTU時(shí),鏈路數(shù)據(jù)層將分組的數(shù)據(jù)部分分離成足夠小的分段,以至于當(dāng)與鏈路數(shù)據(jù)首部合并時(shí),結(jié)果所得到的分組在MTU限制之內(nèi)。參見(jiàn)"鏈路數(shù)據(jù)分組的分段部分"以獲得更多信息。AckCom(1)當(dāng)存在確認(rèn)壓縮(這意味著確認(rèn)是8比特的長(zhǎng)度而非32比特)時(shí),其被設(shè)為1;否則被設(shè)為0。參見(jiàn)"鏈路數(shù)據(jù)分組的確認(rèn)部分"以獲得更多信息。Res(6)保留以備將來(lái)使用。鏈路數(shù)據(jù)分組的分段部分圖18是圖示出鏈路數(shù)據(jù)分組的分段部分的框圖。鏈路層協(xié)議支持被稱為鏈路分組分段的過(guò)程。當(dāng)鏈路層從電路和路由層處接收到分組時(shí),分組對(duì)于網(wǎng)絡(luò)接口層而言可能過(guò)大以至于難以處理。這可能是由于與硬件相關(guān)的最大傳輸單元(MTU)限制。在這種情況下,鏈路層將其接收到的分組分段成更小的分組,而后將它們發(fā)送到網(wǎng)絡(luò)接口。與之類似,當(dāng)鏈路層接收到這樣的經(jīng)分段的分組時(shí),其在將它們傳遞至路由和電路層之前將它們重定才各式化為它們的原始分組配置。MTU是底層網(wǎng)絡(luò)傳輸技術(shù)所能支持的最大分組大小,并且對(duì)于諸如以太網(wǎng)、衛(wèi)星、WiFi和無(wú)線載波之類的不同才支術(shù)而言有所不同。所有包含來(lái)自于單個(gè)更高層分組的分段的分組,諸如電路層分組,都包含相同的PID。接收節(jié)點(diǎn)僅在接收到所有的分段之后才發(fā)送針對(duì)該P(yáng)ID的確i人。每個(gè)數(shù)據(jù)分組分段包含偏移,該偏移描述了分段在更高層分組內(nèi)的位置。這些偏移以及指示最后的分段的比特一起使得接收機(jī)能夠?qū)Ψ侄芜M(jìn)行重新組裝。分組信息部分(參見(jiàn)圖17)的Frag字段指示當(dāng)前的數(shù)據(jù)分組是否是更大的數(shù)據(jù)塊的分段。圖18中示出了剩下的與分組分段相關(guān)的字段。鏈路數(shù)據(jù)分組的分^^殳部分中的字段LastFrag(最后的分段)(1)如果分組包含一系列分段中的最后一個(gè),則該字賴:;故設(shè)為1;否則祐:設(shè)為0。分段偏移(FragmentationOffset)(31)被設(shè)定為該分段相對(duì)于原始數(shù)據(jù)分組的始端的字節(jié)偏移。鏈路數(shù)據(jù)分組的確認(rèn)部分鏈路層通過(guò)使用用于將(在時(shí)間和空間限制之內(nèi)的盡可能多的進(jìn)入分組,直至固定極限)進(jìn)入分組的確認(rèn)附于外出分組的系統(tǒng)來(lái)識(shí)別分組。當(dāng)外出分組準(zhǔn)備好被發(fā)送時(shí),鏈路層附加可用的確認(rèn)。如果確認(rèn)是可用的但是沒(méi)有準(zhǔn)備好的外出分組,則鏈路層應(yīng)該等待兩個(gè)事件之一固定時(shí)限已過(guò)累積了固定數(shù)量的確認(rèn)無(wú)論出現(xiàn)哪種狀態(tài),鏈路層都創(chuàng)建與任何活動(dòng)數(shù)據(jù)流都不相關(guān)的空分組,附加等待中的確認(rèn),并且發(fā)送該分組。當(dāng)使用了確認(rèn)壓縮(通過(guò)設(shè)定分組信息部分的AckCom字段;參見(jiàn)圖17)時(shí),僅使用正被確認(rèn)的分組PID的8個(gè)最低位。只要發(fā)送節(jié)點(diǎn)在其已經(jīng)發(fā)送的256個(gè)最近的分組內(nèi)接收到ack,節(jié)點(diǎn)就能夠可靠地確定哪個(gè)分組正^皮確i人。鏈路數(shù)據(jù)分組的確認(rèn)部分中的字段圖19是圖示出鏈路數(shù)據(jù)分組的確認(rèn)部分中的字段的框圖。Ack(8或32)包含接收到的并且正被確認(rèn)的進(jìn)入分組的PID。該字段的大小是8比特或32比特,這取決于分組信息部分中的AckCom字段的值(參見(jiàn)圖17)。目前的Ack字段的數(shù)目由NumAck字段(也在分組信息部分中)給出。平均保持時(shí)間(AverageHoldTime)(32)包含正在由該分組確認(rèn)的每個(gè)分組的保持時(shí)間的平均值。該字段用于度量服務(wù)質(zhì)量。區(qū)分多播與單播下列偽碼概述的程序OnReceiveDataPacket()描述了鏈路層如《可區(qū)分單播分組和多播數(shù)據(jù)分組。該處理在PAL中執(zhí)行。當(dāng)發(fā)送方想要執(zhí)行多播時(shí),其計(jì)算一個(gè)值DestSetHash,該值由預(yù)定接收方的集4、來(lái)確定(參見(jiàn)"鏈路數(shù)據(jù)分組的多播部分"以獲得關(guān)于DestSetHash值的更多信息)。盡管在物理上接收分組的每個(gè)節(jié)點(diǎn)能夠通過(guò)掃描分組首部中的簽名來(lái)確定其是否是發(fā)送方的預(yù)定接收方之一,但是通過(guò)消除總是要掃描在分組首部中的整個(gè)簽名列表的需要,DestSetHash值提供了更為快速地確定本地節(jié)點(diǎn)是否是預(yù)定接收方的方式。在程序OnReceiveDataPacket()中,變量DestSetTable是由DestSetHash的值索引的數(shù)組。每個(gè)條目包含一個(gè)無(wú)符號(hào)整數(shù)值。如果DestSetTable[DestSetHash]非零,則本地節(jié)點(diǎn)在DestSetHash中,在這種情況下,DestSetTable[DestSetHash]的值指示應(yīng)該匹配本地節(jié)點(diǎn)的簽名的簽名位置(在被附加在數(shù)據(jù)分組首部中的簽名列表中)。如果DestSetTable[DestSetHash]的值是零,則本地節(jié)點(diǎn)不是預(yù)定接收方并且其應(yīng)該丟棄該分組。僅在本地節(jié)點(diǎn)處接收到在分組的DestSetHash字段中包含前,DestSetTable[DestSetHash]未被定義。如果發(fā)送方廣播具有一組不同預(yù)定目的地的分組,則它為其所發(fā)送的數(shù)據(jù)分組上的DestSetHash字段計(jì)算新的DestSetHash值。當(dāng)本地節(jié)點(diǎn)接收到包含新的DestSetHash值的多播分組時(shí),它計(jì)算其簽名并在分組首部中的簽名當(dāng)中進(jìn)行掃描以尋找匹配。匹配的簽名的位置被置于DestSetTable[DestSetHash];如果沒(méi)有簽名匹配,則DestSetTable[DestSetHash]被設(shè)為零并且分組被丟棄。procedureOnReceiveDataPacket(1inkID)if:fr細(xì)eAeacfer;Wicatas1notfoxWcastthenelse//秋縱廣歡智,//產(chǎn)絲扉,凝縦激方ifDestSetTable[DestSetHash]ist/e/Y/7ec/thensigOffsetDestSetTable[DestSetHash]:ifsigOffset#0then//龍離碟定為;i銜定微;^else//本磁夢(mèng)#週定微方-"iscarY/《力e7acjtet,'6ls6<formula>formulaseeoriginaldocumentpage27</formula>OoS測(cè)量鏈路層監(jiān)視在鏈路上發(fā)送數(shù)據(jù)的成本。一些通用的成本度量包括帶寬、等待時(shí)間、抖動(dòng)、可靠性、擁塞和實(shí)際金錢開銷(例如,網(wǎng)絡(luò)可能租用衛(wèi)星鏈路)。電路層使用該數(shù)據(jù)來(lái)建立滿足用戶指定的QoS要求的電路。GetQos()GetQos()函數(shù)返回一組QoS度量。所返回的度量是實(shí)施方式特定的。分組遞送通過(guò)調(diào)用ReceivePacket(接收分組)(參見(jiàn)圖3)來(lái)將分組發(fā)送至更高協(xié)議層。如果分組具有被設(shè)置為測(cè)試分組(testpacket)或廣告(advertisement)(參見(jiàn)表2和"鏈路數(shù)據(jù)分組的分組信息部分")的Type字段,則鏈路數(shù)據(jù)層在路由層中調(diào)用ReceivePacket。如果分組具有被設(shè)置為電路相關(guān)的分組類型之一的"類型"字段(參見(jiàn)表2),則該鏈路數(shù)據(jù)層在電路層中調(diào)用ReceivePacket。結(jié)論鏈路層協(xié)創(chuàng)建并管理鏈路,所述鏈路是CoCo節(jié)點(diǎn)對(duì)之間的直接連接。鏈路層檢測(cè)相鄰CoCo設(shè)備的存在并建立到它們的鏈路。鏈路建立包括協(xié)商編碼方法和迪菲-赫爾曼密鑰交換,以使得通過(guò)鏈路發(fā)送的所有通信都是可靠的。一旦建立了鏈路,鏈路層就在網(wǎng)絡(luò)接口層和更高的協(xié)議層之間傳遞分組,監(jiān)視服務(wù)質(zhì)量(QoS)統(tǒng)計(jì),并且能夠?qū)⑦@些報(bào)告給更高的協(xié)議層。其通過(guò)抑制單個(gè)網(wǎng)絡(luò)接口上的冗余分組傳輸而支持多播,在分組大小超過(guò)網(wǎng)絡(luò)接口的最大傳輸單元(MTU)時(shí)執(zhí)行分段,并且關(guān)閉不活動(dòng)鏈路以便為新的鏈路請(qǐng)求釋放系統(tǒng)資源。鏈路層使用迪菲-赫爾曼密鑰交換和工作令牌計(jì)算來(lái)提供在TCP和IP中缺少.的安全級(jí)別。該協(xié)議特別針對(duì)移動(dòng)adhoc聯(lián)網(wǎng)而設(shè)計(jì),并且為此目的而優(yōu)于TCP/IP。以下是可能的1.一種用于在可伸縮(scalable)且動(dòng)態(tài)的異構(gòu)(heterogeneous)通信網(wǎng)絡(luò)中建立鏈3各的方法。2.—種用于監(jiān)視通信網(wǎng)絡(luò)中的其他網(wǎng)絡(luò)節(jié)點(diǎn)的存在的方法。3.—種用于確保與其他網(wǎng)絡(luò)節(jié)點(diǎn)的鏈路安全的方法。如果A和B是由鏈路連接的兩個(gè)網(wǎng)絡(luò)節(jié)點(diǎn),則當(dāng)A向B發(fā)送分組時(shí),向B保證4又A發(fā)送了分組,并且向A保證僅B能夠讀取之。4.一種防止中間人攻擊的方法。一旦在兩個(gè)節(jié)點(diǎn)A和B之間建立了鏈路,就沒(méi)有流氓節(jié)點(diǎn)能夠?qū)⑵渥陨聿逶贏和B之間并針對(duì)一方冒充另一方。因此,CoCo網(wǎng)絡(luò)防止了所謂的中間人攻擊。5.—種防止拒絕服務(wù)攻擊的方法。任何試圖以偽造(spurious)分組充斥網(wǎng)絡(luò)的節(jié)點(diǎn)都被迫使用大量計(jì)算資源。因此CoCo網(wǎng)絡(luò)防止了所謂的拒絕服務(wù)攻擊。6.—種用于監(jiān)視通信網(wǎng)絡(luò)中的鏈路質(zhì)量的方法。7.—種用于在通信網(wǎng)絡(luò)中使用所測(cè)量的鏈路質(zhì)量來(lái)建立滿足指定的QoS要求的電路的方法。8.—種用于向異構(gòu)通信網(wǎng)絡(luò)中的網(wǎng)絡(luò)節(jié)點(diǎn)分配統(tǒng)一地址(統(tǒng)一網(wǎng)絡(luò)標(biāo)識(shí)符)的方法。9.一種用于在鏈路建立期間使節(jié)點(diǎn)協(xié)商適當(dāng)?shù)陌踩珯C(jī)制的方法。10.—種通過(guò)抑制單個(gè)網(wǎng)絡(luò)接口上的冗余分組傳輸來(lái)支持多播的方法。11.一種一企測(cè)應(yīng)該何時(shí)關(guān)閉鏈3各的方法。所涉及的語(yǔ)義扭無(wú)念鏈路帶寬等待時(shí)間加密迪菲-赫爾曼密鑰協(xié)商通用節(jié)點(diǎn)標(biāo)識(shí)符協(xié)議抽象層.防止拒絕服務(wù)防止中間人攻擊鏈路設(shè)置分組往返時(shí)間計(jì)算.確認(rèn)多播單播.鏈路狀態(tài)機(jī)根據(jù)上文,將會(huì)意識(shí)到在此已經(jīng)出于說(shuō)明的目的描述了本發(fā)明的特定實(shí)施例,但是可以做出多種修改而不偏離本發(fā)明的精神和范圍。因而,本發(fā)明只由所附權(quán)利要求限定。權(quán)利要求1.一種用于在可伸縮且動(dòng)態(tài)的異構(gòu)通信網(wǎng)絡(luò)中建立鏈路的系統(tǒng),包括(a)通信網(wǎng)絡(luò),具有能夠向彼此發(fā)送數(shù)據(jù)以及從彼此接收數(shù)據(jù)的通信設(shè)備的集合;(b)異構(gòu)通信網(wǎng)絡(luò),具有多種類型的網(wǎng)絡(luò)設(shè)備和多種類型的通信鏈路的集合,其中異構(gòu)通信網(wǎng)絡(luò)是包括不同類型和制造商的設(shè)備的混合網(wǎng)絡(luò);(c)協(xié)議抽象層,與網(wǎng)絡(luò)接口層交換幀并且與電路和路由層交換數(shù)據(jù),所述協(xié)議抽象層具有鏈路設(shè)置層組件、服務(wù)質(zhì)量處理機(jī)組件和鏈路數(shù)據(jù)層組件。2.如權(quán)利要求l所述的系統(tǒng),其中所述協(xié)議抽象層從網(wǎng)絡(luò)設(shè)備接收數(shù)據(jù)幀,構(gòu)造CoCo首部和地址轉(zhuǎn)換表,除去網(wǎng)絡(luò)接口層首部,并且向子層提供具有CoCo首部的經(jīng)修改的分組。3.如權(quán)利要求2所述的系統(tǒng),其中所構(gòu)造的CoCo首部和地址轉(zhuǎn)換表從網(wǎng)絡(luò)接口層捕獲信息。全文摘要鏈路是表示兩個(gè)CoCo節(jié)點(diǎn)之間的直接連接的軟件抽象。鏈路層檢測(cè)相鄰設(shè)備的存在并且建立去往它們的鏈路。協(xié)議抽象層把到達(dá)網(wǎng)絡(luò)接口的數(shù)據(jù)幀轉(zhuǎn)換成由CoCo協(xié)議組所使用的分組對(duì)象。文檔編號(hào)H04J3/16GK101411105SQ200780010953公開日2009年4月15日申請(qǐng)日期2007年2月1日優(yōu)先權(quán)日2006年2月1日發(fā)明者F·勞布,J·布呂斯特爾,M·L·塔克,R·埃勒申請(qǐng)人:科科通信公司