實體、協議、服務和服務訪問點

 實體、協議、服務和服務訪問點

  當研究開放系統中的信息交換時,往往使用實體(entity)這一較爲抽象的名詞表示任何可發送或接收信息的硬件或軟件進程。在許多情況下,實體就是一個特定的軟件模塊。

  協議是控制兩個對等實體(或多個實體)進行通信的規則的集合。協議的語法方面的規則定義了所交換的信息的格式,而協議的語義方面的規則就定義了發送者或接收者所要完成的操作,例如,在何種條件下數據必須重傳或丟棄。

  在協議的控制下,兩個對等實體間的通信使得本層能夠向上一層提供服務。要實現本層協議,還需要使用下面一層所提供的服務。

  一定要弄清楚,協議和服務在概念上是很不一樣的。

  首先,協議的實現保證了能夠向上一層提供服務。使用本層服務的實體只能看見服務而無法看見下面的協議。下面的協議對上面的實體是透明的。

  其次,協議是“水平的”,即協議是控制對等實體之間通信的規則。但服務是“垂直的”,即服務是由下層向上層通過層間接口提供的。.另外,並非在一個層內完成的全部功能都稱爲服務。只有那些能夠被高一層實體“看得見”的功能才能稱之爲“服務”。上層使用下層所提供的服務必須通過與下層交換一些命令,這些命令在OSI中稱爲服務原語。

  在同一系統中相鄰兩層的實體進行交互(即交換信息)的地方,通常稱爲服務訪問點SAP(Service Access Point)。服務訪問點SAP是一個抽象的概念,它實際上就是一個邏輯接口,有點像郵政信箱(可以把郵件放入信箱和從信箱中取走郵件),但這種層間接口和兩個設備之間的硬件接口(並行的或串行的)並不一樣。OSI把層與層之間交換的數據的單位稱爲服務數據單元SDU (Service Data Unii),它可以與PDU不一樣。例如,可以是多個SDU合成爲一個PDU,也可以是一個SDU劃分爲幾個PDU.

  這樣,在任何相鄰兩層之間的關係可概括爲圖i-is所示的那樣。這裏要注意的是,第n層的兩個“實體(n)”之間通過“協議(n)”進行通信,而第n+1層的兩個“實體(n+1)"之間則通過另外的“協議((n+1)”進行通信(每一層都使用不同的協議)。第n層向上面的第n+1層所提供的服務實際上已包括了在它以下各層所提供的服務。第n層的實體對第n+1層的實體就相當於一個服務提供者。在服務提供者的上一層的實體又稱爲“服務用戶”,因爲它使用下層服務提供者所提供的服務。

  

 

  計算機網絡的協議還有一個很重要的特點,就是協議必須把所有不利的條件事先都估計到,而不能假定一切都是正常的和非常理想的。例如,兩個朋友在電話中約會好,下午3時在某公園門口碰頭,並且約定“不見不散”。’這就是一個很不科學的協議,因爲任何一方臨時有急事來不了而又無法通知對方時(如對方的電話或手機都無法接通),則另一方按照協議就必須永遠等待下去。因此,看一個計算機網絡協議是否正確,不能只看在正常情況下是否正確,而且還必須非常仔細地檢查這個協議能否應付各種異常情況。

  下面是一個有關網絡協議的非常著名的例子。

  【例1-1】佔據東、西兩個山頂的藍軍1和藍軍2與駐紮在山谷的白軍作戰。其力量對比是:單獨的藍軍1或藍軍2打不過白軍,但藍軍1和藍軍2協同作戰則可戰勝白軍。現藍軍1擬於次日正午向白軍發起攻擊。於是用計算機發送電文給藍軍2。但通信線路很不好,電文出錯或丟失的可能性較大(沒有電話可使用)。因此要求收到電文的友軍必須送回一個確認電文。但此確認電文也可能出錯或丟失。試問能否設計出一種協議使得藍軍1和藍軍2能夠實現協同作戰因而一定(即100%而不是99.999...%)取得勝利?

  【解】藍軍1先發送:“擬於明日正午向白軍發起攻擊。請協同作戰和確認。”

  假定藍軍2收到電文後發回了確認。

  然而現在藍軍1和藍軍2都不敢下決心進攻。因爲,藍軍2不知道此確認電文對方是否正確地收到了。如未正確收到,則藍軍1必定不敢冒然進攻。在此情況下,自己單方面發起進攻就肯定要失敗。因此,必須等待藍軍1發送“對迫叢的確認”。

  假定藍軍2收到了藍軍1發來的確認。但藍軍1同樣關心自己發出的確認是否己被對方正確地收到。·因此還要等待藍軍2的“對亞叢鮑亞叢的確認”。

  這樣無限循環下去,藍軍1和藍軍2都始終無法確定自己最後發出的電文對方是否已經收到(.圖1-19 )。因此,在本例題給出的條件下,沒有一種協議可以使藍軍i和藍軍2能夠ioo%地確保勝利。

  這個例子告訴我們,看似非常簡單的協議,設計起來要考慮的問題還是比較多的。

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章