第一章 概述
一、協(xié)議定義
-
為網(wǎng)絡(luò)中互相通信的對等實體間進行數(shù)據(jù)交換二建立的規(guī)則、標(biāo)準(zhǔn)或約定,保證實體在計算機網(wǎng)絡(luò)中有序地交換數(shù)據(jù)。
實體及對等實體.png -
協(xié)議是關(guān)于分布式系統(tǒng)進行信息交換時地一種約定,協(xié)議應(yīng)按照語言地方式進行定義。即:網(wǎng)絡(luò)協(xié)議就是具有規(guī)定文法、語法和語義地語言。
文法語法及語義 - 延伸為計算機通信協(xié)議
協(xié)議時計算機網(wǎng)絡(luò)和分布式系統(tǒng)中各種通信實體或進程間相互交換信息是必須遵守的一組規(guī)則或約定。
二、協(xié)議三要素
語法、語義、同步
- 語法
網(wǎng)絡(luò)協(xié)議中地語法體現(xiàn)為數(shù)據(jù)報文中的控制信息和各種控制報文的結(jié)構(gòu)、格式。 - 語義
協(xié)議數(shù)據(jù)報文中的控制信息和控制報文所約定的含義,即需要完成何種動作,發(fā)出何種控制信息及做出何種響應(yīng)。 - 同步
同步是指事件發(fā)生順序的詳細(xì)說明。具體來說,同步是指通信過程中各種控制報文傳送的順序關(guān)系。
常用建立通信雙方的有限狀態(tài)機的方法來描述網(wǎng)絡(luò)協(xié)議。
三、網(wǎng)絡(luò)體系結(jié)構(gòu)
采用層次式結(jié)構(gòu)
網(wǎng)絡(luò)體系結(jié)構(gòu)=計算機網(wǎng)絡(luò)的各層+各層協(xié)議的集合
ISO的OSI/RM:
IETF的TCP/IP:
網(wǎng)絡(luò)訪問層、互聯(lián)網(wǎng)層、傳輸層、應(yīng)用層
四、協(xié)議標(biāo)準(zhǔn)化
符合其用途
促進貿(mào)易、交流和技術(shù)轉(zhuǎn)讓
簡化以提高可用性
規(guī)定一類設(shè)備必須能夠執(zhí)行的任務(wù)或者描述一個裝置和它的安全特征。
五、協(xié)議工程
1. 協(xié)議工程學(xué)用形式化方法描述協(xié)議設(shè)計和維護中的各個過程。
2. 協(xié)議工程過程
集成化、形式化的協(xié)議開發(fā)過程。
- 集成化
協(xié)議描述、驗證、實現(xiàn)和測試等技術(shù)前后銜接。 - 形式化
指用形式描述技術(shù)FDT貫穿協(xié)議開發(fā)的各個階段。
目的:減少協(xié)議開發(fā)過程中潛在的錯誤,提高協(xié)議開發(fā)的效率,促進協(xié)議標(biāo)準(zhǔn)化的發(fā)展。
3. 協(xié)議開發(fā)過程
協(xié)議設(shè)計、形式描述、驗證、實現(xiàn)、測試、運行
設(shè)計
根據(jù)協(xié)議的需求說明構(gòu)造協(xié)議的非形式描述文本稱為協(xié)議設(shè)計。
包括:協(xié)議環(huán)境分析、協(xié)議的功能設(shè)計、協(xié)議組織形式的確定、協(xié)議元素的構(gòu)造、協(xié)議文本的編制等。
遵循原則:結(jié)構(gòu)化、模塊化等。
結(jié)果:非形式描述協(xié)議文本。
形式描述
形式描述模型:
1. 有限狀態(tài)機FSM
2. Petri網(wǎng)
形式描述語言:
CCITT制定的SDL
驗證
兩項工作:
1.在語法和語義方面進行驗證
2.進行計算機模擬
驗證的主要內(nèi)容:
1.可達(dá)性分析
2.死鎖和活鎖檢測
3.協(xié)議的有界性和完整性檢查
4.協(xié)議的動作序列檢查
5.通道溢出檢查等
驗證方法:
1.模型檢查
最常見方法:可達(dá)性分析。包括狀態(tài)窮舉、狀態(tài)隨機枚舉、狀態(tài)概率枚舉等方法。
2.證明:推理演算,嚴(yán)密證明
3.模擬:通過模擬試驗測試協(xié)議的各種性質(zhì)
實現(xiàn)
協(xié)議實現(xiàn)是指由協(xié)議規(guī)范到協(xié)議的可執(zhí)行目標(biāo)代碼的過程
協(xié)議實現(xiàn)的自動化:協(xié)議工程的主要目的之一。
通過形式化描述技術(shù)可實現(xiàn)半自動化。步驟:
1.利用翻譯程序?qū)f(xié)議的形式描述文本轉(zhuǎn)換成與機器無關(guān)的源代碼
2.手工編寫與機器有關(guān)的、在協(xié)議規(guī)范中沒有描述的問題的處理代碼。
測試
驗證一個協(xié)議的實現(xiàn),主要考慮:
1.協(xié)議一致性測試
1.1 檢測新協(xié)議實現(xiàn)是否能滿足該協(xié)議規(guī)范所規(guī)定的規(guī)則。
1.2 如果協(xié)議實現(xiàn)不能通過一致性測試,則說明該協(xié)議實現(xiàn)與其他同樣通過一致性測試的協(xié)議實現(xiàn)不能在同一個全局系統(tǒng)中很好地協(xié)調(diào)工作。
1.3 一致性測試的基礎(chǔ):FDT
1.4 一致性測試要解決的問題:
-> 測試系統(tǒng)設(shè)計
測試方法和測試系統(tǒng)體系結(jié)構(gòu)
-> 測試序列的產(chǎn)生
“徹底性”、“標(biāo)準(zhǔn)化”。測試序列的自動生成和形式化描述。
1.5 測試序列生成器
可以產(chǎn)各種可能發(fā)生的情況組合,測試所實現(xiàn)的協(xié)議是否在各種正常和非正常情況下均能正確工作。
2.對協(xié)議實現(xiàn)的評價。
要求:
1.徹底性 須徹底測試所實現(xiàn)的協(xié)議
2.標(biāo)準(zhǔn)化 使用的測試集須是標(biāo)準(zhǔn)的
性能
主要包括吞吐量和時延
目的:
改善協(xié)議機制,提高執(zhí)行效率。
協(xié)議維護
六、思考題
1.“軟件工程”和“協(xié)議工程”的關(guān)系。
區(qū)別:
協(xié)議工程比軟件工程更加一體化,形式化。協(xié)議工程的目的是減少協(xié)議開發(fā)過程中潛在的錯誤,提高協(xié)議開發(fā)效率,促進協(xié)議標(biāo)準(zhǔn)化的發(fā)展。
協(xié)議工程的開發(fā)過程包括:
設(shè)計,描述,驗證,實現(xiàn),性能分析和測試
軟件工程的開發(fā)過程包括:
可行性分析,需求分析,概要設(shè)計,詳細(xì)設(shè)計,具體開發(fā)。
聯(lián)系:
協(xié)議工程和軟件工程都是為了簡化開發(fā)過程,協(xié)議工程時以協(xié)議軟件為研究對象的軟件工程。
2.選擇一個網(wǎng)絡(luò)協(xié)議,說明該協(xié)議的三要素。
第二章 協(xié)議設(shè)計
一、兩種標(biāo)準(zhǔn)
1. OSI/RM
法律上的國際標(biāo)準(zhǔn)——開放系統(tǒng)互聯(lián)參考模型,并沒有得到市場的認(rèn)可。只要遵循OSI標(biāo)準(zhǔn),一個系統(tǒng)就可以和位于世界上任何地方的、也遵循這同一標(biāo)準(zhǔn)的其他任何系統(tǒng)進行通信。
1.1 各層基本功能
1.2 OSI失敗的原因
- OSI的專家們?nèi)狈嶋H經(jīng)驗,他們在完成OSI標(biāo)準(zhǔn)時缺乏商業(yè)驅(qū)動力;
- OSI的協(xié)議實現(xiàn)起來過于復(fù)雜,而且運行效率很低;
- OSI標(biāo)準(zhǔn)的制定周期太長,因而使得OSI標(biāo)準(zhǔn)生產(chǎn)的設(shè)備無法及時進入市場;
- OSI的層次劃分不太合理,有些功能在多個層次中重復(fù)出現(xiàn)。
2. TCP/IP
非國際標(biāo)準(zhǔn),但常被稱為事實上的國際標(biāo)準(zhǔn)。
2.1 TCP/IP各層對應(yīng)的主要協(xié)議
2.2 IP數(shù)據(jù)包的轉(zhuǎn)發(fā)過程
在具體的物理網(wǎng)絡(luò)的鏈路層,只能看見MAC幀而看不見IP數(shù)據(jù)報。IP層抽象的互聯(lián)網(wǎng)屏蔽了下層很復(fù)雜的細(xì)節(jié),在抽象的網(wǎng)絡(luò)層上討論問題,就能夠使用 統(tǒng)一的、抽象的IP地址,研究主機和主機或主機和路由器之間的通信
兩個路由器的IP地址并不出現(xiàn)在IP數(shù)據(jù)報的首部中,路由器只根據(jù)目的站的IP地址的網(wǎng)絡(luò)號進行路由選擇
二、為什么要分層
1. 分層的好處
- 各層之間是獨立的
由于每一層只實現(xiàn)一種相對獨立的功能,因而可將一個難以處理的復(fù)雜問題分解為若干個較容易處理的、更小一些的問題。這樣,整個問題的復(fù)雜程度就下降了。
某一層并不需要知道它的下一層是如何實現(xiàn)的,而僅僅需要知道該層通過層間的接口所提供的服務(wù)。 - 靈活性好
當(dāng)任何一層發(fā)生變化時,只要層間接口關(guān)系保持不變,則在這層以上或以下的各層均不受影響。故易于擴充或者改變協(xié)議。 - 結(jié)構(gòu)上可分割開
各層可以采用最合適的技術(shù)來實現(xiàn) - 易于實現(xiàn)和維護
因為整個的系統(tǒng)已被分解為若干個相對獨立的子系統(tǒng),使得實現(xiàn)和調(diào)試變得容易。 - 能促進標(biāo)準(zhǔn)化工作
因為每一層的功能及其所提供的服務(wù)都已有了精確的說明。
2. 不分層的后果
如果不分層,每一個新的應(yīng)用程序都必須為每個網(wǎng)絡(luò)重新實現(xiàn)一次。
三、OSI模型的核心
服務(wù)、接口、協(xié)議
-
Service – says what a layer does
指某一層向上一層提供的一組原語(操作),一個服務(wù)由一組原語正式說明,用戶進程通過這些原語來訪問服務(wù)
定義了該層準(zhǔn)備代表其用戶執(zhí)行哪些操作,但不涉及如何實現(xiàn)這些操作 -
Interface – says how to access the service
規(guī)定了有哪些參數(shù),以及結(jié)果是什么 -
Protocol – says how is the service implemented
一組規(guī)則,規(guī)定了同一層的對等實體之間所交換的數(shù)據(jù)包或者報文的格式和含義。
對等實體利用協(xié)議來實現(xiàn)他們的服務(wù)定義,可以自由改變協(xié)議,只要不改變呈現(xiàn)給他們的用戶的服務(wù)即可。
服務(wù)與協(xié)議是完全分離的,服務(wù)涉及層與層之間的接口,協(xié)議涉及不同機器上兩個對等實體之間發(fā)送的數(shù)據(jù)包
四、n層協(xié)議模型
- 相關(guān)概念
實體、(n)服務(wù)、(n)用戶、SP、SAP、TSAP、NSAP
1. 實體
在OSI中,實體(entity)表示任何可以發(fā)送和接收信息的硬件或軟件進程。在許多情況下,實體就是一個特定的模塊。
2. SP-服務(wù)原語
在進行交互時所要交換的一些必須信息或命令,以表明需要本地的或遠(yuǎn)端的對等實體做什么事情。
- 4種服務(wù)原語
Request (請求): 一個實體希望得到某種服務(wù)
Indication (指示):把關(guān)于某一事件的信息告訴某一實體
Response (響應(yīng)):一個實體愿意響應(yīng)某一事件
Confirm (證實):把一個實體的服務(wù)請求加以確認(rèn)并告訴它
3. SAP-服務(wù)訪問點
同一系統(tǒng)相鄰兩層的實體進行交互的地方。服務(wù)用戶通過在一個SAP遞交數(shù)據(jù)并從另一個SAP讀出。
- TSAP-傳輸服務(wù)訪問點(端口)
- NSAP-網(wǎng)絡(luò)服務(wù)訪問點(例如IP地址)
4. 服務(wù)
一個(n)實體向上一層所提供的服務(wù)由以下三部分構(gòu)成:
(1) (n)實體自己提供的某些功能。
(2) 通過與處在另一系統(tǒng)中的對等(n)實體的通信而得到的服務(wù)。
(3) 從(n-1)層及其以下各層以及本地系統(tǒng)環(huán)境得到的服務(wù)。
服務(wù)與協(xié)議:
本層的服務(wù)用戶只能看見服務(wù)而無法看見下面的協(xié)議。下面的協(xié)議對上面的服務(wù)用戶是透明的。
協(xié)議是“水平的”,即協(xié)議是控制對等實體之間通信的規(guī)則。
服務(wù)是“垂直的”,即服務(wù)是由下層向上層通過層間接口提供的。
“透明”-指存在但看不見的事物
“虛擬”-指看起來存在但實際上不存在的事物
5. 協(xié)議數(shù)據(jù)單元PDU
將(n)層對等實體之間,為實現(xiàn)該層協(xié)議所交換的信息單元稱為協(xié)議數(shù)據(jù)單元PDU (Protocol Data Unit)。通常將第n層的協(xié)議數(shù)據(jù)單元記為(n)PDU。
- 組成
PDU通常由用戶數(shù)據(jù)和協(xié)議控制信息PCI組成
PCI一般作為首部加在用戶數(shù)據(jù)的前面,有時也可作為尾部加在用戶數(shù)據(jù)后,如檢驗和。 - 類型
1.數(shù)據(jù)PDU
2.控制PDU,不攜帶用戶數(shù)據(jù) - 不同的協(xié)議層次的PDU表示法
1.物理層:比特(bit);
2.數(shù)據(jù)鏈路層:幀(frame)或信元(cell);
3.網(wǎng)絡(luò)層 :分組或包(packet)
4.運輸層 :分段(segment)、數(shù)據(jù)報(datagram)
5.應(yīng)用層:消息(message)
6. 服務(wù)數(shù)據(jù)單元SDU
OSI將層與層之間交換的數(shù)據(jù)的單元稱為服務(wù)數(shù)據(jù)單元SDU。
一個(n)服務(wù)數(shù)據(jù)單元就是(n)服務(wù)所要傳送的邏輯數(shù)據(jù)單元。
PDU與SDU的區(qū)別與聯(lián)系:
SDU就是數(shù)據(jù)PDU中的用戶數(shù)據(jù),但不一定是一一對應(yīng)關(guān)系。
可以是多個SDU合成為一個PDU(稱為“拼裝”),也可以是將一個SDU劃分為幾個PDU(稱為“分段”)。
7. 通道
N層中任何兩個協(xié)議實體通過(n-1)SAP所形成的邏輯數(shù)據(jù)通路稱為(n-1)層通道。
n層協(xié)議的通信環(huán)境:
1.用戶應(yīng)用要求
2.(n-1)層通道(Channel)的性質(zhì)
3.n層協(xié)議運行時的操作系統(tǒng)和硬件環(huán)境
通道的類型:
1.空通道-報文的發(fā)送時間和延遲時間為0的通道
2.非緩沖通道-通道中 最多只有一個正在傳送中的報文
3.緩沖通道-允許有多個報文停留的通道
通道性質(zhì):
(n-1)層通道的性質(zhì)對n層協(xié)議的構(gòu)成有非常重要的影響
1.通道的形成方式:
A和B建立并獨占一條連接,此時(n-1)層應(yīng)提供有連接服務(wù)
A和B與其它協(xié)議實體一起共享一條連接
A和B利用(n-1)層提供的無連接服務(wù)進行通信
如果(n-1)層為物理層,A和B可獨占一條物理信道,或共享一條物理信道
2.通道的隊列性質(zhì):
除物理層外,一般可將(n-1)層通道看作是隊列通道。
即一個數(shù)據(jù)報文從n層源端協(xié)議實體發(fā)出之后要在n層以下各層多次存貯轉(zhuǎn)發(fā),在每個存貯轉(zhuǎn)發(fā)處就存在一個隊列。
隊列的主要性質(zhì)是平均隊列長度以及最大隊列允許長度。
隊列越長,那么數(shù)據(jù)報文在通道中的時延就會越大;
如果隊列長度達(dá)到最大允許長度,那么后續(xù)的數(shù)據(jù)報文將會丟失 。
3.回程時延RTT
RTT是從n層源端實體發(fā)出報文到該報文的確認(rèn)信息到達(dá)該實體之間的時間間隔,它包括目標(biāo)實體收到報文之后,對報文進行處理然后發(fā)出確認(rèn)信息的時間。
4.差錯特性
- 參數(shù):
報文的出錯率、報文的丟失率、報文的重復(fù)率、報文失序率 - 差錯特性與它的形成方式有關(guān):
1.如果通道是利用(n-1)層的有連接服務(wù)形成的,那么傳遞的報文不會失序;
2.如果通道是利用(n-1)層的無連接服務(wù)形成的,或是物理信道,則報文的順序就有可能失序。
5.可靠性
通道的可靠性是指通道無故障,如連接中斷、復(fù)位等。
6.報文的最大長度或最大傳輸單元MTU
通道所能接收的最大報文長度。主要影響n層協(xié)議的報文分段、拼接等功能。
7.工作方式
-單工、半雙工、全雙工
-同步與異步
8.通信方式
- 點對點-任意兩個N 層協(xié)議實體利用一條(N - 1)層通道通信,協(xié)同完成指定協(xié)議功能。如TCP連接,UDP點對點方式。
- 點對多點-任意兩個以上N 層協(xié)議實體利用多條(N - 1)層通道通信,協(xié)同執(zhí)行一定的任務(wù)。如ATM的點對多點連接,UDP的廣播方式。
9.安全性
對用戶數(shù)據(jù)加密和安全控制(如口令、權(quán)限)
10.通道的帶寬
通信線路的帶寬也稱通頻帶,用頻率來度量。
通道的帶寬可進一步分為前向帶寬、后向帶寬、峰值帶寬等。
五、協(xié)議提供的服務(wù)
1. 面向連接的服務(wù)
- 三個階段:
連接建立、數(shù)據(jù)傳輸和連接釋放 - 在傳送數(shù)據(jù)時是按序傳送的
- 比較適合于在一定期間內(nèi)要向同一目的地發(fā)送許多報文的情況
- 網(wǎng)絡(luò)層:虛電路服務(wù)
- 永久虛電路:適于兩個用戶需要經(jīng)常進行頻繁的
2. 無連接的服務(wù)
- 不能保證報文的丟失、重復(fù)、失序
- 三種類型:
1.數(shù)據(jù)報-不需要接收端做任何響應(yīng)
2.證實交付(可靠的數(shù)據(jù)報)-對每一個報文產(chǎn)生一個證實給發(fā)放用戶,這個證實來自提供服務(wù)的層。
3.請求應(yīng)答-收端用戶每收到一個報文,就向發(fā)端用戶發(fā)送一個應(yīng)答報文。始于“事務(wù)”中的通信。 - 適于傳送少量零星的報文
3. 思考題
- 面向連接的服務(wù)和無連接服務(wù)的選擇。
答:
強調(diào)數(shù)據(jù)傳輸?shù)耐暾浴⒖煽啃院涂煽刂菩詴r,選擇面向連接的服務(wù)。
強調(diào)數(shù)據(jù)傳輸性能時,選擇無連接的服務(wù)。 - HTTP協(xié)議利用有連接的TCP作為傳輸通道,并不斷建立連接和斷開連接。這樣做的好處與壞處分別是什么。
答:
好處:管理簡單,存在的連接都是有用的連接。一定程度保證完整性、可靠性。
壞處:如果請求過于頻繁,將在TCP的建立與關(guān)閉上浪費時間和帶寬。
六、協(xié)議功能
(N)層協(xié)議為了向上一層提供服務(wù),必須實現(xiàn)一定的功能。
1. 基本的協(xié)議功能的類型
- 連接管理
- 數(shù)據(jù)交換
-- - 差錯控制
- 流量控制
- 擁塞控制
1.1 連接管理
兩種連接:
點對點、點對多點
三種主要功能:
連接建立
雙方協(xié)商工作參數(shù):初始序號
信用量、QoS。協(xié)商失敗則連接建立失敗。
連接釋放
突然釋放-立即關(guān)閉
文明釋放-成功發(fā)送所有數(shù)據(jù)后關(guān)閉
連接維護
如Keep-alive查詢、參數(shù)變更等。
針對延遲的保護措施:
- 如TCP三次握手機制
- 基于時鐘的連接管理方法
1.2 數(shù)據(jù)交換
數(shù)據(jù)的發(fā)送與接收:
- n層協(xié)議接收n層用戶遞交的(n)SDU,將之轉(zhuǎn)換成(n)PDU,從(n-1)層通道發(fā)送出去;
- 反之,它接收(n-1)層通道的(n)PDU,提取其中的(n)SDU,將之轉(zhuǎn)交給n層用戶。
協(xié)議支持的用戶數(shù)據(jù)、類型:
塊數(shù)據(jù)、流數(shù)據(jù)、批數(shù)據(jù)、優(yōu)先數(shù)據(jù)、帶外數(shù)據(jù)、緊急數(shù)據(jù)、編碼數(shù)據(jù)。
實現(xiàn)數(shù)據(jù)傳輸?shù)淖庸δ埽?/h5>
- 對齊
- 分段和合段
- 拼裝和分離
- PDU的裝配與拆裝(封裝/解封裝)
- SDU編碼與解碼
- 加校驗和
以(n)數(shù)據(jù)的全部或部分作為輸入,產(chǎn)生一個固定大小的校驗和作為輸出。
- 抖動補償
使得協(xié)議能接受任何類型的通信量模式的SDU數(shù)據(jù)流作為輸入,產(chǎn)生一個連續(xù)的SDU流作為輸出。
- 帶外數(shù)據(jù)、緊急數(shù)據(jù)的發(fā)送和接收
1.3 差錯控制
以(n)數(shù)據(jù)的全部或部分作為輸入,產(chǎn)生一個固定大小的校驗和作為輸出。
使得協(xié)議能接受任何類型的通信量模式的SDU數(shù)據(jù)流作為輸入,產(chǎn)生一個連續(xù)的SDU流作為輸出。
差錯:丟失、重復(fù)、亂序等。
(n-1)通道提供的數(shù)據(jù)通道的可靠性越高,則n層協(xié)議需實現(xiàn)的差錯控制機制則越少。
- 序號
- 確認(rèn)
- 計時器
- 重傳
序號:
序號是確認(rèn)和重傳的基礎(chǔ),此外序號可用于流量控制。
1)三種不同的產(chǎn)生方式
- SDU序號
對每個SDU都編號,從SDU序號得到PDU的序號。若某個SDU被分段攜帶在多個PDU中,應(yīng)附加一個SDU分段號。 - PDU序號
對PDU連續(xù)編號,不管它們攜帶的SDU的數(shù)據(jù)量。 - 字節(jié)序號
對SDU的每個字節(jié)編號。PDU的序號來自與它所攜帶的SDU的第一個字節(jié)序號和最后一個字節(jié)的序號。
2)如何防止序號重復(fù)
使用一個非常大的序號空間。
使得在數(shù)據(jù)單元從一端到另一端的最大可能延遲時間L內(nèi),所有從源點發(fā)送出去的新數(shù)據(jù)單元都有不同的序號。
3)序號空間的大小與信道特點、確認(rèn)方法、流量控制方法和PDU中的數(shù)據(jù)字段長度有關(guān)
- 如果信道的質(zhì)量比較好,則序號空間要求比較大,從而可以連續(xù)發(fā)送多個數(shù)據(jù)單元,提高協(xié)議效率
- 采用周期性確認(rèn),序號空間就不一定要很大
- 在停止等待協(xié)議中,只需要0和1兩個序號即可
- 一般來說,序號空間的大小與數(shù)據(jù)字段的長度成反比
確認(rèn):
接收者顯式地通知發(fā)送者所發(fā)送的數(shù)據(jù)的接受情況
1) 被確認(rèn)的對象
- PDU
- 字節(jié)
2)確認(rèn)的情況
- 已正確到達(dá)
- 還沒有收到
- 收到但有錯
3)確認(rèn)分為三種類型
- 肯定確認(rèn)(Ack)
- 否定確認(rèn)(Nak)
- 選擇確認(rèn)(Select Ack)
指示收到的和沒收到的PDU
4)兩種發(fā)送方式
在一種協(xié)議中,通常兩種確認(rèn)形式并存。
- 獨立確認(rèn)
使用一個確認(rèn)PDU來攜帶確認(rèn)信息。可隨時發(fā)送。 - 應(yīng)答攜帶
將確認(rèn)信息放在數(shù)據(jù)PDU中發(fā)送,可提高協(xié)議效率,要求接收方有數(shù)據(jù)發(fā)送時才能發(fā)送確認(rèn)。
5)如何標(biāo)識被確認(rèn)的對象
用被確認(rèn)的數(shù)據(jù) PDU或字節(jié)的序號來標(biāo)識
6)累計確認(rèn)
如果否定確認(rèn)或肯定確認(rèn)的語義是表示所給定的序號之前的所有序號(包括或不包括本序號)的數(shù)據(jù)PDU都已被成功地接收了,則該確認(rèn)又稱為累計確認(rèn)。
計時器:
檢測數(shù)據(jù)PDU、確認(rèn)PDU或重傳請求信號的丟失。
1)超時值的設(shè)置
- 依賴于PDU的往返時間RTT
- 使用算法,動態(tài)估計往返時間和定時值
2)計時器超時值設(shè)置不當(dāng)會導(dǎo)致什么后果?
如果超時值設(shè)置太短,連續(xù)大量的數(shù)據(jù)重傳,嚴(yán)重情況下將加劇網(wǎng)絡(luò)的擁塞程度,出現(xiàn)更多數(shù)據(jù)丟失 ;
如果超時值設(shè)置太長,出現(xiàn)數(shù)據(jù)丟失而得不到及時糾正,也會降低協(xié)議的性能。
3)TCP協(xié)議中的計時器
- 重傳計時器
- 堅持計時器
- ?;钣嫊r器
- 時間等待計時器
重傳:
發(fā)送者重傳:
- 由確認(rèn)PDU所指出的數(shù)據(jù)PDU
- 重傳計時器超時仍未收到確認(rèn)的數(shù)據(jù)PDU
1)基于滑動窗口的重傳方法
回退n幀
接收方直接地丟棄所有不按序到達(dá)的數(shù)據(jù)PDU。
發(fā)送方從第一個否定的確認(rèn)或發(fā)生超時的時刻所指出的數(shù)據(jù)PDU的序號開始,重傳所有后續(xù)數(shù)據(jù)PDU。選擇重傳
發(fā)送方只重傳否定確認(rèn)、選擇確認(rèn)和超時的時刻所指出的那些數(shù)據(jù)PDU
1.4 流量控制
指“接收端控制發(fā)送端的數(shù)據(jù)發(fā)送速率以消除接收端緩存溢出的可能性,并使網(wǎng)絡(luò)不致過載”
1)為什么使用流量控制?
- 接收方接受能力有限
- 緩存不夠
- 處理能力不夠
2)舉例
- 停等協(xié)議
- 滑動窗口
1.5 擁塞控制
在某段時間,若對網(wǎng)絡(luò)中某一資源(鏈路容量、交換節(jié)點中的緩沖區(qū)、處理機)的需求超過了網(wǎng)絡(luò)所能提供的可用部分,網(wǎng)絡(luò)的性能就要降低。這種情況就叫做擁塞(congestion)。
1)擁塞控制的主要功能
- 防止網(wǎng)絡(luò)因過載二引起吞吐量下降和延遲增加
- 在互相競爭的各用戶之間公平地分配資源
- 避免死鎖:直接死鎖,重裝死鎖
直接死鎖-由互相占用了對方需要地資源而造成地死鎖。
重裝死鎖-由于分組不完整無法交付給主機產(chǎn)生地死鎖。
2)擁塞控制與流量控制地區(qū)別和聯(lián)系
區(qū)別:
流量控制只在一對給定的發(fā)送方和接收方之間,控制發(fā)送方以不超過接收方處理能力的速率發(fā)送數(shù)據(jù)。
擁塞控制是一個全局性的過程,涉及到網(wǎng)絡(luò)中所有的主機、所有的路由器,以及與降低網(wǎng)絡(luò)傳輸性能有關(guān)的所有因素。
聯(lián)系:
流量控制限制了進入網(wǎng)絡(luò)中地信息總量,可以在一定程度上減緩擁塞地作用。
2. 其他功能
- 無活動控制
- 通信量(流量)監(jiān)控
- 通信量填充(防止通信量分析)
- 通信量整形
- 路由選擇
- 媒體訪問控制
七、協(xié)議元素
協(xié)議三要素
語法、語義、同步
協(xié)議的主體
狀態(tài)-事件轉(zhuǎn)換機制
協(xié)議六元素
并不是所有協(xié)議都必須包含以下六種元素。多個協(xié)議功能組成一個完整的協(xié)議之后,這六種元素一般使必須的。
元素之間的有機聯(lián)系:在什么協(xié)議狀態(tài)下,在什么輸入事件驅(qū)動下,調(diào)用什么協(xié)議過程;協(xié)議過程在什么條件下(謂詞),采取什么協(xié)議動作(操作),輸出什么事件或修改哪些協(xié)議狀態(tài)和變量。
在上述元素中,通常用狀態(tài)變遷表或狀態(tài)轉(zhuǎn)換圖來描述協(xié)議的狀態(tài)、事件、操作和謂詞。
- 服務(wù)原語和服務(wù)原語時序
- 協(xié)議數(shù)據(jù)單元PDU和PDU交換時序
- 協(xié)議狀態(tài)
- 協(xié)議事件
- 協(xié)議變量
- 協(xié)議操作和謂詞
1. 服務(wù)原語及其時序
一般用服務(wù)規(guī)范(Service Specification)來定義和描述N層協(xié)議向外部所提供的服務(wù)。
服務(wù)規(guī)范定義了服務(wù)用戶和服務(wù)提供者之間的交互作用的規(guī)則,包括:服務(wù)原語和服務(wù)原語時序。
N 層協(xié)議的服務(wù)原語和原語參數(shù)詳細(xì)準(zhǔn)確地描述了N層協(xié)議和它的服務(wù)用戶之間的接口。
1)根據(jù)服務(wù)原語對服務(wù)的分類:
1.需要證實的服務(wù)
2.不需要證實的服務(wù)
2)一個完整的服務(wù)原語通常包括
原語名字、原語類型、原語參數(shù)
2. PDU及其時序
N層協(xié)議的PDU從語法和語義上詳細(xì)準(zhǔn)確地定義了n層協(xié)議實體之間交換的信息(PDU編碼格式/協(xié)議使用的詞匯表)。
3. 協(xié)議狀態(tài)
- 局部狀態(tài):單個協(xié)議實體在某時刻的執(zhí)行情況
- 全局狀態(tài):參與執(zhí)行某種協(xié)議功能的所有協(xié)議實體的狀態(tài)總和。包括(n-1)層通道。
N層協(xié)議必須定義所有的協(xié)議狀態(tài)。
4. 協(xié)議事件
1)根據(jù)用途分類
- 輸入事件
a.收到一個PDU
b.收到n層服務(wù)用戶的一條服務(wù)原語
c.內(nèi)部事件(如計時器超時) - 輸出事件
a.發(fā)送一個PDU
b.向n層服務(wù)用戶發(fā)出一條服務(wù)原語
2)根據(jù)事件的作用范圍分類
- 通信事件
收發(fā)服務(wù)原語或收發(fā)PDU,又可分為同步事件和異步事件。 - 內(nèi)部事件:如計時器超時。
3)協(xié)議事件的三個性質(zhì)
- 成對性
指一個事件的發(fā)生總是伴隨著另一個事件的發(fā)生。通信事件成對,內(nèi)部事件不成對。 - 原子性
指事件要么不發(fā)生,一旦發(fā)生就一定完成。
具有原子性的事件被稱為原子事件。 - 時序性
指發(fā)生的事件在時間上是有先后順序的。
事件時序性決定了狀態(tài)的時序性。
5. 協(xié)議變量
保存協(xié)議運行的歷史數(shù)據(jù)、運行參數(shù)的變量,以及協(xié)議機制本身所設(shè)置的變量。
常見的協(xié)議變量:
- 發(fā)送序號變量
- 接受序號變量
- 重發(fā)時間間隔變量
6. 協(xié)議操作和謂詞
每種協(xié)議功能都是通過一組協(xié)議過程的執(zhí)行來實現(xiàn)的。
協(xié)議過程:協(xié)議在輸入事件的驅(qū)動下,在一定條件下,執(zhí)行一系列的操作或動作。
一定條件:
這些約束條件涉及協(xié)議參數(shù)、協(xié)議變量、協(xié)議運行環(huán)境等。將描述這些約束條件的語句稱之為謂詞(predicate)。
這些操作包括:
-產(chǎn)生輸出事件
-清楚和設(shè)置計時器
-修改協(xié)議變量
-改變協(xié)議狀態(tài)
原子過程:
原子過程包含多個協(xié)議操作,并且過程一旦啟動之后,所有包括的操作一次性完成,不經(jīng)歷中間協(xié)議狀態(tài),不被其它過程打斷。
一般來說,在協(xié)議運行時,可將它從一個狀態(tài)到另一個狀態(tài)的轉(zhuǎn)換處理成原子過程。
八、協(xié)議組織
協(xié)議組織是指將相關(guān)協(xié)議功能和協(xié)議元素組成一個完整協(xié)議的過程。
這個過程涉及以下技術(shù)和方法:
- 協(xié)議層次化
- 協(xié)議階段化
- 協(xié)議分類
- 協(xié)議的運行方式
1. 協(xié)議層次化
如果n層協(xié)議的功能和結(jié)構(gòu)仍然很復(fù)雜,可將n層協(xié)議的眾多功能進一步分成多個子層。
子層的劃分可使復(fù)雜協(xié)議的結(jié)構(gòu)變得清晰,有利于協(xié)議的設(shè)計、驗證、實現(xiàn)和測試。但是,子層的劃分可能降低協(xié)議性能。
2.協(xié)議階段化
可將n層協(xié)議分成多個運行階段,每個階段只涉及到一部分協(xié)議功能。如OSI體系結(jié)構(gòu)的運輸層協(xié)議的正常運行被分為三個階段:連接建立階段、數(shù)據(jù)傳輸階段、連接釋放階段。
3.協(xié)議分類
由于不同用戶的需求以及協(xié)議的運行環(huán)境的不同導(dǎo)致協(xié)議的復(fù)雜性。因此,可以將協(xié)議分成不同類別或不同級別,每類協(xié)議只適用于特定用戶和特定環(huán)境,那么復(fù)雜協(xié)議就會變得簡單。
4.運行方式
協(xié)議運行方式有三種:
- 協(xié)議交替 - n層內(nèi)的多個協(xié)議或一個協(xié)議的多個類別或一個協(xié)議的多個協(xié)議功能交替活躍
可在不同時間內(nèi)適用于不同用戶和不同通道的協(xié)議環(huán)境。相比并發(fā)和并行性能低。 - 協(xié)議并發(fā) - 同時活躍,并發(fā)運行
可在同一時間內(nèi)適用多種協(xié)議環(huán)境 - 協(xié)議并行 - 同時活躍,同時運行
協(xié)議性能更好
九、協(xié)議文本
協(xié)議文本是協(xié)議設(shè)計階段的最終結(jié)果。
協(xié)議文本中,最重要、最主要部分是協(xié)議元素的描述。必須對每一項協(xié)議元素作出準(zhǔn)確、清晰、無二義性的定義。此外,協(xié)議的各元素是有機聯(lián)系的,協(xié)議文本應(yīng)清晰表達(dá)這些關(guān)系。
十、協(xié)議設(shè)計方法
1. 設(shè)計原則
- 簡單
- 模塊化
- 有界性
- 健壯性
- 一致性
其中,最基本的是:簡單和模塊化。
2. 分層的原則
- 當(dāng)需要有一個不同等級的抽象時,就應(yīng)當(dāng)有一個相應(yīng)的層次
- 每一層的功能應(yīng)當(dāng)是非常明確的
- 選擇的層與層的邊界應(yīng)該使通過這些邊界的信息量盡量地少
- 難點:層次太少會使每一層協(xié)議太復(fù)雜,太多則在描述和綜合各層的系統(tǒng)時難度較大。
3. 自頂向下的設(shè)計方法
第三章 協(xié)議形式化描述技術(shù)
- 有限狀態(tài)機FSM
- Petri網(wǎng)
- SDL
一、形式化技術(shù)的產(chǎn)生
過去人么習(xí)慣使用自然語言描述協(xié)議。
優(yōu)點:方便易懂
缺點:不嚴(yán)格、不精確、結(jié)構(gòu)不好、沒有描述標(biāo)準(zhǔn)、有二義性。不同的人對協(xié)議描述的理解不同。難以進行驗證、實現(xiàn)和測試自動化。
解決辦法:形式化技術(shù)
是將協(xié)議工程各階段在技術(shù)上銜接起來的紐帶。
形式描述模型FDM
- 狀態(tài)變遷模型:
有限狀態(tài)機FSM
擴展的有限狀態(tài)機EFSM模型
通信有限狀態(tài)機CFSM模型
Carl Adam Petri的Petri網(wǎng) - 時態(tài)邏輯TL
- 進程代數(shù):
通信系統(tǒng)演算CCS(以進程代數(shù)為基礎(chǔ))
通信順序進程CSP(以CCS為基礎(chǔ))
形式描述語言FDL
- ISO制定的Estelle和LOTOS
-
CCITT制定的SDL
……
模型與語言
模型:
對象或系統(tǒng)的抽象(OSI/RM)
描述對象或系統(tǒng)的方法或技術(shù)(FSM/PetriNet)
形式語言:
具有嚴(yán)格的語法和語義;
可精確、完全表述協(xié)議的功能及行為;
以一種或多種數(shù)學(xué)方法或形式模型為基礎(chǔ)。如SDL基于擴展的FSM和抽象數(shù)據(jù)類型。
二、FSM
1. 有限狀態(tài)機FSM的幾個概念
狀態(tài)(State)
指的是對象在其生命周期中的一種狀況,處于某個特定狀態(tài)中的對象必然會滿足某些條件、執(zhí)行某些動作或者是等待某些事件。
事件(Event)
指的是在時間和空間上占有一定位置,并且對狀態(tài)機來講是有意義的事情。事件通常會引起狀態(tài)的變遷,促使?fàn)顟B(tài)機從一種狀態(tài)切換到另一種狀態(tài)。
轉(zhuǎn)換、轉(zhuǎn)移、變遷、遷移(Transition)
指的是兩個狀態(tài)之間的一種關(guān)系,表明對象將在第一個狀態(tài)中執(zhí)行一定的動作,并將在某個事件發(fā)生且滿足某個特定條件時進入第二個狀態(tài)。
動作(Action)
指的是狀態(tài)機中可以執(zhí)行的原子操作,所謂原子操作指的是它們在運行的過程中不能被其他消息所中斷,必須一直執(zhí)行下去。
2. 形式化定義
FSM和非確定FSM,可以看成僅接收輸入并發(fā)生狀態(tài)改變,但無任何輸出的自動機。
對于不確定的有限自動機NFA,其下一時刻狀態(tài)為一個狀態(tài)子集。
3. Moore機和Mealy機
具有輸出的自動機器模型按照輸出的不同分成兩類:
- Moore 機:輸出與狀態(tài)有關(guān)
- Mealy機:輸出與狀態(tài)和輸入有關(guān)
Moore機在接收輸入串的過程中不斷改變狀態(tài)并在每個狀態(tài)上有字符輸出。
Mealy機只是在接收輸入串的過程中不斷改變狀態(tài),并且字符輸出與當(dāng)前狀態(tài)及輸入串有關(guān)。
有限狀態(tài)機可看作是Moore機的一個特例
Moore機可看作是Mealy機的一個特例
4. 如何設(shè)計FSM
- 理解系統(tǒng)的功能:
通過系統(tǒng)的需求與實現(xiàn)的目標(biāo),理解系統(tǒng)的運轉(zhuǎn)過程
可以通過系統(tǒng)的流程圖,劃分出系統(tǒng)的各功能模塊 - 確定FSM的設(shè)計策略
- 整理出系統(tǒng)的全部輸入和輸出
- 構(gòu)造狀態(tài)空間
從系統(tǒng)中抽象出全部的系統(tǒng)狀態(tài),進行狀態(tài)分割,構(gòu)造FSM的狀態(tài)空間 - 明確系統(tǒng)各狀態(tài)之間的遷移關(guān)系
- 明確各狀態(tài)遷移關(guān)系所對應(yīng)的輸入事件與輸出事件
- 確定FSM
畫出系統(tǒng)狀態(tài)遷移圖或狀態(tài)遷移表,明確系統(tǒng)FSM的所有要素 - 狀態(tài)空間簡化
FSM狀態(tài)空間的簡化,盡可能使?fàn)顟B(tài)重復(fù)利用,消除冗余的狀態(tài),簡化設(shè)計,降低系統(tǒng)復(fù)雜度,提高可靠性 - 系統(tǒng)編碼
對輸入、輸出、各狀態(tài)及各狀態(tài)轉(zhuǎn)移關(guān)系根據(jù)設(shè)計策略進行編碼
其它的設(shè)計階段
5. FSM的優(yōu)點
- 簡單性
- 可預(yù)測性
- 易于實現(xiàn)
- 易于測試
6. 停等協(xié)議
將甲乙兩方各自的有限狀態(tài)機合在一起,用一個有限狀態(tài)機來描述整個系統(tǒng)。這回導(dǎo)致狀態(tài)數(shù)目大大增加,因此需要合并一些狀態(tài),考慮一些次要的細(xì)節(jié)。
7. FSM的簡化
- 狀態(tài)層次化
- 使用原子過程
- 使用協(xié)議變量
可大大減少狀態(tài)機的狀態(tài)數(shù)。 - 隱藏內(nèi)部協(xié)同事件
- 簡化通道FSM
如果n層協(xié)議采用同步通信方式,那么不管(n-1)層通道是否是緩沖通道,都可以處理成非緩沖通道;
如果報文傳送時間和延遲時間對協(xié)議機制無影響,或者只影響協(xié)議變量的值,那么非緩沖通道可處理成空通道。
8. FSM的錯誤模型
可達(dá)性分析:
死鎖
活鎖
無限分支
不可達(dá)狀態(tài)
其他:
輸出錯
轉(zhuǎn)移錯
輸出轉(zhuǎn)移錯
9. EFSM
FSM的缺點:
- 處理復(fù)雜問題時可能發(fā)生狀態(tài)空間爆炸
- FSM可以很好地描述狀態(tài)間地遷移特性,但無法很好地描述輸入輸出間地變換特性
- FSM只反映協(xié)議事件和協(xié)議狀態(tài)之間地關(guān)系,不能表達(dá)其他協(xié)議元素
FSM擴展模型地目的:
- 增強FSM描述能力
- 簡化描述
- 使各狀態(tài)之間地變遷清晰化
- 最終提高對局部以至整個模型地描述與分析能力
- 可被用作為以后開發(fā)者描述解決方案地工具
其中,明顯的缺點為:
FSM不能方便地描述對變量地操作
缺少描述任意數(shù)值的傳送能力
從兩個方面對FSM進行擴展:
變量
如果變量的取值范圍是有限的,則變量的加入并沒有增加FSM的計算能力。 可以用有限狀態(tài)機來描述一個取值范圍有限的變量。
優(yōu)點:
變量地引入豐富了FSM地狀態(tài)變遷函數(shù)地表達(dá)能力,還可以減少FSM的狀態(tài)空間引入一組操縱變量地算術(shù)和邏輯操作符
三、PetriNet
Petri網(wǎng)是一種圖形化的數(shù)學(xué)工具,適合于描述和分析并發(fā)、異步、分布式的系統(tǒng),特別便于描述系統(tǒng)中進程或組件的順序、并發(fā)、沖突以及同步等關(guān)系。
Petri網(wǎng)也是一種狀態(tài)變遷模型,它允許同時發(fā)生多個狀態(tài)變遷,因而Petri網(wǎng)是一種并發(fā)模型??捎脕砻枋鐾ㄐ畔到y(tǒng)中各異步組件之間的關(guān)系。
Petri網(wǎng)所處的狀態(tài)是由標(biāo)記的分布來決定的。
1. Petri網(wǎng)形式化定義
2. Petri網(wǎng)的狀態(tài)變遷
發(fā)生變遷的條件:
必須有1個或多個變遷滿足變遷條件
變遷條件:
某個變遷tj的所有輸入位置中都必須有標(biāo)記存在,并且當(dāng)輸入位置有多條弧線指向這個變遷時,該輸入位置也至少具有和弧線數(shù)相等的標(biāo)記數(shù);
所有輸入位置中的標(biāo)記數(shù)都必須大于或者等于該輸入位置指向tj的弧線數(shù)。必須發(fā)生點火
所謂點火就是發(fā)生了一些事件(1個或多個),而這些事件所對應(yīng)的變遷滿足變遷條件。
標(biāo)記移動規(guī)則:
發(fā)生點火后,標(biāo)記要重新分布。
- 從點火的變遷tj的所有輸入位置中均取出標(biāo)記,每個位置取出的標(biāo)記數(shù)等于該位置指向點火的變遷tj 的弧線數(shù);
- 然后再將標(biāo)記送入tj 的所有輸出位置中去,送入每個位置的標(biāo)記數(shù)等于點火的tj 指向該位置的弧線數(shù)。
一個簡單的例子:
狀態(tài)變遷類型:
- 順序變遷
只有t1點火后t2才能點火 - 并發(fā)變遷
t1和t2可同時點火 - 互斥變遷
t1和t2只能有一個點火。一個點火后另一個就不能再點火了。
3. PetriNet的擴充
- 基于標(biāo)記和位置的擴充
一個位置中的不同標(biāo)記用不同的名字或標(biāo)識號來表示——有色Petri網(wǎng) - 基于輸入函數(shù)和輸出函數(shù)的擴充
允許每個位置減少或增加多個標(biāo)記,并再弧線上標(biāo)上增加或減少的標(biāo)記數(shù) - 基于變遷的擴充
在變遷上標(biāo)明謂詞和動作——謂詞-動作Petri網(wǎng)
4. PetriNet的性質(zhì)
- 行為性質(zhì) - 與初始標(biāo)記量有關(guān)的性質(zhì)
- 結(jié)構(gòu)性質(zhì) - 與初始標(biāo)記量無關(guān)的性質(zhì)
行為性質(zhì):
- 可達(dá)性
- 有界性
- 活性
- 可逆性
- 可覆蓋性
- 可持續(xù)性
1)可達(dá)性
- 可達(dá)的
如果存在一系列變遷t1, t2, …, tn的發(fā)生使得Petri網(wǎng)的標(biāo)記向量轉(zhuǎn)換為Mn,則稱標(biāo)記向量Mn是從M0可達(dá)的 。 - 變遷的引發(fā)序列
將M0 t1, M1 t2, M2 t3, …, tnMn稱為變遷的引發(fā)序列,記為σ,或簡記為σ=t1, t2, …, tn。 - 可達(dá)標(biāo)記向量集
所有可達(dá)的標(biāo)記向量形成一個可達(dá)標(biāo)記向量集,一般記為R(M0)。 - 引發(fā)序列集
從M0出發(fā)的所有可能引發(fā)序列形成一個引發(fā)序列集,一般記為L(M0)。
2)有界性
- 有界性
在一個Petri網(wǎng)中,如果存在一個非負(fù)整數(shù)k,使得從M0開始的任一可達(dá)標(biāo)記向量中的位置p上的標(biāo)記數(shù)都不超過k,則稱位置p為k有界。
如果Petri網(wǎng)中每一位置都是k有界的,則稱該Petri網(wǎng)為k有界。
有界性意味著位置中的標(biāo)記數(shù)量不會無限地增加。 - 安全性
如果位置p為1有界,則稱位置p是安全的。如果Petri網(wǎng)中每一位置都是1有界的,則稱該Petri網(wǎng)是安全的。
3)活性
活性:反映的是系統(tǒng)中無死鎖的特性。
- 潛在可引發(fā)的
在一個Petri網(wǎng)中,初始標(biāo)記向量為M0,如果存在一個標(biāo)記向量M∈R(M0)(可達(dá)標(biāo)記向量集),使得變遷t使能(滿足變遷條件),則稱t是潛在可引發(fā)的。 - 變遷在M0下是活的
如果對任何M∈R(M0),變遷t都是潛在可引發(fā)的,則稱t在標(biāo)記向量M0下是活的。即從M0可達(dá)的任一標(biāo)記向量出發(fā),都可以通過執(zhí)行某一變遷序列而最終引發(fā)變遷t。 - Petri網(wǎng)是活的
如果所有變遷t都是活的,則稱該Petri網(wǎng)是活的,或者稱M0是網(wǎng)的活標(biāo)識。
變遷t的活性等級劃分:
L0 - 沒有任何一個變遷序列可以引發(fā)變遷t,即該變遷是“死的”
L1 - 在某些變遷序列中,變遷t至少被引發(fā)一次
L2 - 在某些變遷序列中,變遷t至少被引發(fā)k次
L3 - 在某些變遷序列中,變遷t可無限次被引發(fā)
L4 - 在每個變遷序列中,變遷t至少被引發(fā)一次
4)可逆性
在一個Petri網(wǎng)中,如果存在一個引發(fā)序列σ=t1, t2, …, tn,使得從該Petri網(wǎng)的任一可達(dá)標(biāo)記向量M出發(fā)可以返回到初始標(biāo)記向量M0,則稱該Petri網(wǎng)是可逆的。
5)可覆蓋性
在一個Petri網(wǎng)中,對于標(biāo)記向量M,如果存在一標(biāo)記向量M′,任一位置p,都有:位置p在M′中的分量的值都大于等于該位置在M中的分量的值,則稱標(biāo)記向量M是可覆蓋的。
6)可持續(xù)性
在一個Petri網(wǎng)中,如果對于任何兩個滿足變遷條件的變遷,其中一個變遷被引發(fā)以后,另一個變遷仍然滿足變遷條件,則稱該Petri網(wǎng)是可持續(xù)的。
7)公平性
在一個Petri 網(wǎng)中,對于兩個變遷t1, t2,如果其中一個變遷可以引發(fā) 而另一個變遷不可引發(fā)的這種情況出現(xiàn)的最大次數(shù)是有界的,稱這兩個變遷具有有界公平關(guān)系。
如果該Petri網(wǎng)中,任意一對變遷都存在有界公平關(guān)系,則稱該Petri網(wǎng)為有界公平網(wǎng)。
結(jié)構(gòu)性質(zhì):
- 結(jié)構(gòu)活性
存在活的初始標(biāo)記向量M0 - 結(jié)構(gòu)有界性
Petri對任何初始標(biāo)記向量都有界 - 可重復(fù)性
存在一個初始標(biāo)記向量和一個引發(fā)序列,使得所有變遷被引發(fā)無限次,則稱該Petri網(wǎng)為可重復(fù);
如果使得部分變遷被引發(fā)無限次,則稱該Petri網(wǎng)為部分可重復(fù)。 - 相容性
如果存在一個初始標(biāo)記向量M0和一個引發(fā)序列σ∈L(M0),使得所有變遷至少被引發(fā)一次,則稱該Petri網(wǎng)為相容的;
如果使得部分變遷至少被引發(fā)一次,則稱該Petri網(wǎng)為部分相容的。 - 結(jié)構(gòu)有界公平性
對于任何初始標(biāo)記向量,如果兩個變遷之間總存在有界公平關(guān)系,則稱這兩個變遷具有結(jié)構(gòu)有界公平關(guān)系;
如果一個Petri網(wǎng)對于任何初始標(biāo)記向量都是有界公平的,則稱該Petri網(wǎng)為結(jié)構(gòu)有界公平的 。
5. Petri網(wǎng)在協(xié)議描述中的應(yīng)用
- 停等協(xié)議
-
讀寫
讀寫進程
第四章 協(xié)議形式描述語言(SDL)
SDL是基于擴展有限狀態(tài)機和抽象數(shù)據(jù)類型的混合技術(shù)。SDL既可描述系統(tǒng)的概要設(shè)計,亦可描述系統(tǒng)的詳細(xì)設(shè)計。
一、SDL的三種語法形式
1. 圖形表示的SDL/PR
較適合于描述系統(tǒng)的結(jié)構(gòu)和控制流
2. 用文字短語表示的SDL/PR
較適合于機器處理
3. 程序語言形式的SDL,X.250
二、SDL系統(tǒng)結(jié)構(gòu)
1. 概述
在SDL中,整個系統(tǒng)由多個互連的抽象機(擴展的有限狀態(tài)機FSM)所組成。
每個抽象機的動態(tài)行為由其他抽象機或環(huán)境的交互和對交互數(shù)據(jù)的操作來描述。
SDL/PR使用的主要符號:
2. SDL的靜態(tài)結(jié)構(gòu)
一個SDL應(yīng)用的靜態(tài)結(jié)構(gòu)由系統(tǒng)、功能塊、進程、過程和通道構(gòu)成。
1)系統(tǒng)
規(guī)范所描述的對象稱為一個系統(tǒng)。
根據(jù)系統(tǒng)與環(huán)境之間是否有交互,將系統(tǒng)分為開放的和封閉的。
一個系統(tǒng)的規(guī)范描述由以下部分組成:
所有通道、信號(Signal)、信號表(Signal List)、預(yù)定義的數(shù)據(jù)類型與/或宏(macro)的定義;一個或多個功能塊。
2)功能塊
功能塊含有進程,并用來構(gòu)造系統(tǒng)。功能塊通過通道互連,并通過通道連接到系統(tǒng)邊界。
在描述功能塊時,進程、過程(Procedure)、服務(wù)類型、數(shù)據(jù)類型和信號均可作為功能塊描述規(guī)范的一部分。
3)進程
可保留和處理數(shù)據(jù),數(shù)據(jù)受進程的局部變量(由該進程定義)約束。
利用信號,數(shù)據(jù)值可在進程之間傳送,也可傳送給環(huán)境或從環(huán)境接收。
4)通道
通道充當(dāng)功能塊之間以及功能塊與系統(tǒng)邊界之間傳輸信號的媒介。既可以是單方向的,也可以是雙方向的。
在SDL中,將系統(tǒng)、功能塊、進程等稱為代理。各個代理用塊圖來表示,一個代理可以對應(yīng)多個塊圖。
三、SDL對系統(tǒng)動態(tài)行為的描述
1. SDL的結(jié)構(gòu)化概念
系統(tǒng)中的每一個功能塊由一組進程或一組子功能塊組成,進程間通過信號路由(Signal routes)或功能塊的子結(jié)構(gòu)(Substructure)相連接。
子功能塊又可由一組進程或一組子功能塊組成。這樣可得到一個系統(tǒng)的分級多層描述:功能塊樹 (Tree of Blocks)
2. 動態(tài)行為描述
各功能塊包含若干個進程,SDL系統(tǒng)的動態(tài)行為具體表現(xiàn)為各進程的實例的并發(fā)操作 (Instance,即進程的一次活動,用PId來表示) 。
進程的狀態(tài)與動作是用擴展的FSM來建模的。
1.進程狀態(tài)的變化受外來信號激勵,同時,進程也可向環(huán)境返回響應(yīng)信號。
2.一個進程可同時收到多個信號。
SDL設(shè)置了隊列以暫時存放這些信號(一般采用先進先出的方式)。
3.進程也可自行處理保留信號。
保留信號是指在某些狀態(tài)下需等待其他信號到達(dá)并處理之后才能處理的信號。
四、SDL中的數(shù)據(jù)
在SDL中,數(shù)據(jù)的定義一般基于抽象數(shù)據(jù)類型。
“抽象數(shù)據(jù)類型”是指其定義并不描述(數(shù)據(jù))類型是如何實現(xiàn)的,而僅僅描述當(dāng)將操作符(Operators)應(yīng)用到該類型的數(shù)值上時產(chǎn)生何種結(jié)果。
1. SDL預(yù)定義數(shù)據(jù)類型
SDL定義了一些預(yù)定義的數(shù)據(jù)類型,
如布爾(Boolean)、整數(shù)(Integer)、自然數(shù)(Natural)、實數(shù)(Real)、字符(Character)、字符串(Charstring)、進程標(biāo)識符(PId)、時刻(Time)、持續(xù)時間(Duration)。
此外,SDL還預(yù)定義了一些產(chǎn)生器(Generator),
如數(shù)組(Array)、串(String)、計時器(Timer)和冪集(Powerset)等。
這些預(yù)定義的數(shù)據(jù)類型可在任何級別上的SDL描述中使用。
用戶還可用上述數(shù)據(jù)類型自行定義其他的數(shù)據(jù)類型。
2. 類
在SDL中,類(Sort) 是值的集合。集合中的元素個數(shù)可以是有限的,也可以是無限的,但不能為空。
一般來說,SDL中的數(shù)據(jù)類型定義包括三個部分:類定義,操作符(Operators)定義和等價式(Equations)定義。
1)類定義
例:Boolean類定義
詞
值與操作符的組合構(gòu)成詞等價式
給出規(guī)則,說明給定類中的哪些詞表示同一個值等值類
由值相等的詞所構(gòu)成的集合,稱為等值類。將詞的集合分為多個子集。
第五章 協(xié)議驗證技術(shù)
一、驗證的含義
正確性
完整性
一致性
驗證協(xié)議的實現(xiàn) 一致性測試
Verification 在功能方面驗證
Validation 語法方面驗證
二、驗證的方法
1. 非形式化驗證
主要通過遍歷和代碼檢查
2. 形式化驗證
以形式描述技術(shù)為前提,主要將形式描述技術(shù)與推理技術(shù)結(jié)合。
一方面可以獲得無二義性的協(xié)議規(guī)范,另一方面可以借助計算機輔助工具來幫助實施自動或半自動驗證。
模型檢測
基于狀態(tài)搜索演繹驗證
基于定理證明
1)模型檢測/模型檢查/模型檢驗
本質(zhì)上是用嚴(yán)密的數(shù)學(xué)方法來驗證設(shè)計是否滿足預(yù)設(shè)的需求,從而自動化地發(fā)現(xiàn)設(shè)計中的錯誤。是一種檢查給定模型是否滿足某一邏輯規(guī)則的方法。
基本思想
(1)用狀態(tài)遷移系統(tǒng)(S)表示系統(tǒng)的行為,用模態(tài)/時序邏輯公式(F)描述系統(tǒng)的性質(zhì)。
(2)“系統(tǒng)是否具有某種期望的性質(zhì)”就轉(zhuǎn)化數(shù)學(xué)問題“狀態(tài)遷移系統(tǒng)S是否是公式F的一個模型?”
公式表示:S |= F?過程描述
1.建立模型
2.描述系統(tǒng)性質(zhì)
3.驗證模型檢測方法
最常見方法:可達(dá)性分析、不變性分析
特性:
能給出反例
自動化程度高
問題:
狀態(tài)空間爆炸
2)演繹驗證方法
定理證明方法:
步驟
1.將實現(xiàn)方案和功能描述都轉(zhuǎn)換為一種形式邏輯,如命題邏輯、一階邏輯(First Order Logic, FOL)、高階邏輯(Higher Order Logic, HOL)等
2.建立公理系統(tǒng),作為驗證的依據(jù),并將協(xié)議性質(zhì)構(gòu)造成一組代數(shù)定理
3.根據(jù)公理系統(tǒng),使用定理證明器,通過邏輯推理、邏輯歸約等手段,構(gòu)造證明過程,證明實現(xiàn)方案和功能描述等價問題
入門難,前兩步難
三、協(xié)議性質(zhì)
協(xié)議驗證的最主要任務(wù)是檢查協(xié)議是否滿足規(guī)定的協(xié)議性質(zhì)。
- 一般性質(zhì)
- 特殊性質(zhì)
也有文獻將其分為安全性和活動性。
活動性體現(xiàn)在終止性和進展性兩個方面。
1. 一般性質(zhì)
- 可達(dá)性
- 沒有死鎖
- 沒有活鎖
- 弱活鎖
- 時間相關(guān)的活鎖(臨時阻塞)
- 無狀態(tài)二義性
- 有界性
- 可恢復(fù)性或自同步性
- 互斥性
- 公平性
- 終止或進展
1)可達(dá)性
協(xié)議的各種可能狀態(tài)之間的可達(dá)關(guān)系。
2. 特殊性質(zhì)
- 完整性
- 一致性
3. 一般性質(zhì)和特殊性質(zhì)
協(xié)議驗證著重于一般性質(zhì)
協(xié)議測試著重于特殊性質(zhì)
四、可達(dá)性分析
檢查協(xié)議描述中是否有不可達(dá),死鎖、未定義、活鎖等協(xié)議模型錯誤;包括狀態(tài)窮舉,狀態(tài)隨機枚舉,狀態(tài)概率枚舉等方法。
可達(dá)性分析是最常用的協(xié)議驗證方法,它試圖產(chǎn)生和檢查協(xié)議所有或部分可達(dá)狀態(tài)。
- 全局狀態(tài)(Global state): 協(xié)作的協(xié)議實體以及連接這些協(xié)議實體的通道的整體狀態(tài)。
- 可達(dá)狀態(tài): 指協(xié)議從初始狀態(tài)開始經(jīng)歷有限次變遷之后可到達(dá)的狀態(tài)。
所有可達(dá)狀態(tài)構(gòu)成可達(dá)圖
可達(dá)性分析的三個重要技術(shù):
怎樣找出所有可達(dá)狀態(tài),構(gòu)成可達(dá)圖。
怎樣檢測死鎖、活鎖等協(xié)議錯誤。
怎樣解決狀態(tài)空間爆炸問題。
1. 可達(dá)性分析原理:
采用窮舉法檢查同一層內(nèi)兩個或多個協(xié)議實體間所有可能的交互所產(chǎn)生的全局狀態(tài)。
從一個給定的初始狀態(tài)開始,觸發(fā)所有可能的變遷(用戶命令、超時、消息發(fā)送、接收等),產(chǎn)生新的全局狀態(tài)。
對每一個新產(chǎn)生的狀態(tài)重復(fù)執(zhí)行上述過程直到?jīng)]有新的狀態(tài)產(chǎn)生(某些變遷將導(dǎo)致系統(tǒng)返回到已產(chǎn)生的狀態(tài))。
對于一個給定的初始狀態(tài),這種分析能夠確定協(xié)議可能產(chǎn)生的所有結(jié)果。
2. 可達(dá)性分析算法
- 窮盡性可達(dá)性分析算法
- 受控部分搜索算法
1.限制深度法
2.散開搜索法
3.定向搜索法
4.概率搜索法
5.隨機選擇法 - 隨機模擬算法
1)窮盡性可達(dá)性分析算法
- 深度優(yōu)先與廣度優(yōu)先
當(dāng)發(fā)現(xiàn)一個錯誤時,在廣度優(yōu)先算法中,必須依據(jù)從狀態(tài)集合A 中得到的信息來重構(gòu)從初始系統(tǒng)狀態(tài)開始的路徑。(先進先出, W中無法按執(zhí)行序列保存之前的狀態(tài));
在深度優(yōu)先算法中,一個重要的優(yōu)點是,當(dāng)發(fā)現(xiàn)錯誤時,算法能從初始狀態(tài)開始通過一系列有效的狀態(tài)轉(zhuǎn)換到達(dá)錯誤點。無需重構(gòu)從初始系統(tǒng)狀態(tài)開始的路徑,因為這個序列已被集合W中的堆棧排序中隱含定義了。(先進后出, W中按執(zhí)行序列保存了之前的狀態(tài))。
先廣搜索的優(yōu)點:優(yōu)先發(fā)現(xiàn)執(zhí)行序列短的錯誤狀態(tài);
先深搜索方法的優(yōu)點之一是占用存貯空間小。
假定每個狀態(tài)有兩個后繼狀態(tài),算法執(zhí)行m步之后,對于先深搜索方法,W的長度為m;而對于先廣搜索方法,W的長度為2m。
2)受控部分搜索算法
一般來說,受控部分搜索算法較全局搜索方法有效和可行。但是,這種方法不能保證協(xié)議無錯。通常需要執(zhí)行多次才能得到比較可信的結(jié)果。
3)隨機模擬算法
隨機模擬/隨機遍歷
隨機模擬算法與協(xié)議系統(tǒng)的大小和復(fù)雜性無關(guān),即使是無限大的系統(tǒng),也可以應(yīng)用。因此,對于復(fù)雜的驗證問題,這種算法也許是唯一可用的方法。
4)三種算法的比較
- 窮盡性可達(dá)性分析算法的優(yōu)點在于可以證明協(xié)議中沒有錯誤,但問題在于其應(yīng)用范圍有限。(系統(tǒng)狀態(tài)數(shù)目非常大時可能發(fā)生狀態(tài)空間爆炸/對于復(fù)雜的協(xié)議搜索質(zhì)量會下降)
- 受控部分搜索算法的目的是證明錯誤地存在而不是證明沒有錯誤。它在一定程度上能夠解決空間爆炸問題。其缺點是:協(xié)議中的錯誤的可能位置難以預(yù)測;無法保證其狀態(tài)空間大小與可用內(nèi)存相匹配;有效搜索的部分狀態(tài)空間大小是協(xié)議相關(guān)的,只能通過實驗確定;為了尋找最優(yōu)方法,需要按不同的選擇策略多次驗證。
- 隨機模擬算法與協(xié)議系統(tǒng)的大小和復(fù)雜性無關(guān),即使是無限大的系統(tǒng),也可以應(yīng)用。因此,對于復(fù)雜的驗證問題,這種算法也許是唯一可用的方法。其缺點是沒有明確的終止,無法判斷是否已訪問系統(tǒng)的所有可達(dá)狀態(tài),因此,只能發(fā)現(xiàn)協(xié)議中的錯誤,而不能證明協(xié)議中沒有錯誤。
3. 基于可達(dá)性分析的協(xié)議錯誤檢測
- 死鎖
- 非定義的輸入事件
- 無意義事件
- 活鎖
4. 狀態(tài)空間爆炸問題的解決
- 部分搜索算法
- 部分規(guī)范描述和驗證
- 選擇大的動作單元
- 分解或劃分
- 按斷言來分類狀態(tài)
五、不變性分析
如果一個系統(tǒng)的某個性質(zhì)能用一個確定的邏輯表達(dá)式描述,并且恒為真(不隨系統(tǒng)的狀態(tài)變化或執(zhí)行序列而改變),那么這個性質(zhì)稱為系統(tǒng)的不變性質(zhì),簡稱為系統(tǒng)不變性(system invariance)。
- 協(xié)議不變性分析的兩個工作:
1.完全正確地找出系統(tǒng)的不變性質(zhì)
2.驗證不變性表達(dá)式是否恒為真
1. 不變性分析的途徑
- 不變性證明系統(tǒng)(通常采用歸納法)
- 不變性監(jiān)測系統(tǒng)
1)不變性證明系統(tǒng)
采用歸納法:
驗證初始狀態(tài)的不變性表達(dá)式是否成立;
假定某個狀態(tài)的不變性成立,驗證從該狀態(tài)開始的所有相關(guān)事件過程中不變性是否成立。
2)不變性監(jiān)測系統(tǒng)
借助監(jiān)測軟件和監(jiān)測方法對模擬運行或符號執(zhí)行中的協(xié)議進行不變性校驗的過程稱之為不變性監(jiān)測。
第七章 一致性測試技術(shù)
驗證一項新的協(xié)議實現(xiàn),通常需要進行多項測試。一般要考慮以下四個方面:
一致性測試(conformance testing)
一致性測試旨在檢測所實現(xiàn)的協(xié)議實體(或系統(tǒng))與協(xié)議規(guī)范的符合程度(而驗證則是檢查形式化規(guī)范的邏輯正確性)互操作測試(interoperateability testing)
檢測同意協(xié)議的不同實現(xiàn)版本的互通能力和互操作能力性能測試(performance testing)
非功能測試,主要檢測協(xié)議實體或系統(tǒng)的性能參數(shù)。魯棒性測試(robustness testing)
檢測協(xié)議實體或系統(tǒng)在各種惡劣環(huán)境下運行的能力。
一、 一致性測試與驗證
“一致性測試”的目的是檢查一個給定協(xié)議實現(xiàn)的外部行為是否符合協(xié)議的規(guī)范。
“驗證”檢查形式化規(guī)范的邏輯正確性。
二、 功能測試與結(jié)構(gòu)測試
功能測試
協(xié)議實現(xiàn)是否實現(xiàn)了協(xié)議規(guī)范的所有功能;協(xié)議實現(xiàn)是否可以正確地以與協(xié)議規(guī)范一致的方式拒絕錯誤輸入。
問題:復(fù)雜性;難以標(biāo)準(zhǔn)化。結(jié)構(gòu)測試
協(xié)議實現(xiàn)的控制結(jié)構(gòu)與規(guī)范的結(jié)構(gòu)是否一致。如果二者的狀態(tài)集等價并且狀態(tài)轉(zhuǎn)換相同,則二者具有相同的結(jié)構(gòu)。
問題:無法完全檢查,常需要增加一些限制條件。
三、 一致性測試的前提
假定協(xié)議標(biāo)準(zhǔn)本身是正確的。
通過一致性測試可以給用戶提供兩個信息:
通過了一致性測試的協(xié)議實現(xiàn),具有協(xié)議所要求的各種能力。
在具有代表性的通信實例中,被測試的協(xié)議實現(xiàn)的外部特性與協(xié)議標(biāo)準(zhǔn)的要求一致。
四、一致性測試要求
- 靜態(tài)一致性要求
- 動態(tài)一致性要求
DCR和SCR
動態(tài)一致性是指協(xié)議規(guī)范中規(guī)定的通信實例中的協(xié)議實現(xiàn)所必須呈現(xiàn)的外部特性的組合或允許的各種選擇性組合;
而靜態(tài)一致性是指協(xié)議規(guī)范中為了使協(xié)議實現(xiàn)能夠互連而定義的功能類別、功能單元的分組以及選擇性功能等。
五、一致性測試級別
ISO 9646將協(xié)議一致性測試分為四級,由低到高分別為
- 基本互連測試
- 能力測試
- 行為測試
- 一致性分解測試
行為測試可分兩級:
覆蓋性測試:只要求測試序列歷經(jīng)IUT的所有變遷至少一次即可。
窮盡性測試:要求檢查每個變遷的前后狀態(tài)。
六、一致性測試模型
七、一致性測試流程
八、一致性測試方法
一致性測試方法決定了 測試集的產(chǎn)生和描述方法、測試執(zhí)行系統(tǒng)的結(jié)構(gòu) 等。
ISO 9646中定義了四種標(biāo)準(zhǔn)的抽象測試方法:
- 本地測試法(Local Mehtod)
- 分布式測試法(Distributed Method)
- 協(xié)調(diào)測試法(Coordination Mehtod)
- 遠(yuǎn)程測試法(Remote Method)。
本地測試法:
分布式測試法:
協(xié)同測試法:
遠(yuǎn)程測試法:
上述這幾種測試法是最基本的,適于單層協(xié)議測試,有許多變種,如渡船測試法(Ferry Method)、多方測試法及騎跨式(Astride)測試法等。
九、測試集
測試集包括兩部分:
測試序列
測試數(shù)據(jù)
對同一測試序列的事件施加不同的測試數(shù)據(jù)(即測試事件攜帶不同參數(shù)),就產(chǎn)生不同的測試?yán)?。一個測試序列對應(yīng)多個測試?yán)?/p>
測試集具有層次結(jié)構(gòu):
- 測試集由多個測試組組成。每一測試組覆蓋某一類測試目的。
比較常用的測試組劃分方法是根據(jù)協(xié)議的不同狀態(tài),為每一狀態(tài)的測試目的集合構(gòu)造一個測試組。測試組由多個測試?yán)M成,每一測試?yán)槍δ骋粶y試目的。 - 利用測試步(Test Step) ,可以將測試?yán)K化。所有測試步都是按照測試事件的順序或其它較小的測試步來定義的,因此,全部測試步等效于測試事件的序列。
-
測試事件是測試?yán)蜏y試步的最小單位,是測試步內(nèi)規(guī)范的基本單元。
測試集的層次結(jié)構(gòu)
十、測試表示方法
描述測試系統(tǒng)和IUT的行為。
通用的協(xié)議測試表示方法需滿足的要求:
- 所描述的測試集應(yīng)該是系統(tǒng)獨立的。
- 可以描述任一協(xié)議的一致性測試集。
- 能為測試集的設(shè)計人員提供自動或半自動支持工具以加快測試集開發(fā)過程。
- 降低整個測試集的開發(fā)和維護費用。
- 提高協(xié)議一致性測試集的標(biāo)準(zhǔn)化程度,以增強開放系統(tǒng)之間的互操作性。
- 易于學(xué)習(xí)和掌握,對于測試操作人員而言,易于理解。
描述測試集的方法:
- SDL、ESTELLE、LOTOS
- 編程語言
- 樹型記法、表型記法
易于被測試人員理解。ISO將二者綜合,提出樹表組合記法TTCN。
TTCN:
TTCN提供兩種表示方法:樹型記法和表型記法
樹型記法主要用于描述測試事件之間的時序關(guān)系,即描述協(xié)議的動態(tài)行為。
表型記法主要用于簡化所有靜態(tài)數(shù)據(jù)的表示,如數(shù)據(jù)類型、PDU和ASP的格式、與測試事件相關(guān)聯(lián)的測試判決等等。