摘要:介紹了在數碼監控系統中,運用動態IP實名解析的技術實現高效的遠程實時視頻監控與多級用戶權限管理的功能。
關鍵詞:動態IP實名解析;數碼監控系統;Winsock
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)05-00ppp-0c
1 引言
隨著計算機和網絡技術的飛速發展,尤其是音視頻壓縮與解碼技術的日益成熟,基于Internet的視頻監控系統廣泛應用在政府部門和許多行業,特別是安防領域。在此情形下,高性能數碼監控系統的需求自然成為各應用部門所關心的熱點。
早期的數碼監控系統對于如何遠程進行統一的監控和管理沒有給出一個完整的設計方案,往往存在著以下問題:第一,遠程監控點在網絡上通過TCP/IP協議進行監控時需要知道大量難記的視頻監控服務器的IP地址,不能夠通過實名進行連接,而且這些IP部份是動態分配的,當視頻監控服務器重啟后又會發生變化,遠程監控不能有效實施;第二,沒有統一的用戶和角色管理功能,不能夠統一的進行管理;第三,不能實時分類分區域顯示視頻監控服務器的狀態,有選擇的進行連接,操作復雜。
采用動態IP實名解析的數碼監控系統,為遠程網絡監控提供了全新的理念。實現了基于遠程的分層次的多級角色管理、TCP/IP的點對點、點對多點、多點對多點的遠程實時編碼組播(廣播)和監控、管理的功能。在開發FUTURE DVS2004數碼視訊系統的過程中,利用Visual C++編程工具,結合數據庫技術實現了在數碼監控系統中的動態IP實名解析。
2 IP地址和動態IP的產生
Internet通過TCP/IP協議,在全球范圍內實現不同硬件結構、操作系統、網絡系統之間的互聯。在Internet上,每一個節點都依靠唯一的IP地址互相區分和相互聯系。IP地址構成了整個Internet的基礎,每一臺聯網的計算機通過統一的機構IANA負責對申請的組織分配唯一的網絡ID。
IP地址是一個32位二進制數的地址,由4個8位字節組成,每個字節間用點號隔開,用于標識TCP/IP宿主機。根據網絡ID和主機ID的不同位數規則,可以將IP地址分為A(7位網絡ID和24位主機ID)、B(14位網絡ID和16位主機ID)、C(21位網絡ID和8位主機ID)三類。如表1所示。
表1 IP地址格式

對于大多數撥號上網的用戶,由于其上網時間和空間的離散性,為每個用戶分配一個固定的IP地址(靜態IP)是不可取的,這將造成IP地址資源的極大浪費。動態IP接入方式是指用戶通過虛擬撥號技術動態獲得IP地址來開展上網業務。每次用戶通過普通MODEM或者通過ISDN、ADSL撥號連接Internet時,ISP通常會動態分配給用戶一個公共IP地址。這時候Internet上的其他用戶就可以通過這個IP地址訪問該計算機。但是,因為這個IP地址是動態的,一旦斷線,下次再連接Internet的時候,ISP將會分配另一個不同的公共IP地址。
如果是視頻監控服務器的一方采用了動態IP接入方式,遠程監控點與它進行通信,需要預先知道其IP地址,才能夠在雙方之間建立通信連接。
3 系統硬件結構設計
為了解決上述問題,數碼監控系統的硬件部分增加了實名解析服務器部分。系統硬件結構主要由實名解析服務器、視頻監控服務器、視頻音頻輸入設備、報警輸入輸出設備、客戶端計算機和網絡組成。系統總體結構如圖1 所示。

圖1 數碼監控系統的硬件總體結構
實名解析服務器主要由實名解析掃描模塊、用戶管理模塊組成。通過TCP/IP協議與視頻監控服務器進行實時的通信。實名解析服務器通過Wincock連接實時捕獲視頻監控服務器的IP地址,并將IP地址寫入實名數據庫中。
視頻服務器通過視頻采集卡與視頻音頻設備連接,接受視頻和音頻信號,經采集卡處理后送到顯示器顯示或存儲到硬盤或發送到網絡,接收用戶的操作控制命令并做出相應的處理,并接收遠程客戶端的申請并執行遠程控制命令與來自報警輸入設備的外部觸發信號或輸出報警信號,輸出云臺或鏡頭的控制信號。其中視頻輸入設備主要是攝像機,它將場景采集后輸入到采集卡,音頻輸入設備主要是麥克風,它將聲音信號采集后輸入到采集卡;云臺控制器負責接受從服務器發出的云臺控制信號,實現對攝像頭的轉動或調焦等處理。
監控客戶端主要由遠程視頻音頻管理模塊、遠程云臺控制模塊、網絡控制模塊、存儲管理模塊、遠程回放管理模塊組成。監控客戶端通過分配的帳號和權限登錄實名IP地址解析服務器,登錄成功后從數據庫中獲取視頻監控服務器的實名信息,然后將實名轉化為IP地址連接視頻監控服務器。
4 系統軟件設計
在實名解析過程中,視頻監控服務器和實名解析服務器之間是同過TCP/IP協議來進行通信連接。為了實現實名與IP間的轉化并且實現多角色,多層次的遠程管理,在軟件的設計過程中使用了數據庫技術。為了保證視頻及語音數據在網絡上順暢的傳遞,在IP視頻壓縮協議上采用了H.264視頻壓縮協議。
4.1 Winsock編程模型
Winsock是一套開放的、支持多協議的Windows下的網絡編程接口,是Windows下網絡編程的規范。應用程序通過Winsock的API實現相互之間的通信。Winsock又利用下層的網絡通訊協議功能和操作系統調用實現實際的通訊工作。
套接字是通信的基石,是支持TCP/IP協議的網絡通信的基本操作單元,可以將套接字看作不同主機間的進程進行雙向通信的端點。Winsock編程模型使用兩種套接字,即流套接口和數據報套接字(Socket),流套接口提供了雙向的,有序的,無重復并且無記錄邊界的數據流服務。數據報套接口支持雙向的數據流,但并不保證是可靠,有序,無重復的。
不論是流套接口還是數據報套接字,一般都采用客戶機/服務器方式。在本系統中主要采用了流套接字方式。使用流套接字的服務進程和客戶進程在通信前必須創建各自的套接字并建立連接,服務進程總是先于客戶進程啟動,服務進程首先調用socket函數創建一個流套接字。需要了解幾個重要的函數:
sock(int af,int type,int protocol):創建套接字函數。其中af用于指定網絡地址類型,一般取AF_INET,表示在Internet域中進行通信;type為套接字類型,取流套接字SOCK_STRRAM;Protocol返回或設置套接字所使用的協議(TCP或 UDP),默認為TCP。
bind():將本地地址綁定到所創建的套接字上。
listen():綁定成功后將套接字置入監聽模式并準備接收遠程客戶端的連接請求。該函數僅適用于 TCP 連接。
accept():當進入監聽狀態后,通過應用該函數接收遠程客戶的連接請求。
connect():客戶端向服務器端發送連接請求。
send():將數據發送給遠程計算機
recv():獲取當前的數據塊并將其存儲在字符緩沖區。
closesocket():對客戶機和服務器應用程序關閉 TCP 連接。
4.2 視頻監控服務器端子系統設計
視頻監控服務器端子系統主要由視頻音頻管理模塊、報警輸入輸出模塊、云臺控制模塊、網絡控制模塊、存儲管理模塊、電子地圖模塊、回放管理模塊和系統數據管理模塊組成,服務器通過接口與攝像機相連接,作為視頻監控的主要服務器。
數碼監控系統啟動成功后(無論動態IP還是靜態IP),需要和實名解析服務器進行通信。主要過程是:通過串口讀取加密狗的視頻監控服務器ID號(此號唯一),并對此ID號進行適當的加密補充,啟動Winsock客戶端線程,定時發送視頻監控服務器ID號,將信息通過Winsock發送到實名解析服務器,實名解析服務器對發來的信息進行解碼,再轉換成實際信息,并將IP寫入實名數據庫。實名解析工作流程如圖2所示。

圖2 實名解析工作流程圖
4.3 實名解析服務器端子系統設計
實名解析服務器子系統主要包含三個主要功能:第一,接收視頻監控服務器的發送信息,將IP轉化為對應的實名;第二,實時檢測遠程視頻服務器的活動狀態和通道信息;第三;角色和權限管理功能。實名解析服務器子系統主要由實名解析掃描模塊、用戶管理模塊組成。
實名解析掃描模塊包括實名解析和實時掃描兩個部分。實名解析部分主要通過Winsock實現接收視頻監控服務器發送的信息并獲取Winsock客戶機IP,首先對發送的信息進行解碼并驗證發送的信息是否合法,讀取信息中的視頻服務器發送的視頻監控服務器ID號,然后根據視頻監控服務器ID號檢索數據庫中的實名數據表,將IP地址寫入對應的字段;實時掃描部分主要實現掃描實名數據表中視頻監控服務器的實時連接狀態信息,通過檢索實名數據表中的視頻監控服務器ID號,讀取出對應的IP地址,然后采用UDP協議掃描IP地址,得到視頻監控服務器實時的活動狀態及通道信息,并將信息寫入表中。
用戶管理模塊包括視頻監控服務器的維護和遠程監控用戶管理兩個部分。視頻監控服務器的維護主要用來預先添加監控服務器基本信息;遠程監控用戶模塊主要實現分配遠程監控點的帳號和權限。兩個模塊的管理都是通過數據庫技術實現的,數據庫采用MS SQL Server,通過B/S方式進行管理,Web管理系統采用ASP.NET開發。數據庫主要包含三個數據表,主要結構如表1所示。
表1 系統主要表結構

系統管理員實體表(Login):系統管理員實體表用來分配維護人員的帳號和權限,維護人員通過用戶名和密碼可以通過瀏覽器在遠程訪問實名解析服務器的WEB服務進行驗證,驗證成功后根據用戶權限維護視頻監控服務器的基本信息和客戶端用戶管理兩個模塊。
視頻服務器實體表(UserInfo):視頻服務器實體表用來存儲視頻監控服務器的相關信息。其中ID為視頻監控服務器編號,是唯一合法的標識,它和視頻監控服務器的發送過來視頻監控服務器ID號信息是一致的,也是本數據表的關鍵字。Name字段為視頻監控服務器的實名信息。ID和Name等字段由維護人員人工維護。IP、Channel,Active字段則由實名解析掃描模塊通過TCP/IP接收到的信息自動的進行維護。
客戶端用戶實體表(Role):用來分配遠程監控點的帳號和權限,由系統管理員指定。遠程監控點利用客戶端監控軟件輸入帳號連接實名解析服務器的客戶端用戶實體表,讀取權限范圍內已分配的視頻監控服務器的實名信息,然后選擇相應的實名連接視頻監控服務器。
其中權限分省級、市(地區、州)級、區(縣)級、組級和單個監控服務器級五個不同級別。如果為省級權限,則列出省內所有區域的視頻監控服務器的實名信息。依次類推,直到單個的視頻監控服務器,
4.4客戶端子系統設計
遠程監控點通過分配的帳號可以采用C/S(客戶/服務器)方式和B/S兩種模式進行遠程的監控。C/S模式需要在客戶端安裝客戶端監控軟件;B/S模式基于瀏覽器的視頻監控方式,利用ActiveX控件,監控點通過訪問實名地址解析服務器的Web頁面登錄,自動下載控件注冊,實現零客戶端的遠程監控方式。
兩種模式都需要用戶通過分配的帳號登錄到動態IP實名解析服務器,在客戶端用戶實體表中獲取視頻監控服務器ID號、權限、權限范圍和視頻通道范圍信息。根據其權限,在監控服務器實體表中獲取活動狀態為“True”的省、市(地區、州)、區(縣)、組名、單位名稱和服務器名和IP地址,以樹形結構動態顯示視頻服務器的實名,當用戶雙擊服務器實名時,通過其對應的IP地址與視頻服務器建立連接,在用戶雙擊通道名時,在客戶端輸出音、視頻信息。
5 結束語
數碼監控系統中如何在遠程進行有效的監控與管理是一個比較困難的問題,利用實名IP解析技術可以方便高效地實現監控點遠程的監控與管理,很好地解決了在遠程監控系統多層次、多角色、多監控點進行管理和監控的問題,在實際應用中也取得了很好的效果。
參考文獻:
[1](美)Jones A,Ohlund J.京京工作室,譯.Windows網絡編程技術[M].北京:機械工業出版社,2000.
[2]陳偉,等.Visual C++網絡高級編程[M].北京:人民郵電出版社,2001.
[3]胡曉軍,等.Visual C++高級開發范例解析[M].北京:電子工業出版社,2002.
[4]袁家政.計算機網絡[M].西安電子科技大學出版社,2005.
收稿日期:2007-12-20
作者簡介:汪軍(1975- ),男,湖北武漢人,武漢工業學院網絡中心工程師,研究方向:計算機網絡、數據庫技術;豐洪才(1963- ),男,湖北武漢人,華中科技大學計算機學院博士,武漢工業學院計算機與信息工程系教授,網絡中心主任,研究方向:多媒體技術與網絡、模式識別。