陳潛
摘要:隨著計算機技術和通信技術日益發達,人工智能應運而生.計算機技術與人工智能的結合能夠進一步地提高信息的處理能力,使得數據的處理更加迅速和精準,能夠解決信息處理過程中遇到的問題以及保障計算機信息的安全性.將人工智能應用在計算機網絡技術中,不僅僅能夠有效地避免計算機在信息處理過程中所遇到的各種問題,還能夠在一定程度上解決計算機網絡技術所面臨的安全性問題,從而促進社會的穩定發展.
關鍵詞:大數據時代;計算機網絡技術;人工智能
中圖分類號:TP393.0? 文獻標識碼:A? 文章編號:1673-260X(2019)02-0046-03
1 引言
人工智能部分主要是以Mosquitto人工智能作為基礎的,Mosquitto這個項目是開源的,我們可以在官網中下載源代碼文件,依據自己的需要增加或者刪除部分功能并部署在自己的服務器上,完成人工智能服務器的搭建.Mosquitto與客戶端進行連接、發布和訂閱消息是通過poll模式完成的.除此之外,消息的topic是被放在訂閱樹中的.假設有訂閱者客戶端來告訴人工智能自己想要訂閱一個topic,那么,人工智能就會查詢整個訂閱樹,找到與訂閱者客戶端訂閱的相符合的topic,并返回給客戶端,這樣就結束了訂閱.大數據的主要目標是實現消息的發布、訂閱和簡單的消息推送,Mosquitto中有些功能是用不到的,在部署軟件的時候把這些功能關閉就可以了,所以我們主要部署的幾處模塊有業務處理模塊、訪問控制模塊、數據加密模塊、主題設計模塊.下面來分別介紹一下他們的工作機制和配置流程.
2 基于大數據時代計算機網絡技術中人工智能的應用
2.1 業務處理模塊配置
Mosquitto業務處理模塊是人工智能的關鍵部分,工作的主要內容是利用Poll模型監督處理socket,Poll機制使用的是I/O多路技能.我們這里使用Poll模型來解決任務,一是因為我們的系統僅僅是個模擬,不需要很多實際的設備,二是這種模型既可以在windows系統下使用,也可以在Linux系統下使用,很方便.
poll模型工作的過程大概有三步:首先,需要建一個數組,而且數組中的所有元素都必須確定好自己的描述符和感興趣的狀態,這個數組的類型是pollfd;接著,在pollfd構造的數組中放一個pollfd結構體,這個結構體是給所有需要被監督狀況的設備建的;然后,所有結構體的情況都會被poll函數實時監測.
業務socket:把目光移到loop_handle_reads_ writes(db,pollfds)這個函數上,可以看到里面含_mosquitto_packet_write(context)和_mosquitto_packet_read(db,context),read函數主要是為了處理從socket中獲取的數據,然后在訂閱樹中放入topic,同時它也會使用3_db_message_insert()將消息放入到context中.Write在這里的作用很簡單,它能夠把需要發送的數據包發送出去.HASH_ITER(hh_sock,db->contexts_by_sock, context,ctxt_tmp)主要被用于查詢業務socket、if(3_db_message_write(db,context)==MOSQ_ERR_SUCCESS)主要被用在確定context中有沒有read函數發來的消息,如果有的話,這些消息就會被以數據包的形式放到消息隊列中.
2.2 訪問控制模塊配置
訪問控制模塊主要想使用戶在自己的權利范圍內,訂閱有關的主題,而不是隨便訂閱自己想要的主題,在Mosquitto這個模塊實現的主要方法是在它的配置文件中,自己寫進去用戶名和想要訂閱的主題,ACL的全稱是訪問控制列表,它對訪問權限進行了一定的限制,主要目的是讓系統更安全.
訂閱者客戶端想要訂閱消息的時候或者發布者客戶端給人工智能發送消息的時候,系統會依據ACL表對這些客戶端實行檢查操作,看看這些客戶端是否有訪問的權利,下面就是ACL表的格式.
1.給指定用戶制定的權限控制規則:user<username>[read/write]<topic>
2.給所有用戶制定的權限控制規則:pattern[read/write]<topic>
read表示的是用戶能夠實現訂閱;write表示的是用戶可以實現發布;空格表示訂閱、發布.主題是從左至右一層一層的進行檢查的,只要符合ACL表格中的任何一項要求,就會通過檢查,它給用戶可以有的最小的權限.
2.3 信息安全模塊配置
2.3.1 SSL/TLS協議
SSL/TLS以TCP協議為底層協議,最早是對Web會話進行保密的.后來使用的范圍越來越大,主要是用來傳輸客戶端和服務器之間需要被驗證的保密的消息.現在這個協議在互聯網方面的使用率非常高,它之所以這么受歡迎是因為它的安全性非常高,基本上可以確保被傳輸的數據的安全性和保密性.它基于TCP協議,為應用供給了安全服務,它可以確保程序的數據是完整的、沒有被修改.
SSL/TLS協議主要供應三種類型的服務:一是對提供服務的客戶端和服務器雙方進行身份認證,確保發送的數據是對的;二是給需要發送的數據做好保密工作,保證第三方不知道上面的內容;三是確保發送的數據完好無損,不會被篡改.
2.3.2 人工智能通信加密方式
人工智能協議采用不同的方法對通信安全提供保障,主要有三個重要名詞:身份、認證和授權.
(1)身份:我們生成一個客戶端時,可以使用一串字符串當作客戶端的識別碼,這個識別碼作為往服務器發送數據的唯一的識別碼,同時他也是表明客戶端身份的一個碼字.同樣的,在生成一個客戶端的時候,人工智能_ConnectOptions的作用是保障用戶的ID號碼是獨一的.同時,ID號不是剛剛生成的客戶端唯一擁有的,別的客戶端也能夠使用這個ID,ID號也是身份確認的一個方式之一.在C語言的接口中,證書所有的內容都是人工智能CIientSSLOption擬定的,負責密鑰和密鑰庫這一塊的是Openssl.
(2)認證:服務器端的證書會被客戶端使用SSL協議進行審核,這個SSL協議是和HTTP協議差不多的.相同的,服務端也可以利用SSL協議對客戶端進行確認,除此之外,它還可以使用密鑰鑰這種認證的方式.雙方都必須進行認證才可以,加入客戶端對服務器端確認了,但另一方卻沒有反過來確認,這個時候的客戶端是不被承認的,它是一匿名的方式存在的.
(3)授權:授權這個操作,它不是包括在人工智能協議中的.網絡之間的消息傳送是人工智能協議管理的,而授權和控制這一塊主要服務器這塊獨立負責的,我們運用服務端的代碼控制授權.Mosquitto項目現在已經能夠對主題的權限進行控制.
2.3.3 產生CA證書
在Mosquitto項目中,給人工智能協議保密用的是SSL/TLS協議.在這個過程中,最重要的一點是要有CA證書,我們是在Linux系統下面配置的,所以用的是Openssl.我們要在這個過程中設一個密碼,這個密碼主要被用在服務端文件的簽字上面.在Mosquitto項目中,對相關的證書配置一下,再改一改config文件中的一些命令就可以產生這個證書了.
Mosquitto默認情況下的端口是1883.使用SSL/TLS協議進行保密后,SSL缺省端口變成8883,我們需要自己在相關的配置文件中手動把端口改成8883.
2.3.4 Mosquitto中的安全配置
mosquitto.conf文件中包含了Mosquitto代理服務器的一些基礎的設置,其他的我們暫時不看,先看一下和安全相關的配置:
(1)psk_int:使用這個性質的時候,TLS協議會被自動的使用在Mosquitto的監測過程中.
(2)psk_le:這個文件中存留了psk鍵值對identity,指定預共享密鑰對放在那個地點.
(3)ciphers:設置被發布服務器使用的加密方法.
(4)allow-anonymous:同意客戶端在連接的時候不透露信息,也就是允許接受匿名的客戶端的連接.
(5)aclfile:這指的是一個開端為userxx的topicACL文件.topic[read/write]
<topic>表示的是用戶可以對這個topic進行哪些操作,這里沒有別的要求,表明用戶既可以完成讀的操作也可以完成寫的操作.假設一個文件的開始不是userxxx,這就是給那些沒有說明自己的用戶名的客戶端用的,用來確定他們有什么權限.同時,pattern模式也支持topic主題匹配:%C代表客戶端的ID;%u代表客戶端的用戶名.系統中分工明確,訂閱主題由誰管理,發布主題是誰負責的,這些都是規定好的.
2.4 狀態監控模塊的配置
在Mosquitto代理服務器中,有這樣一個模塊,它像一個監測器,能夠知道現在運行的程序正處在一個什么樣的狀況.人工智能協議辦理業務方面的事情的時候,應用程序能夠實時地把用戶數量、消息的數量等狀態記住.時間長了以后,所有被統計到一起的數值,就會在主題的模式下發布出去.
這個主題發布的接口為3_db_messages_ easy_queue,在這個種類下,全部的主題都是retain類型的.當用戶想要獲取這類狀態數值的時候,只需要訂閱相應的主題,就能立即得到最新的統計結果.
2.5 人工智能端接口配置
接口的作用是至關重要的,它就相當于是一個橋梁、一個紐帶,連接了一個部分跟另一個部分.大數據的系統由客戶端和代理端構成,它們以人工智能協議為基礎實現相互間的消息的發布/訂閱和消息的簡單推送,各個部分都需要接口.人工智能服務器端我們用的是Mosquitto項目,它的主要的接口是mosquitto_broker.3_packethandle()函數在這里面是負責處理數據的;3_handle_connect()函數是用來和客戶端取得連接的;3_handle_disconnect()的作用和上一個正好相反,它是使已經取得的連接斷掉的.3_handle_publish()是發布消息;3_handle_subscribe()是訂閱消息的主題的.3_handle_unsubscribe()函數也和上面的函數作用相反,它是來取消訂閱的.3_handle_connack()是對消息進行確認的.這些函數主要是放在src文件里面,每個接口的編輯的思想是差不多的,我們這里放了3_packethandle()接口、3_handle_connack()接口的源代碼.
參考文獻:
〔1〕張宏濤.大數據背景下人工智能在計算機網絡技術中的運用[J].電子技術與軟件工程,2018(06).
〔2〕謝曉輝.大數據時代背景下人工智能在計算機網絡技術中的應用研究[J].智庫時代,2017(17).
〔3〕李世鋒.大數據時代人工智能在計算機網絡技術中的應用[J].電子技術與軟件工程,2017(23).