服務類型
服務類型
服務類型欄位用來表示所希望的服務質量,這是由構成Internet的網路進行服務選擇時所提供的一組抽象而籠統的參數。該服務類型是路由器用來為特定網路、下一跳的網路和為網間數據選擇路由的下一個路由器選擇實際的傳輸參數。
服務類型欄位用3比特指明優先順序(precendence),用3比特指明標誌位D、T和R,還有2比特未用。優先順序指出IP報文的優先順序,取值從0~7,0為最低優先順序,7為最高優先順序。D、T、R三位表示IP報文希望達到的傳輸效果,其中D(Delay)表示低延遲,T(Throughput)表示高吞吐率,R(Reliability)表示高可靠性。需要注意的是,服務類型欄位的值只是用戶的要求,對網路並不具有強制性,路由器在進行路由選擇時只把它們作為參考。如果路由器知道有若干條路徑可達到目的節點,則可以選擇一條最能滿足用戶要求的路徑。假設路由器知道有兩條路徑可以到達目的地,一條是低速但價格低廉的租用線路,一條是高速但價格昂貴的衛星線路,則對於D標誌位置1的遠程登錄用戶可選用租用線路,而對於T標誌位置1的文件傳輸用戶可選用衛星線路。目前,ToS欄位主要用於網際網路區分服務。
根據服務具體實現形式的不同,服務可以分為兩種類型,即:面向連接的服務和無連接的服務。這是由於上層對下層服務質量的不同要求而產生的。
連接即是兩個不同系統中的對等實體為實現數據通信而進行的一次合作。以電話系統為例,要與某個人通話,需先拿起電話,撥號,談話,然後掛斷。面向連接的服務要求在兩個實體進行實質性的數據交換之前,必須首先在彼此之間建立連接,在數據交換中維持這個連接,當數據交換結束后,終止這個連接。
面向連接服務具有連接建立、數據傳送和連接釋放3個階段。
建立連接階段,在有關服務原語以及協議數據單元中,必須指明發送端用戶和接收端用戶的完整地址。數據傳送階段,可以使用一個比完整地址的長度短得多的連接標識符,來表示上述的連接關係。
由於在面向連接服務的各個階段,以及在傳送數據時都是按順序進行的,其特性與電路交換有許多相似之處。因此在網路層中又稱面向連接服務為虛電路服務。“虛”表示兩個服務用戶在通信過程中好像自始至終佔用一條端到端的完整物理電路(實際上只是一條邏輯通路)。這種面向連接服務適合於在一定期間內向同一目的地連續發送較多報文的情況。若兩個用戶之間經常需要進行頻繁通信,則可建立永久虛電路。
無連接服務的特性之一是:兩個實體之間的通信不需要事先建立好一個連接。這樣它下一層的有關資源就不必為其預留,而是在數據傳輸時進行動態分配。
無連接服務的另一特徵是:兩個進行通信的實體不需同時處於激活狀態。當發送端實體正在進行數據發送時,必須是活躍的。但此時接收端的實體並不一定是活躍的。只有當接收端實體正在進行數據接收時,它才是必須活躍的。
無連接服務的優點是靈活方便,並比較迅速,但它不能防止報文的丟失、重複或失序。
由於採用無連接服務時,每個報文都必須提供完整的接收端用戶的地址,增大了開銷。因此這種服務比較適合於傳送少量零星報文。
BACnet應用層服務主要是基於“讀/寫”模式,這種模式雖然具有非常簡潔的訪問介面,但有時過於簡單,訪問效率低下。隨著應用的發展,為了提高訪問效率和增強靈活性,就必須對現有的服務類型進行擴展。
根據應用層服務擴展方式可以將應用服務擴展分為兩類擴展:第一類擴展是利用標準服務提供的專用擴展,第二類擴展是定義新的標準服務。
根據應用層服務報文編碼,定義服務類型的BACnetCOnfimedServiceChoice枚舉變數和BACnetUncon“rmedServiceChoice枚舉變數是不允許用戶擴展的,因而用戶不能定義新的應用服務類型來擴展應用服務,只能利用ConfirmedPrivatenansfer和ConfirmedPrivatenansfer標準服務類型提供的擴展功能進行應用服務擴展。前者用於證實服務的擴展,後者用於非證實服務的擴展。這兩個服務提供的擴展方式完全相同,均將擴展所需的VendOr_ID(廠商標識號),service Number(服務號)和service Parameters(服務參數)三個參數作為用戶數據進行編碼。其中service Number為無符號整型數據,這個參數可以作為專用擴展服務的類型編碼。
為了使具有實用性的擴展服務具有普遍性,提高服務的效率,就必須進行第二類擴展,即擴展應用服務的類型並使其標準化。擴展應用服務的類型也非常容易,只是按標準應用服務構造一個新的服務類型,並將其作為標準內容即可。
BACnet標準至今也擴展了多種應用層服務類型,如ReadRange,LifeSafetyOperation,SubscribeCOVProperty服務等。