睿文小說 > 電子商務 > 個人防火牆

個人防火牆

⬅ 上一章 📋 目錄 ⚠ 報錯 下一章 ➡
⭐ 加入書籤
推薦閱讀: 花都風流第一兵王 代嫁寵妻是替身 天鋒戰神 穿越古代賺錢養娃 我覺醒了神龍血脈 我的老婆國色天香 隱婚嬌妻別想跑 遲遲也歡喜 全職獵人之佔蔔師

{

\"code\": 200,

\"title\": \"\",

\"content\": \"在計算機計算領域中,防火牆(英文:firewall)是一項協助確保資訊保安的裝置,會依照特定的規則,允許或是限製傳輸的資料通過。防火牆是一台專屬的硬體或是架設在一般硬體上的一套軟體。1.個人防火牆是防止您電腦中的資訊被外部侵襲的一項技術,在您的係統中監控、阻止任何未經授權允許的資料進入或發出到網際網路及其他網路係統。\\n\\n個人防火牆(PersonalFireWall)顧名思義是一種個人行為的防範措施,這種防火牆不需要特定的網路裝置,隻要在使用者所使用的PC上安裝軟體即可。由於網路管理者可以遠距離地進行設定和管理,終端使用者在使用時不必特彆在意防火牆的存在,極為適合小企業等和個人等的使用。\\n\\n個人防火牆把使用者的計算機和公共網路分隔開,它檢查到達防火牆兩端的所有資料包,無論是進入還是發出,從而決定該攔截這個包還是將其放行,是保護個人計算機接入網際網路的安全有效措施。\\n\\n常見的個人防火牆有:天網防火牆個人版、瑞星個人防火牆、360木馬防火牆、費爾個人防火牆、江民黑客防火牆和金山網標等。\\n\\n個人防火牆產品如著名Symantec公司的諾頓、NetworkIce公\\n\\n個人防火牆\\n\\n個人防火牆司的BlackIceDefender、McAfee公司的思科及ZoneLab的free\\n\\nZoneAlarm等,都能幫助您對係統進行監控及管理,防止電腦病毒、流氓軟體等程式通過網路進入您的電腦或在您未知情況下向外部擴散。這些軟體都能夠獨立執行於整個係統中或針對對個彆程式、專案,所以在使用時十分方便及實用。\\n\\n個人防火牆的優缺點\\n\\n優點:成本低,不需要額外的硬體源,可以抵擋內部的攻擊\\n\\n缺點:個人防火牆主要的缺點是對公共網路隻有一個物理介麵,個人防火牆本身可能會容易受到威脅\\n\\n防火牆型別\\n\\n個人防火牆,通常是在一部計算機上具有封包過濾功能的軟體,如ZoneAlarm及WindowsXPSP2後內建的防火牆程式。而專用的防火牆通常做成網路裝置,或是擁有2個以上網路介麵的計算機。以作用的TCP\\/IP堆疊區分,主要分為網路層防火牆和應用層防火牆兩種,但也有些防火牆是同時運作於網路層及應用層\\n\\n網路層防火牆\\n\\n網路層防火牆可視為一種IP封包過濾器,運作在底層的TCP\\/IP協議堆疊上。我們可以以列舉的方式,隻允許符合特定規則的封包通過,其餘的一概禁止穿越防火牆。這些規則通常可以經由管理員定義或修改,不過某些防火牆裝置可能隻能套用內建的規則。\\n\\n我們也能以另一種較寬鬆的角度來製定防火牆規則,隻要封包不符合任何一項“否定規則”就予以放行。現在的操作係統及網路裝置大多已內建防火牆功能。\\n\\n較新的防火牆能利用封包的多樣屬性來進行過濾,例如:來源IP地址、來源號、目的IP地址或號、服務型別(如WWW或是FTP)。也能經由通訊協議、TTL值、來源的網域名稱或網段...等屬性來進行過濾。\\n\\n應用層防火牆\\n\\n個人防火牆\\n\\n應用層防火牆是在TCP\\/IP堆疊的“應用層”上運作,使用瀏\\n\\n個人防火牆覽器時所產生\\n\\n的資料流或是使用FTP時的資料流都是屬於這一層。應用層防火牆可以攔截進出某應用程式的所有封包,並且封鎖其他的封包(通常是直接將封包丟棄)。理論上,這一類的防火牆可以完全阻絕外部的資料流進到受保護的機器裡。\\n\\n防火牆藉由監測所有的封包並找出不符規則的屬性,可以防範計算機蠕蟲或是木馬程式的快速蔓延。不過就實現而言,這個方法既煩且雜(因軟體種類極其繁多),所以大部分的防火牆都不會考慮以這種方法設計。\\n\\nXML防火牆是一種新型態的應用層防火牆。\\n\\n代理服務\\n\\n代理服務(Proxy)裝置(可能是一台專屬的硬體,或隻是普通計算機上的一套軟體)也能像應用程式一樣迴應輸入封包(例如連線要求),同時封鎖其他的封包,達到類似於防火牆的效果。\\n\\n代理會使從外部網路竄改一個內部係統更加困難,且隻要對於代理有良好的設定,即使內部係統出現問題也不一定會造成安全上的漏洞。相反地,入侵者也許劫持一個公開可及的係統和使用它作為代理人為他們自己的目的;代理人偽裝作為那個係統對其它內部機器。當對內部地址空間的用途加強安全,破壞狂也許仍然使用方法譬如IP欺騙(IPspoofing)試圖通過小包對目標網路。\\n\\n防火牆經常有網路地址轉換(NAT)的功能,並且主機被保護在防火牆之後共同地使用所謂的“私人地址空間”,定義在RFC1918\\n\\n防火牆的適當的配置要求技巧和智慧,它要求管理員對網路協議和電腦保安有深入的瞭解,因小差錯可使防火牆不能作為安全工具。\\n\\n發展背景\\n\\nInternet的出現及其迅速發展給現代人的生產和生活都帶來了\\n\\n個人防火牆\\n\\n個人防火牆前所未有的飛躍,它促進了資訊的廣泛交流,大大提高了工作效率,豐\\n\\n富了人們的精神生活。然而,隨著計算機網路技術的突飛猛進,網路安全的問題已經日益突出地擺在各類使用者的麵前,網路的安全性成為Internet上最為熱門的焦點之一,它關係著Internet的進一步發展和普及,甚至關係著Internet的生存。隨著網路安全問題日益嚴重,網路安全產品逐漸被人們重視起來。防火牆作為最早出現的和使用量最大的網路安全產品,受到了使用者和許多研發機構的青睞。防火牆對網路係統具有很好的保護作用。它通過對流經它的網路資訊進行監控以實現安全防護。比如用禁止特定的方法設定對外通訊來防止木馬;或者禁止來自特殊站點的訪問,從而防止來自入侵者的所有通訊。從應用角度來看防火牆基本上可以分為網路級的防火牆和個人防火牆兩種。目前個人使用者對網路安全的需要在不斷增加,而Windows操作係統是使用最為廣泛的PC操作係統,因此如何在Windows操作係統下開發個人防火牆變的越來越重要了。個人防火牆就是一個位於計算機和它所連線的網路之間的軟體。該計算機與網路的所有通訊均要經過此防火牆。目前在Windows操作係統下比較著名的防火牆有國外的ZoneAlarm,NortonPersonalFirewall以及SygatePersonalFirewall等,國內的有天網防火牆等產品。個人防火牆有很多優點:它能對公共網路中的單個係統提供保護;它不需要額外的硬體資源就能增加對係統的保護;它在抵擋外來攻擊的同時,還可以抵擋來自內部的攻擊;另外,它的價格相對來說十分的便宜。尤其是對一個使用Modem或ISDN\\/ADSL上網的家庭使用者來說,一個硬體防火牆實在是太昂貴了或者太麻煩了(需要煩瑣的配置),而使用個人防火牆足以能夠隱蔽使用者暴露在網路上的資訊,對其提供足夠的安全保護\\n\\n產品\\n\\n個人防火牆產品如著名Symantec公司的諾頓、NetworkIce公司的BlackIceDefender、McAfee公司的思科及ZoneLab的freeZoneAlarm等,都能幫助您對係統進行監控及管理,防止特洛伊木馬、spy-ware等病毒程式通過網路進入您的電腦或在您未知情況下向外部擴散。這些軟體都能夠獨立執行於整個係統中或針對對個彆程式、專案,所以在使用時十分方便及實用。\\n\\n理論背景\\n\\n3.1Windows2000元件\\n\\n在Windows2000操作係統環境中,一部分元件執行在使用者模式\\n\\n個人防火牆\\n\\n個人防火牆下,其他的則執行在核心模式下。檔案係統、中間層和最低層驅動程式\\n\\n被顯示在下方圖,其中包含了核心模式I\\/O管理器。如下圖所示,Windows2000操作係統包括了許多核心模式元件,它們被精心地定義為功能相互獨立的元件。核心I\\/O管理、即插即用管理(PlugandPlayManager)、電源管理(PowerManager)、硬體抽象層(HardwareAbstractionLayer,HAL)、配置管理(ConfigurationManager)、儲存管理(MemoryManager)、執行支援(ExecutiveSupport)和過程結構(ProcessStructure)元件。其他元件可包括物件管理(ObjectManager)和安全引用監控器(SecurityReferenceMonitor)。即插即用(PnP)管理和電源管理是Windows2000中的新元件。他們僅僅支援Windows2000驅動程式和WDM驅動程式。\\n\\n3.2Windows2000中的驅動程式種類\\n\\n1)在Windows2000操作係統中,有兩個基本的驅動程式種類。\\n\\nA.使用者模式驅動程式(例如Win32VDD,它是為MS-DOS應用程式開發的專用裝置)或另一個被保護的子係統的驅動程式,並且使用者模式驅動程式是與子係統細節相關的。\\n\\nB.針對邏輯、虛擬或物理裝置的核心模式驅動程式。\\n\\n這些驅動程式作為WindowsNT執行體部分來執行:WindowsNT是基礎的、基於微核心的操作係統,它支援一個或更多的保護子係統。一些Windows2000核心驅動程式也是WDM驅動程式,它們符合Windows驅動程式模型(WDM)。所有的WDM驅動程式是PnP驅動程式,並支援電源管理。\\n\\n核心模式驅動程式型別有三種基本型別的核心模式驅動程式。每一種都有稍微不同的結構和完全不同的功能。\\n\\na.最高層驅動程式,例如係統支援的FAT、NTFS和CDFS檔案係統驅動程式(FSD)。最高層驅動程式通常依賴於較低層的驅動程式支援。雖然特定的檔案係統驅動程式可能從一個或多箇中間層驅動程式獲得支援,但是每個檔案係統驅動程式最終依賴一個或多個下層外圍裝置驅動程式的支援。\\n\\nb.中間層驅動程式,例如虛擬磁碟、映象、或指定裝置型別的類\\n\\n個人防火牆\\n\\n個人防火牆驅動程式。中間層驅動程式也需要較低層驅動程式的支援。例如,PnP\\n\\n功能驅動程式是中間層驅動程式,它們在一個I\\/O匯流排上控製特定的外圍裝置,這個I\\/O匯流排是由PnP硬體匯流排驅動程式來控製的。\\n\\nc.最低層驅動程式,例如PnP硬體匯流排驅動程式,它控製一個I\\/O匯流排,這個匯流排連了一些外圍裝置在上麵。最低層驅動程式不依賴於較低層驅動程式,而是控製物理外圍裝置。\\n\\n3.3核心模式驅動程式的網路結構\\n\\n微軟的Windows2000支援三種基本的核心模式網路驅動程式\\n\\n1)微NIC驅動程式。一個微的驅動程式直接控製一個網路介麵卡(NIC),並且為高層的驅動程式提供介麵。\\n\\n2)中間層驅動程式。一箇中層協議驅動程式連線了上層協議,例如早期的傳輸驅動程式和一個微。開發中層協議驅動程式的一個普遍原因是用它在早期的傳輸驅動程式和一個微之間實現轉換。一個微控製了一個NIC,對於傳輸驅動程式來說,它是一個陌生的新介質型別。\\n\\n3)協議驅動程式。一個上層協議驅動程式向網路使用者提供服務,它實現了TDI介麵,或者也許是為另一個上層的特殊應用而提供的介麵。這種驅動程式在它的下邊界提供了一個協議介麵,用來向低層驅動程式傳送和接收資料包。\\n\\n主要功能\\n\\n網路資料包處理、安全規則和日誌。\\n\\n⑴網路資料包處理\\n\\n在Internet上,所有往來的資訊都被分割成許許多多一定長度的信\\n\\n個人防火牆\\n\\n個人防火牆息包,資訊包的包頭包括IP源地址、IP目標地址、內裝協議(TCP、UDP、\\n\\nICMP、或IPTunnel)、TCP\\/UDP目標、ICMP訊息型別、包的進入介麵和出介麵等資訊。個人防火牆會檢查所有通過的資訊包中的包頭資訊,並按照使用者所設定的安全過濾規則過濾資訊包。如果防火牆設定某一IP為危險的話,從這個地址而來的所有資訊都會被防火牆遮蔽掉。由此可見,個人防火牆核心技術是實現在Windows操作係統下的網路資料包攔截。\\n\\n⑵安全規則設定\\n\\n防火牆的安全規則就是對計算機所使用的區域網、網際網路的內製協議進行設定,使網路資料包處理模組可以根據設定對網路資料包進行處理,從而達到係統的最佳安全狀態。個人防火牆軟體的安全規則方式可分為兩種:一種是定義好的安全規則。就是把安全規則定義成幾種方案,一般分為低、中、高三種,這樣不懂網路協議的使用者,也可以根據自己的需要靈活的設定不同的安全方案。還有一種就是使用者自定義的安全規則。這需要使用者在瞭解了網路協議的情況下,根據自己的安全需要對某個協議進行單獨設定。\\n\\n⑶日誌\\n\\n日誌是每個防火牆軟體必不可少的主要功能,它記錄著防火牆軟體監聽到發生的一切事件,比如入侵者的來源、協議、、時間等等。日誌的實現比較簡單,將監聽到的事件資訊寫入檔案即可。\\n\\n攔截資料的型別\\n\\n使用者態(user-mode)和核心態(kernel-mode)。\\n\\n1)使用者態(user-mode)。\\n\\n在使用者態下進行網路資料包的攔截有三種方法:WinsockLayeredServiceProvider(LSP)、Windows2000包過濾介麵、替換係統自帶的WINSOCK動態連線庫。在使用者態下\\n\\n個人防火牆\\n\\n個人防火牆進行資料包攔截最致命的缺點就是隻能在Winsock層次上進行,而對於網\\n\\n絡協議棧中底層協議的資料包無法進行處理。因此,這些方法並不適合個人防火牆。2)核心態(kernel-mode)。\\n\\na)TDI過濾驅動程式(TDIFilterDriver)。當應用程式要傳送或接收網路資料包的時候,都是通過與協議驅動所提供的介麵來進行的。協議驅動提供了一套係統預定義的標準介麵來和應用程式之間進行互動。因此,隻需要開發一個過濾驅動來截獲這些互動的介麵,就可以實現網路資料包的攔截。當應用程式要傳送或接收網路資料包的時候,都是通過與協議驅動所提供的介麵來進行的。協議驅動提供了一套係統預定義的標準介麵來和應用程式之間進行互動。在Windows2000\\/NT下,ip,tcp,udp是在一個驅動程式裡實現的,叫做tcp.sys,這個驅動程式建立了5個裝置:DeviceRawIp,DeviceUdp,DeviceTcp,DeviceIp,DeviceMULTICAST。應用程式所有的網路資料操作都是通過這些裝置進行的。因此,我們隻需要開發一個過濾驅動來截獲這些互動的介麵,就可以實現網路資料包的攔截。另外,TDI層的網路資料攔截還可以得到操作網路資料包的程序詳細資訊,這也是個人防火牆的一個重要功能。但是,TDI傳輸驅動程式有一個缺陷,TDIFilterdriver屬於Upperdriver,位於TcpIP.sys之上,這就意味著由TcpIP.sys接收並處理的資料包不會傳送到上層,從而無法過濾某些接收的資料包,例如ICMP包。ICMP的應答包直接由TcpIP.sys生成並迴應,而上麵的過濾驅動程式全然不知。另外,該方法需要在係統核心層編寫驅動程式,需要編寫人員對Windows操作核心層的工作機製非常熟悉,同時,驅動程式對程式碼質量要求非常高,稍有不慎就會使係統崩潰,\\n\\nb)Win2kFilter-HookDriver。這是從Windows2000開始係統所提供的一種驅動程式,該驅動程式主要是利用Ipfiltdrv.sys所提供的功能來攔截網路資料包。Filter-HookDriver的結構非常簡單,易於實現。但是正因為其結構過於簡單,並且依賴於Ipfiltdrv.sys,Microsoft並不推薦使用Filter-HookDriver。\\n\\nc)NDISHookDriver。該方法在Windows2000\\/xp下是非公開的,因此這種方法對平台的依賴性比較大,需要在程式中判斷不同的操作係統版本而使用不同的方法。\\n\\nd)NDIS中間層驅動程式(NDISIntermediateDriver)。NDIS(NetworkDriverInterfaceSpecification)是Microsoft和3Com公司開發的網路驅動程式介麵規範的簡稱,它支援如下三種型別的網路驅動程式:微驅動程式、中間層驅動程式(IntermediateDriver)和協議驅動程式。其中中間層驅動介於協議層驅動和小驅動之間,其功能非常強大,可以提供多種服務,能夠截獲所有的網路資料包(以太幀),過濾微驅動程式,實現特定的協議或其他諸如資料包加密、認證等功能。綜上所述,在NDIS中間層進行網路資料包截獲的方法結構規範,功能強大,該技術極其適合個人防火牆所采用。\\n\\n中間層驅動程式(NDIS)的內部結構\\n\\nNDIS支援3種驅動:微驅動,中間層驅動和協議驅動。1)微驅動。就是網絡卡驅動,它負責管理網絡卡,包括通\\n\\n個人防火牆\\n\\n個人防火牆過網絡卡傳送和接受資料,它也為上層驅動提供介麵。\\n\\n2)中間層驅動。它通常位於微驅動和傳輸協議驅動之間,是基於鏈路層和網路層之間的驅動,由於中間層驅動在驅動層次中的中間層位置,它必須與其上層的協議和下層的微驅動通訊,並且匯出兩種協議的函式。雖然中間層驅動匯出MINIPORTXX函式,但它並不真正的管理物理網絡卡,而是匯出一個或者多個虛擬介麵卡,上層協議可以繫結到上麵。對於協議驅動來說,中間層匯出的虛擬介麵卡看起來像一個物理網絡卡,當它向這個虛擬介麵卡傳送封包或者請求時,中間層驅動將這些封包和請求傳播到下層微驅動;當下層微驅動向上指示接收封包或者狀態時,中間層驅動向上到繫結虛擬介麵卡上的協議驅動。中間層驅動的主要作用就是過濾封包,其優點是能夠截獲所有的網路資料包。\\n\\n3)協議驅動,即網路協議。它位於NDIS體係的最高層,經常用作實現傳輸協議堆疊的傳輸驅動中的最底層驅動。傳輸協議驅動申請封包,從傳送應用程式將資料複製到封包中,通過呼叫NDIS函式將這些封包傳送到下層驅動。協議驅動也是提供了一個協議介麵來接收來自下層驅動的封包。傳輸協議驅動將收到的封包傳遞給相應的客戶應用程式。在下層,協議驅動與中間層微驅動互動。協議驅動呼叫NDISXX函式傳送封包,讀取和設定下層驅動維護的資訊,使用操作係統服務。協議驅動也要匯出一係列的入口點,NDIS呼叫它來指示封包的接受,指示下層驅動的狀態,或者是和其他協議驅動的通訊。\\n\\n中間層內部的工作流程\\n\\n1)中間層對資料包的管理\\n\\n中間層驅動程式從高層驅動程式接收資料包描述符,並在網路上傳送,該包描述符與一個或多個鏈式資料緩衝區相關聯。中間層驅動程式能夠對資料進行重新打包,並使用新的資料包描述符進行資料傳輸,也可以直接將資料包傳遞給低層驅動程式,如果驅動程式下邊介麵向無連線,可呼叫NdisSend或NdisSendPackets函式完成該功能,如果驅動程式下邊界是麵向連線的,可呼叫NdisCoSendPackets函式完成此項功能。中間層驅動程式也可以進行一些操作改變鏈式緩衝區的內容,或者調整內入資料包相對於其他傳送任務的傳送次序或傳送定時。但是,即使中間層驅動程式隻是向下層傳遞上層引入的資料包,例如,僅僅隻是對資料包進行計數,也必須分配新的資料包描述符,並且要管理部分或者全部新的包結構。\\n\\n每一箇中間層驅動程式都必須分配自己的包描述符來代替高層的資料包描述符。如果中間層驅動程式要把資料包從一種格式轉化為另一種格式,也必須分配緩衝區描述符來對映用於複製轉配資料的緩衝區,該緩衝區由中間層驅動程式進行分配。如果有與複製的包描述符相關的OOB資料,那麼可以將這些資料複製到與包描述符(中間層驅動程式分配的)相關的新OOB資料塊,其過程是,首先,用NDIS_OOB_DATA_FROM_PACKET宏獲取OOB資料區的指標,然後,呼叫disMoveMemory將其內容移入與新包描述符相關的OOB資料區。該驅動程式也能夠用NDIS_GET_PACKET_XXX或NDIS_SET_PACKET_XXX宏從與老的包描述符相關的OOB資料區中,讀取相關的內容,並寫入與新包描述符相關的OOB資料區。\\n\\n包描述符通過呼叫以下NDIS函式進行分配\\n\\na)呼叫NdisAllocatePacketPool或者NdisAllocatePacketPoolEx,為固定尺寸包描述符(由呼叫器指定數量)分配並初始化一組非可分頁池。\\n\\nb)呼叫NdisAllocatePacket函式,從NdisAllocatePacketPool(Ex)已經分配的池中分配包描述符。根據中間層驅動程式目的的不同,驅動程式能夠對引入包描述符連線的緩衝區進行重新打包。例如,中間層驅動程式可以在接下來的情況下分配包緩衝池、對引入包資料重新打包.如果中間層驅動程式從高層協議驅動程式接收到的資料緩衝區,比低層介質能夠傳送的單個緩衝區更大,那麼中間層驅動程式必須將引入的資料緩衝分割成更小的、滿足低層傳送要求的資料緩衝。中間層驅動程式在將傳送任務轉交低層驅動程式之前,可以通過壓縮或加密資料方式來改變內入資料包的長度。呼叫以下NDIS函式分配上麵所要求的緩衝區:\\n\\nNdisAllocateBufferPool獲取用於分配緩衝區描述符的控製程式碼;\\n\\nNdisAllocateMemory或NdisAllocateMemoryWithTag分配緩衝區;\\n\\nc)呼叫NdisAllocateBuffer分配和設定緩衝區描述符,對映由NdisAllocateMemory(WithTag)分配的緩衝區,並連結到NdisAllocatePacket分配的包描述符上。驅動程式可以通過呼叫NdisChainBufferAtBack或NdisChainBufferAtFront函式,將緩衝區描述符和包描述符進行連結。呼叫NdisAllocateMemory(WithTag)返回的虛擬地址和緩衝區長度,將被傳遞給NdisAllocateBuffer函式來初始化其所對映的緩衝區描述符。符合典型要求的包描述符能夠在驅動程式初始化時根據要求進行分配,也可以通過ProtocolBindAdapter函式呼叫來實現。如果必要或者出於效能方麵的考慮,中間層驅動程式開發者可以在初始化階段,分配一定數量的包描述符和由緩衝區描述符對映的緩衝區,這樣,就為ProtocolReceive複製內入資料(將向高層驅動程式指示)預先分配了資源,也為MiniportSend或MiniportSendPackets向相鄰低層驅動程式傳遞引入的傳送資料包,準備了可用的描述符和緩衝區。如果在中間層驅動程式複製接收\\/傳送資料到一個或多個緩衝區時,最末的一個緩衝的實際資料長度比緩衝區的長度小,那麼,中間層驅動程式將呼叫NdisAdjustBufferLength把該緩衝區描述符調節到資料的實際長度。當該包返回到中間層驅動程式時,應再次呼叫該函式將其長度調節到完整緩衝區的實際尺寸。\\n\\n2)下邊介麵向無連線的中間層驅動程式的工作流程\\n\\n通過ProtocolReceivePacket函式,從低層NIC驅動程式以完整資料包形式接收內入資料,該資料包由NDIS_PACKET型別的包描述符指定,也能夠通過將內入資料指示給ProtocolReceive函式,並將資料複製到中間層驅動程式提供的資料包中。下邊介麵向連線的中間層驅動程式總是用ProtocolCoReceivePacket函式,從低層NIC驅動程式接收資料作為一個完整的資料包。\\n\\n在如下情況下,中間層驅動程式能夠保持對接收資料包的所有權:當下邊介麵向無連線的中間層驅動程式向ProtocolReceivePacket函式指示完整資料包時,當下邊介麵向連線的中間層驅動程式向ProtocolCoReceivePacket函式指示資料包時,其中DIS_PACKET_OOB_DATA的Status成員設定為除NDIS_STATUS_RESOURCES以外的任何值。在這些情況下,中間層驅動程式能夠保持對該包描述符和其所描述的資源的所有權,直到所接收資料處理完畢,並呼叫NdisReturnPackets函式將這些資源返還給低層驅動程式為止。如果ProtocolReceivePacket向高層驅動程式傳遞其所接收的資源,那麼至少應該用中間層驅動程式已經分配的包描述符替代引入包描述符。根據中間層驅動程式目的的不同,當其從低層驅動程式接收完整資料包時,將有幾種不同的包管理策略。例如,以下是幾種可能的包管理策略:複製緩衝區內容到中間層驅動程式分配的緩衝區中,該緩衝區被對映並連結到一個新的包描述符,向低層驅動程式返回該輸入包描述符,然後可以向高層驅動程式指示新的資料包;建立新的包描述符,將緩衝區(與被指示包描述符相關聯)連結到新的包描述符,然後將新的包描述符指示給高層驅動程式。當高層驅動程式返回包描述符時,中間層驅動程式必須拆除緩衝區與包描述符間的連結,並將這些緩衝區連結到最初從低層驅動程式接收到的包描述符,最後向低層驅動程式返還最初的包描述符及其所描述的資源。即使下邊介麵向無連線的中間層驅動程式支援ProtocolReceivePacket函式,它也提供ProtocolReceive函式。當低層驅動程式不釋放包描述符所指示資源的所有權時,NDIS將呼叫ProtocolReceive函式,當這類情況出現時,中間層驅動程式必須複製所接收的資料到它自己的緩衝區中。對於下邊介麵向連線的中間層驅動程式,當低層驅動程式不釋放包描述符所指示資源的所有權時,則將資料包的NDIS_PACKET_OOB_DATA的Status成員設為NDIS_STATUS_RESOURCES,然後驅動程式的ProtocolCoReceivePacket函式必須將接收到資料複製到自己的緩衝區中\\n\\n5)中間層驅動過濾資料包的原理\\n\\nNDIS中間層驅動程式在NDIS中起著轉發上層驅動程式送來的資料包,並將其向下層驅動程式傳送的介麵功能。當中間層驅動程式從下層驅動程式接收到資料包時,它要麼呼叫NdisMXxxIndicateReceive函式,要麼呼叫NdisMindicateReceivePacket函式向上層指示該資料包中間層驅動程式通過呼叫NDIS開啟和建立一個對低層NIC驅動程式或者NDIS中間層驅動程式的繫結。中間層驅動程式提供MiniportSetInformation和MiniportQueryInformation函式來處理高層驅動程式的設定和查詢請求,某些情況下,可能還要將這些請求向低層NDIS驅動程式進行傳遞,如果其下邊界是麵向無連線的可通過呼叫NidsRequest實現這一功能,如果其下邊界是麵向連線的則通過呼叫NidsCoRequest實現該功能。中間層驅動程式通過呼叫NDIS提供的函式向網路低層NDIS驅動程式傳送資料包。例如,下邊介麵向無連線的中間層驅動程式必須呼叫NdisSend或NdisSendPackets來傳送資料包或者包陣列,而在下邊介麵向連線的情況下就必須呼叫NdisCoSendPackets來傳送包陣列資料包。如果中間層驅動程式是基於非NDISNIC驅動程式的,那麼在呼叫中間層驅動程式的MiniportSend或Miniport(Co)SendPackets函式之後,傳送介麵對NDIS將是不透明的。NDIS提供了一組隱藏低層操作係統細節的NdisXxx函式和宏。例如,中間層驅動程式可以呼叫NdisMInitializeTimer來建立同步時鐘,可以呼叫NdisInitializeListHead建立連結串列。中間層驅動程式使用符合NDIS標準的函式,來提高其在支援Win32介麵的微軟操作係統上的可移植性。\\n\\n在防火牆的設計中,最核心的部分應該是資料包的過濾。\\n\\n其他的功能都是建立在資料包過濾的基礎之上,如:入侵檢測功能和郵件檢測功能都是建立在資料包過濾的基礎之上。資料包過濾中主要是IP包頭的分析,例如:在乙太網中,得到的資料包大致是如下結構,以太幀頭14個位元組,放在PUCHAR結構陣列的第0個元素到第13個元素中,其中前六個位元組是目的MAC地址,然後六個位元組源MAC地址,然後兩個位元組是協議型別,通常的協議型別有0x080x00->IP,0x080x06->ARP,0x080x35->RARP,所以,可以通過陣列的第12個元素和第13個元素來判斷協議型別。過濾規則就是在這個基礎之上建立。如果要過濾特定協議,隻要在相應的位元組讀取資料,判斷是否符合要過濾的規則就可以了,當然實際的過濾規則要複雜的多的多,比如對指定的指定的IP的過濾。\\n\\n重點和難點\\n\\n1)需要完整的瞭解WINDOWS的執行原理,這包括核心部分和使用者部分。\\n\\n2)需要熟悉用DDK,完整的瞭解網路驅動的執行機製。\\n\\n3)需要瞭解防火牆的工作原理。\\n\\n\"

}

第 1 頁
⬅ 上一章 📋 目錄 ⚠ 報錯 下一章 ➡
升級 VIP · 無廣告 + VIP 章節全解鎖
👑 VIP 特權 全站去廣告清爽閱讀 · VIP 章節無限暢讀,月卡僅 $5
報錯獎勵 發現文字亂碼、缺章、內容重複?點上方「章節報錯」回報,審核通過立獲 3天VIP
書單獎勵 前往 個人中心 投稿你的私藏書單,審核通過立獲 7天VIP
⭐ 立即升級 VIP · 月卡僅 $5
還沒有帳號? 免費註冊 | 登入後購買