摘要:LCS2005服務器應用程序可以通過基於.NET Framework的服務器API對SIP協議棧進行底層訪問,使用這些API開發的服務器應用程序能夠實現諸如自定義消息篩選、基於規則的路由和消息記錄之類的功能。本文檔將從LCS服務器角色、LCS與SIP協議以及爲企業設計的體系架構三方面闡述LCS服務器應用程序的功能及開發。
第一篇 LCS服務器角色
服務器應用程序可以部署在 Live Communications Server 2005 支持的任何或全部服務器角色上。瞭解每個新服務器角色的作用及其在SIP 通信流中的位置對於應用程序的設計和部署都是非常重要的。下面首先了解一下服務器角色的作用及架構。
一、關於每個服務器角色的作用:
Live Communications Server 體系結構由多個角色構成,每個角色提供一種不同的功能。您的環境必須包括前兩種角色之一:Standard Edition 或 Enterprise Edition。它們用於處理 Live Communications Server 的前端操作。這兩種角色在 Live Communications Server 體系結構內充當“主服務器”。所有其他角色都與這兩種前端體系結構組件協同工作。
1、Standard Edition
Live Communications Server 2005 Standard Edition 爲較小的、不太複雜的網絡提供了一種使用狀態服務和 IM 服務的簡便方法。Standard Edition 是一個完全獨立自足的組件,不需要在外部運行 SQL Server。
2、Enterprise Edition
對於需要更高可用性或更大可伸縮性的部署,“主服務器”的概念被分成了兩個不同的部分:Live Communications Server Enterprise Edition,用於管理客戶端連接、狀態和其他實時通信功能(如即時消息);Live Communications Server 2005, 後端數據庫,一種運行 Microsoft SQL Server™ 2000 SP3a 的後端服務器,可以組成羣集。Enterprise Edition Server 與後端數據庫一起構成了池。
什麼是池?
Live Communications Server 2005, 企業版池是一系列連接到中央 Live Communications Server 2005, 後端數據庫的 Enterprise Edition Server。
用戶(客戶端)在企業版池上進行註冊。硬件負載平衡器將用戶定向到池中特定的服務器,該負載平衡器負責向池中的服務器分配負載。負載平衡器公開一個 VIP 地址(虛擬 Internet 協議地址)供客戶端用來訪問池。池中的各臺運行 Live Communications Server 2005 Enterprise Edition 的服務器均負責連接處理、安全性和身份驗證、協議處理以及服務器應用程序。諸如聯繫人列表和 ACL(訪問控制列表)之類的靜態數據作爲永久性數據存儲在 Live Communications Server 2005, 後端數據庫上。客戶端可在某個時刻註冊到一臺服務器上,而在另一個時刻註冊到另外一臺服務器上;或者,客戶端可以具有多臺用戶登錄到的設備(終結點)— 用戶在同一時刻通過不同的服務器登錄到每臺設備。
用戶數據駐留在 Live Communications Server 2005, 後端數據庫(它是一臺運行 SQL Server 2000 的服務器)上。該數據庫包含記錄,這些記錄中保存着上文討論的靜態數據和動態用戶數據(例如終結點及用戶的當前描述);該數據庫還運行着一組存儲過程調用,這些存儲過程調用構成了運行的軟件的核心。池中的 Live Communications Server 通過高速網絡與後端服務器相連接。這些 Live Communications Server 還運行 UR(用戶複製程序)軟件來提供與 Active Directory 的連接,以便在 Live Communications Server 2005, 後端數據庫和 Active Directory 之間同步用戶帳戶信息。
3、Director
Director 是 Standard Edition Server 或 Enterprise Edition Server 的一種特殊配置模式,該模式不用於承載任何用戶。Director 用於對遠程客戶端(企業擁有使用訪問代理服務器從防火牆外部進行連接的用戶)進行驗證和授權,並用於將客戶端路由到它們的主服務器。根據設計,訪問代理服務器不與 Active Directory 進行通信,因此它們只驗證用戶的身份。
4、訪問代理服務器
訪問代理服務器支持聯盟(即與其他組織中的用戶進行通信的能力)或遠程用戶訪問(即用戶從外部位置連接到內部 Live Communications Server 的能力)。訪問代理服務器是一種經過特殊配置的代理服務器,它專用於在外圍網絡運行並已通過測試。訪問代理服務器採用了將網絡的外部邊緣同內部邊緣分開的受限路由規則,並提供了一箇中央平臺來管理和啓用跨組織的基於域的策略。訪問代理服務器不需要 Active Directory,因爲它只管理 SIP 域,不管理用戶。雖然爲 Standard Edition 和 Enterprise Edition 安裝都提供了訪問代理服務器角色,但訪問代理服務器需要 Standard Edition 許可證。
5、代理服務器
Live Communications Server 2005, 代理服務器提供了一個用於自定義部署和應用程序開發的平臺。可以配置靜態路由規則,同時還可以使用 MSPL(Microsoft SIP 處理語言)或託管代碼(例如 C++、C#)編寫更加複雜的路由應用程序。雖然爲 Standard Edition 和 Enterprise Edition 安裝都提供了代理服務器角色,但代理服務器需要 Standard Edition 許可證。
6、存檔服務
存檔服務系統由一臺服務器組成,該服務器包含配置了存檔功能的用戶的存檔即時消息會話。每個承載要存檔的用戶的 Live Communications Server 上都必須啓用存檔。存檔服務使用 SQL 數據庫來存儲存檔信息。利用存檔服務,公司便可以實施那些要求保留即時消息通信的企業或政府策略。
二、服務體系架構
Standard Edition 和 Enterprise Edition Server 共享一個建立在 Winsock(標準 Windows 網絡編程接口)之上的公用分層體系結構。下圖顯示了組成 Live Communications Server 2005 服務器的不同層和組件。
圖 1 Live Communications Server 2005 層和組件
SIP 代理服務器。SIP 代理服務器(也稱爲協議棧或 SIP 棧)是構建所有其他服務的核心協議平臺。它提供了基本的網絡和安全結構,負責執行連接管理、消息頭分析、路由、身份驗證和狀態管理等任務。
用戶服務模塊。用戶服務模塊是 SIP 註冊器和狀態代理服務器。它提供了構建於 SIP 代理服務器之上的高度集成的 IM 和狀態功能,並使用 SQL Server 實現高性能數據訪問。用戶服務需要的配置和安全信息來自 Active Directory。
服務器 API 模塊。服務器 API 模塊爲腳本自定義消息篩選器和路由應用程序提供了基本的腳本功能。腳本既可以在進程中運行,也可以根據需要發送到在單獨的進程中運行的託管代碼應用程序。
內容記錄。內容記錄模塊使記錄通過服務器傳遞的即時消息成爲可能。
第二篇 LCS與SIP
與 HTTP 一樣,SIP 也是一種請求-響應協議。SIP 客戶端是一個代表啓用了 SIP 的用戶生成請求的實體(例如 Windows Messenger 5.1)。SIP 服務器(例如 Live Communications Server 2005)接收請求並生成響應。
一、SIP請求:
Live Communications Server 2005 中使用的 SIP 請求包括但不限於以下各項:
l INVITE:邀請用戶加入 SIP 會話。
l ACK:確認收到對 INVITE 請求的最終響應。
l CANCEL:只要 ACK 請求尚未發出,即可取消掛起的 INVITE。
l BYE:發信號請求終止會話。
l REGISTER:告知 SIP 服務器用戶已登錄或已移動到新位置。
l OPTION:查詢服務器的功能。
l NOTIFY:發送關於發生了特定事件的通知。
l SUBSCRIBE:請求特定用戶信息的通知,例如狀態、最後聯繫人和 ACL(訪問控制列表)。
l SERVICE:輪詢和請求狀態更新並修改聯繫人列表和 ACL。
二、SIP響應類:
範圍
|
響應類
|
100 – 199
|
信息
|
200 – 299
|
成功
|
300 – 399
|
重定向
|
400 – 499
|
客戶端錯誤
|
500 – 599
|
服務器錯誤
|
600 – 699
|
全局失敗
|
每個響應類包含多個狀態代碼(僅以兩個代碼爲例:401“未經授權”或 414“請求 URI 過大”。)
SIP 請求包括一個請求行、若干個標頭和消息正文。請求行包含請求 URI(下一個躍點的地址)和正在使用的協議版本。
SIP 響應在結構上與 SIP 請求相似,但它以狀態行而不是請求行開頭。狀態行包括協議版本、狀態代碼和描述狀態的文本短語。
三、SIP 標頭(注:API增強功能中的“應用程序通信”就是通過添加標頭實現的,後詳)
SIP 標頭傳遞有關請求或響應的信息,在某些情況下,還傳遞有關消息正文的信息。Live Communications Server SIP 代理服務器將檢查消息頭以確定如何處理和路由消息。
Live Communications Server 2005 通常使用下列 SIP 標頭:
l To。某個請求的預期接收者的標識。它採用 SIP URL的格式,其前綴爲“Sip:”,後跟一個“user@domain”格式的字符串。與請求 URI 不同,To 標頭中的 URL 無法改變,而請求 URI 是下一個躍點的地址,可能根據處理消息的每臺服務器而改變。
l From。發送消息的用戶標識。
l Call-ID。特定 SIP 邀請的唯一標識符。
l Contact。與用戶駐留的 SIP 服務器的地址相對應的用戶地址。重定向消息的服務器可以將預期接收者的地址寫在響應客戶端時返回的 Contact 標頭中。然後客戶端不必通過服務器就可以直接聯繫接收者。
l Record-Route。代理消息的服務器可將自己的 URI 添加到 Record Route 標頭中,以表明它希望保留在當前會話中所有後續 SIP 通信的傳輸路徑中。例如,爲了安全起見,Live Communications Server 2005, 代理服務器將它的 Record-Route 標頭插入到所有來自公司分支機構的通信中,以確保所有對這些通信的響應在通過分支機構的防火牆之前都必須通過該服務器返回。
l Route。某個請求的路徑中所有實體的 SIP-URI 列表。收到消息後,每個 Live Communications Server 都立即刪除標識自己的 Route 標頭,並將消息轉發到列表中的下一個 URI(如果有的話)。
l Via。處理了請求的所有 Live Communications Server 的地址。Via 標頭用於將響應定位回客戶端,使用的路徑與發送響應時相同(但方向相反)。服務器也可通過檢查 Via 標頭來確定以前是否處理過請求。
在 Live Communications Server 2005 SIP 網絡中,請求被路由到代表啓用了 SIP 的 Windows 用戶帳戶的終結點。如果 Active Directory 中沒有 URI 的用戶帳戶,則根據靜態路由表或聯盟規則進行路由。
API增強功能之一,應用程序通信。
Live Communications Server 2005 提供了一種機制,可以在多臺相互通信的服務器上部署相同的應用程序。當應用程序收到一個請求時,它可“標記”請求,也就是添加標頭,以通知消息路徑中該應用程序的所有下游實例它已經處理了該請求。Live Communications Server 2005 Enterprise Edition 利用此標記技術使運行在兩臺或更多臺服務器上的應用程序實例能夠進行通信。
參考文檔: Live Communications Server 2005 技術概述