• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            旅途

            如果想飛得高,就該把地平線忘掉

            利用WinSock2 SPI進行網絡內容訪問控制

            編者按:與傳統的包過濾防火墻技術不同,本文從應用層網關技術入手,深入探討了利用WinSock2 SPI進行網絡內容訪問控制的問題。這是網絡安全的一項新內容,或者說,它為網絡安全技術的愛好者和研發人員提供了一個新的思路。

            防火墻可以實施和執行網絡訪問策略,但是,傳統的防火墻技術集中于如何防范外部網絡對內部網絡的入侵和攻擊上,而對于如何控制內部用戶對外部網絡的訪問 問題研究不夠深入,相關的控制技術也不多。據權威資料顯示,全球現有大約25萬色情網站,單純依靠傳統的包過濾等防火墻技術,勢必會嚴重影響網絡性能。針 對這一問題,我們從應用層網關技術入手,利用WinSock2 SPI技術,進行了研究和探討。

              Winsock2 SPI原理圖

            Winsock2 SPI(Service Provider Interface)服務提供者接口建立在Windows開放系統架構WOSA(Windows Open System Architecture)之上,是Winsock系統組件提供的面向系統底層的編程接口。Winsock系統組件向上面向用戶應用程序提供一個標準的 API接口;向下在Winsock組件和Winsock服務提供者(比如TCP/IP協議棧)之間提供一個標準的SPI接口。各種服務提供者是 Windows支持的DLL,掛靠在Winsock2 的Ws2_32.dll模塊下。

            對用戶應用程序使用的Winsock2 API中定義的許多內部函數來說,這些服務提供者都提供了它們的對應的運作方式(例如API函數WSAConnect有相應的SPI函數 WSPConnect)。多數情況下,一個應用程序在調用Winsock2 API函數時,Ws2_32.dll會調用相應的Winsock2 SPI函數,利用特定的服務提供者執行所請求的服務。

              Winsock2 SPI允許開發兩類服務提供者——傳輸服務提供者和名字空間服務提供者。“傳輸提供者”(Transport Providers, 一般稱作協議堆棧,例如TCP/IP)能夠提供建立通信、傳輸數據、日常數據流控制和錯誤控制等傳輸功能方面的服務。“名字空間提供者”(Name Space Providers,例如DNS名字解析服務)則把一個網絡協議的地址屬性和一個或多個用戶友好名稱關聯到一起,以便啟用與應用無關的名字解析方案。

            Winsock2 中使用的傳輸服務提供者有兩類:基礎服務提供者和分層服務提供者。基礎服務提供者執行網絡傳輸協議(比如TCP/IP)的具體細節,其中包括在網絡上收發 數據之類的核心網絡協議功能。“分層式”(Layered)服務提供者只負責執行高級的自定義通信功能,并依靠下面的基礎服務提供者,在網絡上進行真正的 數據交換。

            為了進行內部用戶對外訪問控制,我們需要在現有的基礎提供者TCP/IP提供者上設立一個分層式的URL過濾管理者。通過 URL過濾管理者我們可以截獲用戶請求的HTTP數據包中的URL地址,繼而可以通過高效的數據檢索算法(如利用Fibonacci散列函數的哈希表), 在訪問規則庫(被禁止訪問的IP集合)中查找指定的IP,根據結果拒絕或提供訪問服務。

              傳輸服務提供者的安裝方式決定了它不僅是 一個分層提供者,還是一個基礎服務提供者。Winsock 2使用系統配置數據庫配置傳輸服務提供者。配置數據庫讓Winsock2得知服務提供者的存在,并定義了提供的服務類型。要在Winsock2服務提供者 數據庫內成功安裝和管理服務提供者,需要四個函數:WSCEnumProtocols、WSCInstallProvider、 WSCWriteProvider Order、WSCDeInstallProvider。

            這些函數利用WSAPROTOCOL_INFOW結構,對服務提供者數據庫進行查詢和操作。要安裝分層式服務提供者,需要建立兩個 WSPPROTOCOL_INFOW目錄條目結構。一個代表分層提供者(協議鏈長度等于0),另一個將代表一個協議鏈(協議長度大于1),該協議鏈把分層 提供者與一個基礎服務提供者鏈接起來。應該使用現有服務提供者的WSAPROTOCOL_INFOW目錄條目結構的屬性來初始化這兩個結構。

            調用WSCEnumProtocols可以獲得已有的服務提供者的WSAPROTOCOL_INFOW目錄條目結構。初始化之后,首先需要使用 WSCInstallProvider來安裝我們的訪問控制分層服務提供者目錄條目,然后,利用WSCEnumProtocols列舉出所有的目錄條目, 獲得安裝之后為這個結構分配的目錄ID。然后,用這個目錄條目來設置一個協議鏈目錄條目,通過它,將我們的訪問控制服務提供者和另一個提供者(TCP基礎 提供者)鏈接起來。然后再次調用WSCInstallProvider來安裝我們的分層鏈式服務提供者。

              在用 WSCInstallProvider安裝一個服務提供者時,目錄條目自動成為配置數據庫中的最后一個條目。要實現訪問控制就必須使我們的URL過濾服務 提供者成為默認的TCP/IP提供者,必須通過調用WSCWriteProviderOrder函數來完成此項工作,對數據庫中提供者目錄條目進行重新排 序,并把協議鏈目錄條目放在TCP/IP基礎提供者之前。

              Winsock2傳輸服務提供者隨標準的Windows動態鏈接庫模塊 一起執行。我們必須在我們的服務提供者動態鏈接庫模塊中導入DLLMain函數,同時還必須導入一個名為WSPStartup的單一函數條目。我們的 URL過濾服務提供者必須提供對WSPStartup函數和其他30個SPI函數的支持。調用WSAStartup期間,Winsock根據 WSASocket調用的地址家族、套接字類型和協議參數,來決定需要加載哪個服務提供者。只有在一個應用程序通過socket或WSASocket API調用建立一個采用地址家族AF_INET、套接字類型為SOCK_STREAM的套接字時,Winsock才會搜索并加載與之相應的、能夠提供 TCP/IP能力的傳輸服務提供者。WSPStartup的參數UpcallTable取得Ws2_32.dll的SPI函數派遣表,我們的訪問控制分層 服務提供者利用這些函數來管理自身和Winsock2之間的I/O操作。

              我們利用WSPConnect函數來實現訪問控制功能。 在用戶請求HTTP服務時,需要首先建立與目標站點的連接,連接成功后,在此連接基礎上發送HTTP請求數據包。用戶應用程序調用connect或 WSAConnect函數建立連接時,SPI會調用對應的WSPConnect函數:INT WSPAPI WSPConnect(...,const struct sockaddr FAR *name,...,INT FAR *lpErrno)。在sockaddr類型的參數name中包含了用戶將要訪問的目標站點的IP地址信息。我們將name參數傳遞到IP可訪問性判定例 程IPFilter。如果IPFilter函數返回代表授權訪問的結果,我們采用協議鏈命令路由,調用下一層的基礎服務提供者(TCP/IP)來完成連接 請求。如果IPFilter函數返回代表拒絕服務的結果,我們設置lpErrno參數為相應的錯誤碼,然后返回,不進行協議鏈下一層服務提供者的調用,從 而實現訪問控制。

              分層式服務提供者大大發揮了聯網服務的潛能,增強了Winsock的應用,在我們的URL過濾服務中發揮了巨大的作用,基本實現了對內部用戶訪問外部網絡的訪問控制,為用戶提供了對互聯網的健康性的訪問服務。
            (e129)



            posted on 2007-07-29 14:34 旅途 閱讀(870) 評論(0)  編輯 收藏 引用 所屬分類: 網絡技術

            观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 | 亚洲精品无码久久久影院相关影片| 国产免费福利体检区久久 | 伊人热人久久中文字幕| 色8激情欧美成人久久综合电| 狠狠色丁香婷婷久久综合| 久久青青草原精品国产| 亚洲国产精品久久| 一本久久免费视频| 久久e热在这里只有国产中文精品99 | 成人综合伊人五月婷久久| 久久AⅤ人妻少妇嫩草影院| 亚洲精品美女久久久久99小说| 日韩精品久久无码人妻中文字幕 | 色婷婷综合久久久久中文| 国产成人无码精品久久久久免费| 伊人久久亚洲综合影院| AV狠狠色丁香婷婷综合久久| 亚洲国产精品无码久久久久久曰| 久久夜色精品国产欧美乱| 色婷婷狠狠久久综合五月| 久久被窝电影亚洲爽爽爽| 国内精品久久久久影院日本| 久久久久久亚洲精品不卡 | 日本WV一本一道久久香蕉| 91久久精品无码一区二区毛片| 久久久久久久久久久精品尤物| 中文字幕无码久久久| 国内精品伊人久久久久网站| 好久久免费视频高清| 国内精品久久久久久99蜜桃| 97久久国产露脸精品国产| 久久国产色AV免费看| 久久精品国产亚洲AV蜜臀色欲 | 久久精品国产精品亚洲人人 | 久久人人爽人人爽人人片AV东京热| 久久精品成人| 亚洲国产天堂久久久久久| 四虎国产精品免费久久| 一本色道久久88综合日韩精品| 蜜臀久久99精品久久久久久|