第一篇:防火墻的數(shù)據(jù)包攔截方式小結(jié)
防火墻的數(shù)據(jù)包攔截方式小結(jié)
網(wǎng)絡(luò)防火墻都是基于數(shù)據(jù)包的攔截技術(shù)之上的。在 Windows 下,數(shù)據(jù)包的攔截方式有很多種,其原理和實(shí)現(xiàn)方式也千差萬別??偟膩碚f,可分為“用戶級”和“內(nèi)核級”數(shù)據(jù)包攔截兩大類。
用戶級下的數(shù)據(jù)包攔截方式有:
* Winsock Layered Service Provider(LSP)。
* Win2K 包過濾接口(Win2K Packet Filtering Interface)。* 替換 Winsock 動態(tài)鏈接庫(Winsock Replacement DLL)。
內(nèi)核級下的數(shù)據(jù)包攔截方式有:
* TDI過濾驅(qū)動程序(TDI-Filter Driver)。
* NDIS中間層驅(qū)動程序(NDIS Intermediate Driver)。* Win2K Filter-Hook Driver。* Win2K Firewall-Hook Driver。* NDIS-Hook Driver。
在這么多種方式面前,我們該如何決定采用哪一種作為自己項(xiàng)目的實(shí)現(xiàn)技術(shù)?這需要對每一種 方式都有一個大致的了解,并清楚它們各自的優(yōu)缺點(diǎn)。技術(shù)方案的盲目選用往往會帶來一些技術(shù) 風(fēng)險。以自己為例,我需要在截包的同時得到當(dāng)前進(jìn)程文件名,也就是說,需向用戶報(bào)告當(dāng)前是 哪個應(yīng)用程序要訪問網(wǎng)絡(luò)。在選用 Win2K Filter-Hook Driver 這一方案之后(很多小型開源項(xiàng)
目都采用這一方案),便開始編碼。但之后發(fā)現(xiàn) Win2K Filter-Hook Driver 的截包上下文處于內(nèi)
核進(jìn)程中,即 IRQL >= DISPATCH_LEVEL,根本無法知道當(dāng)前應(yīng)用程序的名字。相比之下,TDI-Filter Driver 和 NDIS-Hook Driver 則可以得知這些信息。其中 TDI-Filter Driver 比 NDIS-Hook Driver 更能準(zhǔn)確地獲知當(dāng)前應(yīng)用程序文件名,后者的接收數(shù)據(jù)包和少數(shù)發(fā)送數(shù)據(jù)
包的場景仍然處于內(nèi)核進(jìn)程中。
下面列出了各種截包方式的特點(diǎn):
* Winsock Layered Service Provider(LSP)該方式也稱為 SPI(Service Provider Interface)截包技術(shù)。SPI是由 Winsock2 提供的一個
接口,它需要用戶機(jī)上安裝有 Winsock 2.0。Winsock2 SPI 工作在 API 之下的 Driver 之上,可以截獲所有基于 Socket 的網(wǎng)絡(luò)數(shù)據(jù)包。
優(yōu)點(diǎn):
* 以DLL形式存在,編程方便,調(diào)試簡單。* 數(shù)據(jù)封包比較完整,未做切片,便于做內(nèi)容過濾。
缺點(diǎn): * 攔截不夠嚴(yán)密,對于不用 Socket 的網(wǎng)絡(luò)通訊則無法攔截(如 ICMP),木馬病毒很容易繞過。
* Win2K Packet Filtering Interface
這是 Win2K 中一組 API 提供的功能(PfCreateInterface, PfAddFiltersToInterface,...)。
優(yōu)點(diǎn):
* 接口簡單,實(shí)現(xiàn)起來沒什么難度。
缺點(diǎn):
* 功能過于簡單,只能提供IP和端口的過濾,可能無法滿足防火墻的復(fù)雜需求。* 處于 API 層,木馬病毒容易繞過。* 只能在 Win2K 以上(含)系統(tǒng)中使用。
* Winsock Replacement DLL 這種方法通過替換系統(tǒng) Winsock 庫的部分導(dǎo)出函數(shù),實(shí)現(xiàn)數(shù)據(jù)報(bào)的監(jiān)聽和攔截。
缺點(diǎn):
* 由于工作在 Winsock 層,所以木馬病毒容易繞過。
* TDI-Filter Driver
TDI 的全稱是 Transport Driver Interface。傳輸層過濾驅(qū)動程序通過創(chuàng)建一個或多個設(shè)備對象
直接掛接到一個現(xiàn)有的驅(qū)動程序之上。當(dāng)有應(yīng)用程序或其它驅(qū)動程序調(diào)用這個設(shè)備對象時,會首
先映射到過濾驅(qū)動程序上,然后由過濾驅(qū)動程序再傳遞給原來的設(shè)備對象。
優(yōu)點(diǎn):
* 能獲取到當(dāng)前進(jìn)程的詳細(xì)信息,這對開發(fā)防火墻尤其有用。
缺點(diǎn):
* 該驅(qū)動位于 tcpip.sys 之上,所以沒有機(jī)會得到那些由 tcpip.sys 直接處理的包,比如ICMP。
* TDI驅(qū)動需要重啟系統(tǒng)方能生效。
* NDIS Intermediate Driver
也稱之為 IM Driver。它位于協(xié)議層驅(qū)動和小端口驅(qū)動之間,它主要是在網(wǎng)絡(luò)層和鏈路層之間對
所有的數(shù)據(jù)包進(jìn)行檢查,因而具有強(qiáng)大的過濾功能。它能截獲所有的數(shù)據(jù)包。
可參考DDK中附帶的例子 Passthru。
優(yōu)點(diǎn):
* 功能非常強(qiáng)大,應(yīng)用面廣泛,不僅僅是防火墻,還可以用來實(shí)現(xiàn)VPN,NAT 和 VLan 等。
缺點(diǎn):
* 編程復(fù)雜,難度較大。
* 中間層驅(qū)動的概念是在 WinNT SP4 之后才有的,因此 Win9X 無法使用。* 不容易安裝,自動化安裝太困難。
* Win2K Filter-Hook Driver 這是從 Win2K 開始提供的一種機(jī)制,該機(jī)制主要利用 ipfiltdrv.sys 所提供的功能來攔截網(wǎng)絡(luò)
數(shù)據(jù)包。Filter-Hook Driver 的結(jié)構(gòu)非常簡單,易于實(shí)現(xiàn)。但是正因?yàn)槠浣Y(jié)構(gòu)過于簡單,并且
依賴于 ipfiltdrv.sys,微軟并不推薦使用。
可參考 CodeProject 上的例子:http://004km.cn/KB/IP/drvfltip.aspx
優(yōu)點(diǎn):
* 結(jié)構(gòu)簡單,易于實(shí)現(xiàn)。
* 能截獲所有的IP包(包括ICMP包)。
缺點(diǎn):
* 工作于內(nèi)核進(jìn)程中,無法取得當(dāng)前應(yīng)用程序進(jìn)程的信息。
* 雖能截獲所有IP包,但無法取得數(shù)據(jù)包的以太幀(Ethernet Frame)。* 只能在 Win2K 以上(含)系統(tǒng)中使用。
* Win2K Firewall-Hook Driver 這是一種和 Win2k Filter-Hook Driver 差不多的機(jī)制,所不同的是,F(xiàn)irewall-Hook Driver 能在 IP Driver 上掛接多個回調(diào)函數(shù),所以和前者相比,它引起沖突的可能性更小一些。
可參考 CodeProject 上的例子:http://004km.cn/KB/IP/FwHookDrv.aspx
這種方式的優(yōu)缺點(diǎn)和 Win2K Filter-Hook Driver 基本相同。
* NDIS-Hook Driver
這是一種要重點(diǎn)講述的截包方式。它是目前大多數(shù)網(wǎng)絡(luò)防火墻所使用的方法。這種方式的做法
是安裝鉤子到 ndis.sys 中,替換其中的某些關(guān)鍵函數(shù),從而達(dá)到截包的目的。在下一節(jié)中我
們將詳細(xì)地介紹它的實(shí)現(xiàn)方法。
優(yōu)點(diǎn):
* 安裝簡單,可即時安裝和卸載驅(qū)動,無需重啟系統(tǒng)。
* 能截獲所有的IP包,同時能取得數(shù)據(jù)包的以太幀(Ethernet Frame)。* 安全性高,木馬病毒不容易穿透。
* 在大多數(shù)情況下,能獲取到當(dāng)前應(yīng)用程序的進(jìn)程信息。* 能在 Win98 以上(含)系統(tǒng)中使用。
缺點(diǎn):
* 接收數(shù)據(jù)包、或偶爾發(fā)送數(shù)據(jù)包時,驅(qū)動工作在內(nèi)核進(jìn)程中,無法獲得應(yīng)用程序進(jìn)程信息。
◎ NDIS-Hook 技術(shù)
微軟和 3COM 公司在1989年制定了一套開發(fā) Windows 下網(wǎng)絡(luò)驅(qū)動程序的標(biāo)準(zhǔn),稱為 NDIS。
NDIS 的全稱是 Network Driver Interface Specification。NDIS為網(wǎng)絡(luò)驅(qū)動的開發(fā)提供了一套
標(biāo)準(zhǔn)的接口,使得網(wǎng)絡(luò)驅(qū)動程序的跨平臺性更好。
NDIS提供以下幾個層次的接口:
1.NDIS 小端口驅(qū)動(NDIS Miniport Driver)。這也就是我們常說的網(wǎng)卡驅(qū)動。
2.NDIS 協(xié)議驅(qū)動(NDIS Protocol Driver)。用來實(shí)現(xiàn)某個具體的協(xié)議棧,如 TCP/IP 協(xié)議棧,并向上層導(dǎo)出 TDI 接口。3.NDIS 中間層驅(qū)動(NDIS Intermediate Driver)。
這是位于小端口驅(qū)動和協(xié)議驅(qū)動之間的驅(qū)動。
NDIS為了給出上述三種接口,提供了一個系統(tǒng)的、完整的 Wrapper。這個 Wrapper 即 ndis.sys。
上面提到的 Miniport Driver、Protocol Driver、Intermediate Driver 均屬于插入到這個 Wrapper 中的“模塊”,它們調(diào)用 Wrapper 提供的函數(shù),同時也向 Wrapper 注冊回調(diào)函數(shù)。
在簡單了解了NDIS的機(jī)制之后,不難得知,網(wǎng)絡(luò)防火墻只需要將自己的函數(shù)掛鉤(Hook)到 ndis.sys
中即可截獲網(wǎng)絡(luò)數(shù)據(jù)包。NDIS-Hook 技術(shù)有兩種實(shí)現(xiàn)方案:
1.修改 ndis.sys 的 Export Table。
在 Win32 下,可執(zhí)行文件(EXE/DLL/SYS)都遵從PE格式。所有提供接口的驅(qū)動都有 Export Table,因此只要修改 ndis.sys 的 Export Table,就可實(shí)現(xiàn)對關(guān)鍵函數(shù)的掛接。在實(shí)現(xiàn)步驟中,首先
需要得到 ndis.sys 的內(nèi)存基址,再根據(jù)PE格式得到DOS頭部結(jié)構(gòu)(IMAGE_DOS_HEADER),進(jìn)一步得
到NT頭部結(jié)構(gòu)(IMAGE_NT_HEADER),最后從頭部結(jié)構(gòu)中查得 Export Table 的地址。
由于協(xié)議驅(qū)動程序(NDIS Protocol Driver)在系統(tǒng)啟動時會調(diào)用 NdisRegisterProtocol()來向
系統(tǒng)注冊協(xié)議,因此這種方法關(guān)鍵在于修改 ndis.sys 所提供的 NdisRegisterProtocol、NdisDeRegisterProtocol、NdisOpenAdapter、NdisCloseAdapter、NdisSend 這幾個函數(shù)的地址。
對于處于系統(tǒng)核心的 ndis.sys 而言,要修改它的內(nèi)存區(qū)域,只有驅(qū)動程序才能做到,所以我們
必須編寫驅(qū)動程序來達(dá)到這個目的。
該方案的缺點(diǎn)是加載或卸載驅(qū)動后無法立即生效,必須重啟系統(tǒng)。且掛鉤方法較為復(fù)雜。早期凡
使用 NDIS-Hook 的防火墻都采用這一方法,包括著名的費(fèi)爾防火墻的早期版本(v2.1)。
直到 2004 年,004km.cn 上一名黑客公布了一種全新的 NDIS-Hook 技術(shù)(即下文即將提
到的第2種方法),諸多防火墻產(chǎn)品才都悄悄對自己的核心技術(shù)進(jìn)行了升級。由于新的掛鉤技術(shù)更
好,故本文不打算詳述修改 Export Table 這一方法的具體細(xì)節(jié)。
2.向系統(tǒng)注冊假協(xié)議(Bogus Protocol)。NDIS提供了一個API: NdisRegisterProtocol(),這個API的職責(zé)是向系統(tǒng)注冊一個協(xié)議(如TCPIP),并將該協(xié)議作為一個鏈表節(jié)點(diǎn)插入到“協(xié)議鏈表”的頭部,最后返回該鏈表頭節(jié)點(diǎn)(即新節(jié)點(diǎn))的
地址。正常情況下,只有NDIS協(xié)議驅(qū)動程序(NDIS Protocol Driver)才會調(diào)用這個API。
既然如此,如果我們也調(diào)用 NdisRegisterProtocol()向系統(tǒng)注冊一個新的協(xié)議,我們也就能輕
易地得到“協(xié)議鏈表”的首地址,通過走訪這個鏈表,就能修改其中的某些關(guān)鍵信息,比如關(guān)鍵
函數(shù)的地址。修改完畢后,再調(diào)用 NdisDeRegisterProtocol()注銷掉新協(xié)議。這看似一切都沒
發(fā)生,但事實(shí)上目的已經(jīng)達(dá)到了。這個新協(xié)議我們稱之為假協(xié)議(Bogus Protocol)。
通過這種方法,我們可以不用重啟系統(tǒng)就能輕松掛接截包函數(shù)。當(dāng)今大多數(shù)網(wǎng)絡(luò)防火墻都采用了
這一方法。近來網(wǎng)上又有人提出了獲取協(xié)議鏈表首地址的新的怪異途徑,比如獲取 tcpip.sys 中全局變量 _ARPHandle 值的方法。不管怎樣,相比之下,注冊假協(xié)議仍不失為一種經(jīng)典且簡單的方法。
本文將詳細(xì)敘述第2種方案的內(nèi)部原理和實(shí)現(xiàn)細(xì)節(jié),即通過注冊假協(xié)議獲取協(xié)議鏈表首地址,遍歷
鏈表并修改其中的函數(shù)地址,掛鉤自己的函數(shù),從而實(shí)現(xiàn)網(wǎng)絡(luò)截包。在這么做之前,需要先對NDIS
內(nèi)部維護(hù)的幾個結(jié)構(gòu)有清楚的認(rèn)識。另外,由于歷史原因,NDIS存在諸多并不完全向下兼容的版本,不同的版本中關(guān)鍵數(shù)據(jù)域的偏移地址也不盡相同。微軟并沒有以文檔形式提供這些變化的列表。本
文稍后給出這些變化。
* NDIS_PROTOCOL_BLOCK 和 NDIS_OPEN_BLOCK
在NDIS中,所有已注冊的協(xié)議是通過一個單向的協(xié)議鏈表來維護(hù)的。這個單向鏈表保存了所有已注冊 的協(xié)議,每個協(xié)議對應(yīng)一個節(jié)點(diǎn)。鏈表節(jié)點(diǎn)由 NDIS_PROTOCOL_BLOCK 結(jié)構(gòu)來描述,在這個結(jié)構(gòu)中保存
了注冊協(xié)議驅(qū)動時所指定的各種信息,如支持協(xié)議即插即用的回調(diào)函數(shù)地址等。同時,每個協(xié)議驅(qū)動
還對應(yīng)一個 NDIS_OPEN_BLOCK 節(jié)點(diǎn)結(jié)構(gòu)的單向鏈表來維護(hù)其所綁定的網(wǎng)卡信息,協(xié)議驅(qū)動發(fā)送和接收
數(shù)據(jù)包的回調(diào)函數(shù)地址就保存在這個結(jié)構(gòu)中,是我們要重點(diǎn)修改的對象。
協(xié)議與網(wǎng)卡綁定的示意圖如下: ┌───┐
│ Head │
└─┬─┘
↓
┌──────────────┐ ┌───────────┐
│ TCPIP Protocol Block ├──→│ RTL8168 Open Block │
└──────┬───────┘ └─────┬─────┘
↓ ↓
┌──────────────┐ ┌───────────┐
│ TCPIP_WANARP Protocol Block│ │ Wireless Open Block │
└──────┬───────┘ └─────┬─────┘
↓ ↓ ┌───┐ ┌───┐
│ NULL │ │ NULL │
└───┘ └───┘ * 得到 NDIS_PROTOCOL_BLOCK 鏈表的首地址
上文已提到,通過向系統(tǒng)注冊假協(xié)議,我們即可得到協(xié)議鏈表的首地址。從DDK中可查到 NdisRegisterProtocol()的原型:
EXPORT VOID NdisRegisterProtocol(OUT PNDIS_STATUS Status, OUT PNDIS_HANDLE NdisProtocolHandle, IN PNDIS_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics, IN UINT CharacteristicsLength);
可以看出,我們在調(diào)用它時需要傳入一個結(jié)構(gòu) NDIS_PROTOCOL_CHARACTERISTICS,這個結(jié)構(gòu)是我們
在注冊協(xié)議時必須填寫的一張表格,這個表格描述了協(xié)議的相關(guān)信息。不過既然我們注冊的是一個
假協(xié)議,所以可以盡量簡單地填寫它。
NDIS_STATUS
DummyNdisProtocolReceive(IN NDIS_HANDLE ProtocolBindingContext, IN NDIS_HANDLE MacReceiveContext, IN PVOID HeaderBuffer, IN UINT HeaderBufferSize, IN PVOID LookAheadBuffer, IN UINT LookAheadBufferSize, IN UINT PacketSize){ return NDIS_STATUS_NOT_ACCEPTED;}
NDIS_HANDLE
RegisterBogusNdisProtocol(void){ NTSTATUS Status = STATUS_SUCCESS;NDIS_HANDLE hBogusProtocol = NULL;NDIS_PROTOCOL_CHARACTERISTICS BogusProtocol;NDIS_STRING ProtocolName;NdisZeroMemory(&BogusProtocol, sizeof(NDIS_PROTOCOL_CHARACTERISTICS));BogusProtocol.MajorNdisVersion = 0x04;BogusProtocol.MinorNdisVersion = 0x0;
NdisInitUnicodeString(&ProtocolName, L“BogusProtocol”);BogusProtocol.Name = ProtocolName;BogusProtocol.ReceiveHandler = DummyNdisProtocolReceive;NdisRegisterProtocol(&Status, &hBogusProtocol, &BogusProtocol, sizeof(NDIS_PROTOCOL_CHARACTERISTICS));
if(Status == STATUS_SUCCESS)return hBogusProtocol;else return NULL;}
函數(shù) RegisterBogusNDISProtocol()的返回值即是我們想要的協(xié)議鏈表首地址。不過須注意的是,在函數(shù)掛鉤完成后,應(yīng)調(diào)用 NdisDeregisterProtocol()將假協(xié)議注銷。另外,在遍歷協(xié)議鏈表
進(jìn)行函數(shù)掛鉤時,應(yīng)從首節(jié)點(diǎn)的下一個節(jié)點(diǎn)開始,因?yàn)槭坠?jié)點(diǎn)是我們的假協(xié)議節(jié)點(diǎn)。
* 修改原有函數(shù)地址值實(shí)現(xiàn)函數(shù)掛鉤
上文已提到了和NDIS相關(guān)的三個結(jié)構(gòu): NDIS_PROTOCOL_BLOCK, NDIS_OPEN_BLOCK, NDIS_PROTOCOL_CHARACTERISTICS。
那么我們要替換的函數(shù)在哪兒呢?答案是在 NDIS_OPEN_BLOCK 和 NDIS_PROTOCOL_CHARACTERISTICS
這兩個結(jié)構(gòu)中,而且重點(diǎn)是前者,因?yàn)榍罢呤菂f(xié)議驅(qū)動和網(wǎng)卡綁定的紐帶?,F(xiàn)在的主流網(wǎng)卡都只 調(diào)用 NDIS_OPEN_BLOCK 中的收發(fā)函數(shù)進(jìn)行發(fā)送和接收數(shù)據(jù)包。但據(jù)試驗(yàn),虛擬機(jī) VMware 有時會
調(diào)用 NDIS_PROTOCOL_CHARACTERISTICS 中的函數(shù)進(jìn)行數(shù)據(jù)包收發(fā)。所以為了嚴(yán)謹(jǐn),我們應(yīng)該對兩
個結(jié)構(gòu)中的函數(shù)進(jìn)行替換。關(guān)于這兩個結(jié)構(gòu)的定義,讀者可以自行查閱DDK文檔和頭文件。
下面給出示意性代碼。簡單起見,下列代碼均假設(shè)當(dāng)前NDIS的版本為5.0。
BOOLEAN InstallHook(void){ NDIS_STATUS nStatus;NDIS_HANDLE hBogusProtocol = NULL;BYTE *pProtocolChain;
// Get the address of the first NDIS_PROTOCOL_BLOCK node.hBogusProtocol = RegisterBogusNDISProtocol();if(hBogusProtocol == NULL)return FALSE;pProtocolChain =(BYTE*)hBogusProtocol;while(TRUE){ // Get the address of the next node.DWORD dwOffset = 0x10;// for NDIS 5.0 pProtocolChain =((BYTE **)(pProtocolChain + dwOffset))[0];if(!pProtocolChain)break;
HookNdisProtocolBlock(pProtocolChain);}
NdisDeregisterProtocol(&nStatus, hBogusProtocol);return TRUE;} void
HookNdisProtocolBlock(IN BYTE *pProtocolBlock){ PNDIS_PROTOCOL_CHARACTERISTICS pProtoChar;PNDIS_OPEN_BLOCK pOpenBlock;
pProtoChar =(PNDIS_PROTOCOL_CHARACTERISTICS)(pProtocolBlock + 0x14);HookNdisProc(MyReceive,(PVOID *)&pProtoChar->ReceiveHandler);HookNdisProc(MyReceivePacket,(PVOID *)&pProtoChar->ReceivePacketHandler);HookNdisProc(MyBindAdapter,(PVOID *)&pProtoChar->BindAdapterHandler);
pOpenBlock =((PNDIS_OPEN_BLOCK *)pProtocolBlock)[0];while(pOpenBlock){ HookNdisProc(MySend,(PVOID *)&pOpenBlock->SendHandler);HookNdisProc(MyReceive,(PVOID *)&pOpenBlock->ReceiveHandler);HookNdisProc(MyReceivePacket,(PVOID *)&pOpenBlock->ReceivePacketHandler);HookNdisProc(MySendPackets,(PVOID *)&pOpenBlock->SendPacketsHandler);
pOpenBlock = pOpenBlock->ProtocolNextOpen;} } void HookNdisProc(IN PVOID pMyProc, IN PVOID *ppOrgProc){ // TODO: Save the address of the original proc.*ppOrgProc = pMyProc;}
InstallHook()首先得到協(xié)議鏈表的首地址,接著遍歷鏈表,針對系統(tǒng)中的每個(第一個除外)NDIS_PROTOCOL_BLOCK 調(diào)用 HookNdisProtocolBlock()函數(shù)。HookNdisProtocolBlock()對 NDIS_PROTOCOL_BLOCK 中 NDIS_PROTOCOL_CHARACTERISTICS 和
NDIS_OPEN_BLOCK 鏈表的每個節(jié)點(diǎn)進(jìn)行函數(shù)掛接。
HookNdisProc()用于替換函數(shù)地址。給出的代碼中它只是簡單地替換函數(shù)地址,在實(shí)際應(yīng)用中,它還應(yīng)當(dāng)保存原始函數(shù)的地址值,以供新的函數(shù)調(diào)用。
* 關(guān)鍵數(shù)據(jù)域在不同NDIS版本中的差異
由于 NDIS-Hook 并非受微軟官方支持的技術(shù),所以相關(guān)文檔非常缺乏。不僅如此,操作系統(tǒng)的 每次升級,都會同時升級NDIS,而NDIS中的某些數(shù)據(jù)結(jié)構(gòu)并沒有保持向下兼容。最需要注意的
是 NDIS_PROTOCOL_BLOCK。
在 Win9x/Me/NT 的DDK中,NDIS_PROTOCOL_BLOCK 都有明確的定義,但在 Win2K/XP 的DDK中,并沒有該結(jié)構(gòu)的詳細(xì)定義,也就是說該結(jié)構(gòu)在 Win2K 以后(含)的系統(tǒng)中是非公開的。因此開發(fā)
人員只能利用各種調(diào)試工具來發(fā)掘該結(jié)構(gòu)的詳細(xì)定義。也正是因?yàn)槿绱?,NDIS-Hook 方法對平臺 的依賴性比較大,需要在程序中判斷不同的操作系統(tǒng)版本而使用不同的結(jié)構(gòu)定義。
NDIS_PROTOCOL_BLOCK 的定義可大致認(rèn)為是這個樣子:
typedef struct _NDIS_PROTOCOL_BLOCK { PNDIS_OPEN_BLOCK OpenQueue;REFERENCE Ref;UINT Length;NDIS_PROTOCOL_CHARACTERISTICS ProtocolChars;struct _NDIS_PROTOCOL_BLOCK* NextProtocol;ULONG MaxPatternSize;//...} NDIS_PROTOCOL_BLOCK, *PNDIS_PROTOCOL_BLOCK;
其中 OpenQueue 為 PNDIS_OPEN_BLOCK 鏈表的首節(jié)點(diǎn)地址,NextProtocol 指向下一個
NDIS_PROTOCOL_BLOCK 節(jié)點(diǎn)。
在不同的NDIS版本中,該結(jié)構(gòu)中的某些域的偏移地址是不同的,現(xiàn)列于下:
┌───────┬───────────┬───────────┐
│ NDIS Version │ ProtocolChars offset │ NextProtocol offset │
├───────┼───────────┼───────────┤
│ 3.XX │ 0x14 │ 0x04 │
│ 4.XX │ 0x14 │ 0x60 │
│ 4.01 │ 0x14 │ 0x8C │
│ 5.XX │ 0x14 │ 0x10 │
└───────┴───────────┴───────────┘ * 如何在驅(qū)動中得到當(dāng)前NDIS版本? 有兩種方法可得到當(dāng)前NDIS版本。一種是先取得當(dāng)前操作系統(tǒng)的版本信息,在根據(jù)操作系統(tǒng) 的版本得到NDIS的版本。操作系統(tǒng)版本和NDIS版本有一個映射關(guān)系,讀者可在DDK幫助中查到。
┌───────┬───────┐
│ OS Version │ NDIS Version │
├───────┼───────┤
│ Win95 │ 3.1 │
│ Win95 OSR2 │ 4.0 │
│ Win98 │ 4.1 │
│ Win98 SE │ 5.0 │
│ WinMe │ 5.0 │
│ WinNT 3.5 │ 3.0 │
│ WinNT 4.0 │ 4.0 │
│ WinNT 4.0 SP3│ 4.1 │
│ Win2K │ 5.0 │
│ WinXP │ 5.1 │
│ WinVista │ 6.0 │
└───────┴───────┘
還有一種方法,通過調(diào)用 NdisReadConfiguration()直接獲取NDIS版本。代碼如下:
BOOLEAN GetNdisVersion(OUT DWORD *pMajorVersion, OUT DWORD *pMinorVersion){ NDIS_STATUS nStatus;NDIS_STRING VersionStr = NDIS_STRING_CONST(“NdisVersion”);PNDIS_CONFIGURATION_PARAMETER ReturnedValue;BOOLEAN bResult;NdisReadConfiguration(&nStatus, &ReturnedValue, NULL, &VersionStr, NdisParameterInteger);
bResult =((nStatus == NDIS_STATUS_SUCCESS)? TRUE : FALSE);if(bResult){ //
// The returned value has the NDIS version of the form // 0xMMMMmmmm, where MMMM is major version and mmmm is minor // version so 0x00050000 is 5.0 //
DWORD dwVersion = ReturnedValue->ParameterData.IntegerData;if(pMajorVersion)*pMajorVersion = dwVersion >> 16;if(pMinorVersion)*pMinorVersion = dwVersion & 0xFFFF;}
return bResult;}
須注意的是,GetNdisVersion()必須在 PASSIVE_LEVEL 下運(yùn)行。所以此函數(shù)適合于在 驅(qū)動的 DriverEntry()中調(diào)用,因?yàn)?DriverEntry()一定是處于 PASSIVE_LEVEL 的。
第二篇:基于數(shù)據(jù)包捕獲與分析的個人防火墻論文
基于數(shù)據(jù)包捕獲與分析的個人防火墻論文
本套設(shè)計(jì)論文描述及運(yùn)行界面展示
摘 要
數(shù)據(jù)包過濾是一個用軟件或硬件設(shè)備對向網(wǎng)絡(luò)上傳或從網(wǎng)絡(luò)下載的數(shù)據(jù)流進(jìn)行有選擇的控制過程。數(shù)據(jù)包過濾的功能通常是在將數(shù)據(jù)包從一個網(wǎng)站向另一個網(wǎng)絡(luò)傳送的過程中允許或阻止它們的通過(更為常見的是在從英特網(wǎng)向內(nèi)部網(wǎng)絡(luò)傳輸數(shù)據(jù)時,或從內(nèi)部網(wǎng)絡(luò)向英特網(wǎng)傳輸)。若要完成數(shù)據(jù)包過濾,你就要設(shè)置好規(guī)則來指定哪些類型的數(shù)據(jù)包被允許通過和哪些類型的數(shù)據(jù)包將會被阻止。
基于數(shù)據(jù)包過濾的防火墻,能夠很好地保護(hù)用戶在與網(wǎng)絡(luò)連接時的安全性。
我們的目標(biāo),就是通過截獲數(shù)據(jù)包,并且對其進(jìn)行分析,來放行或阻止網(wǎng)絡(luò)訪問,從而達(dá)到保護(hù)計(jì)算機(jī)安全的目的。
本論文主要講述了下面幾點(diǎn):
一、數(shù)據(jù)包捕獲及網(wǎng)絡(luò)安全技術(shù)
二、系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
三、測試及其他
關(guān)鍵字:數(shù)據(jù)包捕獲;防火墻;網(wǎng)絡(luò)安全
Abstract Packet Filtering is the process a piece of software or device takes to selectively control the flow of data to and from a network.Packet Filters allow or block packets, usually while routing them from one network to another(most often from the Internet to an internal network, and vice-versa).To accomplish packet filtering, you set up rules that specify what types of packets are to be allowed and what types are to be blocked.The packet filtering based firewall can protect the security of computers very well.Our goal is to capture and analysis data packets ,so we can examines all packets that pass in and out of it to prevent packets from passing through ,and the computer is protected.The thesis presents these aspects:
1、Technology of Packet Filtering and Network Security
2、How to implement the system
3、Testing document and others Key Words: Packet Filtering、Firewall、network security
目 錄 第一章 緒論 1 第一節(jié) 課題意義1 第二節(jié) 課題綜述1
一、國內(nèi)外發(fā)展情況 1
二、網(wǎng)絡(luò)安全技術(shù)介紹 4
三、防火墻介紹 6
四、防火墻技術(shù)發(fā)展趨勢8
五、防火墻產(chǎn)品發(fā)展趨勢10 第二章 需求分析 11 第一節(jié) 需求分析11
一、功能調(diào)查11
二、初步設(shè)計(jì)12 第二節(jié) 可行性分析 12
一、技術(shù)可行性及方案選擇 12 第三節(jié) 開發(fā)環(huán)境及工具 13
一、開發(fā)環(huán)境13
二、開發(fā)工具14 第三章 基礎(chǔ)實(shí)現(xiàn)技術(shù)介紹 15 第一節(jié) MFC介紹15 第二節(jié) 數(shù)據(jù)包過濾技術(shù) 15
一、數(shù)據(jù)包 15
二、數(shù)據(jù)包過濾是怎樣工作的16
三、包過濾的優(yōu)點(diǎn) 16 第四章 系統(tǒng)總體設(shè)計(jì)18 第一節(jié) 功能分析18 第二節(jié) 系統(tǒng)工作流程 19
一、系統(tǒng)工作流程圖 18
二、原理分析20
三、系統(tǒng)工作過程描述 21 第五章 子模塊設(shè)計(jì) 22 第一節(jié) 模塊分析21
一、模塊劃分原則 22
二、模塊劃分23
三、模塊接口定義 25 第二節(jié) 子模塊詳細(xì)設(shè)計(jì) 26
一、注冊模塊26
二、查詢模塊28
三、流量統(tǒng)計(jì)模塊 29 第六章 出現(xiàn)問題及解決辦法 32 第一節(jié) 出現(xiàn)問題32 第二節(jié) 無法解決的問題 33 第七章 測試 34 第一節(jié) 測試方案34 第二節(jié) 測試實(shí)例35 第三節(jié) 測試總結(jié)39 結(jié)束語 40 致謝 41 參考文獻(xiàn)42
第三篇:領(lǐng)導(dǎo)方式轉(zhuǎn)變小結(jié)
“用領(lǐng)導(dǎo)方式轉(zhuǎn)變加快發(fā)展方式轉(zhuǎn)變”解
放思想大討論活動第一階段小結(jié)
根據(jù)市委的統(tǒng)一部署和局黨委的計(jì)劃安排,我局認(rèn)真組織開展了“用領(lǐng)導(dǎo)方式轉(zhuǎn)變加快發(fā)展方式轉(zhuǎn)變”解放思想大討論活動。通過第一階段的學(xué)習(xí)活動,使廣大干部職工整體上對“用領(lǐng)導(dǎo)方式轉(zhuǎn)變加快發(fā)展方式轉(zhuǎn)變”的重要性、必要性和緊迫性有了新的領(lǐng)悟,深化了對科學(xué)發(fā)展觀的認(rèn)識,全水務(wù)系統(tǒng)想發(fā)展、議發(fā)展、謀發(fā)展的氛圍日益濃厚,形成了改革創(chuàng)新的思想動力,為第二階段活動的順利開展打下了良好基礎(chǔ)。現(xiàn)就第一階段的工作開展情況簡要作一小結(jié)。
一、第一階段活動開展情況
3月5日林州市“用領(lǐng)導(dǎo)方式轉(zhuǎn)變加快發(fā)展方式轉(zhuǎn)變”解放思想大討論活動動員會后,XX黨委按照市委的統(tǒng)一部署,3月9日及時召開了XX“用領(lǐng)導(dǎo)方式轉(zhuǎn)變加快發(fā)展方式轉(zhuǎn)變”解放思想大討論活動動員會,精心組織,扎實(shí)推進(jìn),在全系統(tǒng)內(nèi)迅速掀起了新一輪解放思想熱潮?;仡櫟谝浑A段的工作,主要有以下五個特點(diǎn):
(一)高度重視。市動員會結(jié)束以后,局黨委及時召開了會議,專題研究部署大討論工作,細(xì)化任務(wù),明確責(zé)任。3月9日制定了《XX“用領(lǐng)導(dǎo)方式轉(zhuǎn)變加快發(fā)展方式轉(zhuǎn)變”解放思想大討論活動工作方案》。及時成立了以局黨委書記
1為組長,副書記為副組長,各分管領(lǐng)導(dǎo)為成員的“大討論活動領(lǐng)導(dǎo)小組”。并設(shè)立了辦公室。提出了主要領(lǐng)導(dǎo)親自抓,分管領(lǐng)導(dǎo)具體抓的要求,在XX系統(tǒng)形成了一級抓一級,一級促一級,層層抓落實(shí)的工作格局。
(二)領(lǐng)導(dǎo)帶頭?;顒娱_展的是否順利,效果是否明顯,關(guān)鍵要看領(lǐng)導(dǎo)。在此階段活動中,XX系統(tǒng)各級領(lǐng)導(dǎo)干部都能做到率先垂范,并將其貫穿于活動的各個環(huán)節(jié),體現(xiàn)到工作的各個方面,使領(lǐng)導(dǎo)干部既是活動的組織者,也是活動的先行者,帶頭學(xué)習(xí)討論,帶頭更新觀念,帶頭轉(zhuǎn)變作風(fēng),帶頭改進(jìn)工作,切實(shí)增強(qiáng)了進(jìn)一步解放思想的主動性和積極性,增強(qiáng)落實(shí)科學(xué)發(fā)展觀的堅(jiān)定性和自覺性,積極探索發(fā)展的新理念、新路徑,在抓機(jī)遇中謀思路、破難題、謀跨越、抓發(fā)展,使思想達(dá)到新境界,觀念取得新突破,工作拿出新舉措,實(shí)現(xiàn)水利事業(yè)的新跨越。
(三)真抓實(shí)學(xué)。一是局黨委統(tǒng)一下發(fā)了學(xué)習(xí)筆記,購買了《何平九論》,并從網(wǎng)上下載了一些有關(guān)省重要領(lǐng)導(dǎo)講話的學(xué)習(xí)資料,下發(fā)給各局屬單位和科室,健全了學(xué)習(xí)制度,實(shí)行了學(xué)習(xí)簽到制。二是認(rèn)真組織動員。為了充分提高全XX系統(tǒng)干部職工對大討論活動的認(rèn)識,局黨委及時召開了動員大會,局黨委書記、局長XX同志做了重要講話,紀(jì)委書記XX傳達(dá)了活動方案并就活動的安排進(jìn)行了部署,講解了大討論活動的重要意義,使全體干部職工充分認(rèn)識到了開展大討
論活動的重要性和必要性,把思想統(tǒng)一到省委、市委的決策部署上來,增強(qiáng)了參加大討論活動的自覺性,迅速在全XX系統(tǒng)掀起了大討論活動的熱潮。三是認(rèn)真組織學(xué)習(xí)。利用每周二、五學(xué)習(xí)日統(tǒng)一組織,集中學(xué)習(xí)的形式,認(rèn)真組織學(xué)習(xí)了省委書記盧展工在《人民日報(bào)》發(fā)表的署名文章《用領(lǐng)導(dǎo)方式轉(zhuǎn)變加快發(fā)展方式轉(zhuǎn)變》及有關(guān)重要講話精神,學(xué)習(xí)了《河南日報(bào)》刊發(fā)的何平系列政論文章,學(xué)習(xí)了安陽市市委書記張廣智在動員大會上的講話精神和2月23日來林調(diào)研時的講話精神,學(xué)習(xí)了我市市委書記XX在動員大會上的講話精神和紅旗渠精神等學(xué)習(xí)內(nèi)容,通過每個專題的學(xué)習(xí),要求領(lǐng)導(dǎo)干部職工撰寫了讀書筆記和心得體會、理論文章或調(diào)研報(bào)告,確保了學(xué)習(xí)效果。同時,在學(xué)習(xí)提高的基礎(chǔ)上,我們又及時開展不同層次的學(xué)習(xí)交流會,組織領(lǐng)導(dǎo)干部交流學(xué)習(xí)體會,暢談學(xué)習(xí)收獲,通過座談討論、班子談心活動等,全面加深了用領(lǐng)導(dǎo)方式轉(zhuǎn)變加快發(fā)展方式轉(zhuǎn)變的理解和認(rèn)識。四是加強(qiáng)督導(dǎo)。為推動解放思想大討論活動在全水務(wù)系統(tǒng)取得實(shí)效,局黨委在加強(qiáng)對機(jī)關(guān)開展活動引導(dǎo)的同時,及時向各局屬單位,下發(fā)了《中共XXX委員會關(guān)于成立XX系統(tǒng)“用領(lǐng)導(dǎo)方式轉(zhuǎn)變加快發(fā)展方式轉(zhuǎn)變”解放思想大討論活動領(lǐng)導(dǎo)小組的通知》、《XX系統(tǒng)“用領(lǐng)導(dǎo)方式轉(zhuǎn)變加快發(fā)展方式轉(zhuǎn)變”解放思想大討論活動工作方案》,并要求各局屬單位結(jié)合本單位工作實(shí)際制定相應(yīng)的活動方案、成立領(lǐng)導(dǎo)小
組,局黨委重點(diǎn)對各單位大討論活動的組織領(lǐng)導(dǎo)、工作部署和實(shí)際效果,進(jìn)行督促檢查,保證了活動在全XX系統(tǒng)開展的實(shí)效性。
(三)搞好宣傳。為了擴(kuò)大活動影響,充分調(diào)動大家的積極性,充分利用標(biāo)語、板報(bào)、簡報(bào)等宣傳形式,大力宣傳學(xué)習(xí)貫徹活動中出現(xiàn)的好做法、好經(jīng)驗(yàn)。利用學(xué)習(xí)專欄,及時報(bào)道活動開展情況。解放思想大討論活動辦公室針對每個學(xué)習(xí)專題專門印發(fā)活動簡報(bào),有力指導(dǎo)和推動了活動的開展。
(四)聯(lián)系實(shí)際。為增強(qiáng)對工作的指導(dǎo)性,實(shí)效性,全水系統(tǒng)在解放思想大討論活動中,緊緊圍繞我市加快建設(shè)三省交界區(qū)域中心城市提供水利支撐和保障的思路,以解放思想和轉(zhuǎn)變作風(fēng)為重點(diǎn),著力抓好以下具體工作。一是綜合運(yùn)用現(xiàn)代管理手段和方法探索適合全市XX改革發(fā)展的管理模式;二是加大對執(zhí)法人員的培訓(xùn);三是完善管理規(guī)章制度;四是按照中央一號文件精神搶抓機(jī)遇,加快基層設(shè)施建設(shè)步伐;五是按照解放思想大討論活動目標(biāo)要求進(jìn)一步增強(qiáng)全系統(tǒng)發(fā)展為民、團(tuán)結(jié)奮進(jìn)的凝聚力。
(五)效果明顯。一是通過學(xué)習(xí)動員階段的組織發(fā)動、學(xué)習(xí)和宣傳,使廣大干部職工增強(qiáng)了開展大討論活動的自覺性,明確了大討論活動的指導(dǎo)思想和重大意義,明確了大討論活動的重要內(nèi)容和方法步驟,都能夠積極投身到活動中,學(xué)習(xí)了規(guī)定的學(xué)習(xí)內(nèi)容,達(dá)到了統(tǒng)一思想、提高認(rèn)識的目的,取得了明顯成效。二是通過廣泛的學(xué)習(xí)討論,促使大家對八個進(jìn)一步有了更深刻的理解和認(rèn)識,即:一是進(jìn)一步增強(qiáng)搶抓機(jī)遇、應(yīng)對挑戰(zhàn)的洞察力;二是進(jìn)一步增強(qiáng)駕馭全局、統(tǒng)籌協(xié)調(diào)的掌握力;三是進(jìn)一步增強(qiáng)遵循規(guī)律、實(shí)事求是的運(yùn)作力;四是進(jìn)一步增強(qiáng)從容清醒、化危為機(jī)的應(yīng)對力;五是進(jìn)一步增強(qiáng)敢想敢干、銳意進(jìn)取的創(chuàng)新力;六是進(jìn)一步增強(qiáng)實(shí)干為先、求實(shí)求效的執(zhí)行力;七是進(jìn)一步增強(qiáng)恪盡職守、忠誠履責(zé)的向心力;八是進(jìn)一步增強(qiáng)發(fā)展為民、團(tuán)結(jié)奮進(jìn)的凝聚力。全系統(tǒng)解放思想大討論活動第一階段的系統(tǒng)學(xué)習(xí)任務(wù)已結(jié)束,已完成了規(guī)定的學(xué)習(xí)任務(wù)。
二、下步工作打算
(一)繼續(xù)開展好學(xué)習(xí)活動。為了提高學(xué)習(xí)的質(zhì)量,保證學(xué)習(xí)的效果,各局屬單位和各科室要結(jié)合查擺問題,對于活動方案中沒有學(xué)完的書目,進(jìn)一步加強(qiáng)學(xué)習(xí)搞好自學(xué),嚴(yán)格落實(shí)“三個必須”:必須按方案中的書目內(nèi)容,通讀每篇文章,劃出學(xué)習(xí)重點(diǎn);必須在筆記上摘錄每篇文章的重點(diǎn)內(nèi)容,領(lǐng)會文章要義;必須結(jié)合自身思想實(shí)際,邊學(xué)習(xí)邊思考,寫出心得體會。局黨委將對個人讀書筆記和心得體會統(tǒng)一進(jìn)行檢查。
(二)要廣泛征求意見。各局屬單位和各科室要以座談討論、談心交流、走訪調(diào)研、設(shè)置征求意見箱、發(fā)放征求意見表等形式,結(jié)合自身業(yè)務(wù),廣泛征求意見和建議。
(三)要認(rèn)真查找問題。在走訪調(diào)研的基礎(chǔ)上,各局屬單位和各科室要對照科學(xué)發(fā)展觀要求,按照活動方案的要求,結(jié)合工作職能,結(jié)合業(yè)務(wù)范圍,結(jié)合自身素質(zhì),著力解決本單位領(lǐng)導(dǎo)干部在思想觀念、體制機(jī)制、方式方法等方面存在的突出問題。領(lǐng)導(dǎo)干部和科室長(主任)要以身作則,帶頭查找問題。對查找到的問題要提出整改要求,明確整改責(zé)任。
(四)要開好民主生活會。各局屬單位領(lǐng)導(dǎo)班子要開好一次高質(zhì)量的民主生活會,要圍繞機(jī)制、憂患、規(guī)律、大局、創(chuàng)新、責(zé)任、求實(shí)、為民等八個方面,深刻討論反思在思想觀念、思維方式、體制機(jī)制、工作思路、工作方法、工作作風(fēng)等方面存在的與轉(zhuǎn)變發(fā)展方式不相適應(yīng)、不相符合的突出問題,深刻剖析原因,澄清領(lǐng)導(dǎo)班子和領(lǐng)導(dǎo)干部在領(lǐng)導(dǎo)方式上存在的模糊認(rèn)識。通過開展批評和自我批評,深入剖析根源,提出整改措施。
二0一一年三月三十日
第四篇:初中歷史課堂小結(jié)的主要方式
初中歷史課堂小結(jié)的主要方式
一個完整的教學(xué)過程應(yīng)該有課堂小結(jié),好的課堂小結(jié)好似教學(xué)的壓軸戲,精心設(shè)計(jì)出生動有趣、行之有效的小結(jié),無疑可以為一堂課錦上添花,收到余音繞梁的奇效:它有利于教師突出教學(xué)重點(diǎn),幫助學(xué)生強(qiáng)化記憶、鞏固知識,有利于學(xué)生將知識條理化、系統(tǒng)化,在頭腦中形成系統(tǒng)的知識。因此,教師應(yīng)該把課堂小結(jié)作為教學(xué)的重要環(huán)節(jié),根據(jù)教材內(nèi)容和學(xué)生情況、認(rèn)真挖掘教材、精心設(shè)計(jì)、選擇合適的方法做好課堂小結(jié),才能提高教學(xué)質(zhì)量。
一、圖表式小結(jié)
對于每一單元之后的科技文化、宗教、思想、藝術(shù)等領(lǐng)域的學(xué)習(xí),采用圖示或表格形式進(jìn)行小結(jié)是最簡潔的。它通過將課堂講授內(nèi)容進(jìn)行概括整理,突出重點(diǎn)地進(jìn)行一定的歸類、比較,能幫助學(xué)生利用表格從不同角度、多方聯(lián)系辨別分析,找出規(guī)律,找出異同,看清知識脈絡(luò),便于記憶。例如,在學(xué)習(xí)完初中歷史八年級上冊第三單元“新民主主義革命的興起”后,我與學(xué)生一同回顧了本章從五四愛國運(yùn)動和中國共產(chǎn)黨的成立開始,到長征的勝利這一時期的知識點(diǎn),在學(xué)生的回答聲中和我的引導(dǎo)下,一同完成表格。
二、圖示式小結(jié)
如果能配合相應(yīng)的知識結(jié)構(gòu)圖解表解,效果會更好。比如在講完九年級上第10課《英國資產(chǎn)階級革命》后,用如下結(jié)構(gòu)圖演示了整體革命過程:導(dǎo)火線(蘇格蘭人民起義)→爆發(fā)標(biāo)志(新議會召開)→階段性勝利(處死國王查理一世)→復(fù)辟(查理二世)→光榮革命→勝利(《權(quán)利法案》)→偉大意義。通過這一圖示,使學(xué)生對英國資產(chǎn)階級革命有了較為直觀的印象。
三、比較式小結(jié)
中外歷史,要注意聯(lián)系,相互比照,很利于教學(xué),也利于學(xué)生記憶。比如講九年級上第17課《日本明治維新》時,就可以用比較法。用“分析比較日本明治維新和中國戊戌變法的異同”作為小結(jié),方便對比記憶。相同點(diǎn)可以從外部環(huán)境、改革的性質(zhì)、改革的內(nèi)容、改革的方式去比較;不同點(diǎn)可以從改革的時間、外部環(huán)境、改革的力量、改革的結(jié)果等方面去比較。
四、歸納式小結(jié)
歸納法是歷史課堂教學(xué)的最常用方法,可以使錯綜復(fù)雜、縱橫交錯的知識點(diǎn)系統(tǒng)化,利于培養(yǎng)學(xué)生的概括能力,提高分析和判斷能力,但和所有教學(xué)環(huán)節(jié)一樣,這里也需要多變的方法使學(xué)生保持興趣和思維的積極狀態(tài),有利于學(xué)生把握重難點(diǎn)。此法以概括本課的知識點(diǎn)和主要內(nèi)容為主,它不是所授新課內(nèi)容的簡單重復(fù),而是對知識內(nèi)容上提綱挈領(lǐng)的歸納和情感上的升華,是對某些歷史事件、歷史現(xiàn)象進(jìn)行規(guī)律性的總結(jié)。如在《鴉片戰(zhàn)爭》的教學(xué)中不妨設(shè)計(jì)一個討論式的小結(jié):學(xué)習(xí)了鴉片戰(zhàn)爭,了解了19世紀(jì)中葉的國內(nèi)外形勢,請大家討論一下,若是沒有林則徐的禁煙,鴉片戰(zhàn)爭還會爆發(fā)嗎?說說你的理由。要求學(xué)生緊緊圍繞本節(jié)課的內(nèi)容進(jìn)行分析討論。這樣不僅重新激起了已經(jīng)削減了的學(xué)習(xí)興趣,而且利于學(xué)生整體上理解鴉片戰(zhàn)爭,對鴉片戰(zhàn)爭這一事件在更深層次上的認(rèn)識,使課堂教學(xué)再上一個新的臺階。
五、承上啟下式小結(jié)
歷史教學(xué)時必須照顧到各個歷史事件和歷史現(xiàn)象之間的連接點(diǎn)。教師在作小結(jié)時,既要突出本課的重點(diǎn),加深學(xué)生對知識的記憶,同時,找準(zhǔn)前后兩課內(nèi)容的聯(lián)系點(diǎn),利用既富有啟發(fā)性,又能暗示新課內(nèi)容的問題,使本節(jié)內(nèi)容與下一課連貫起來,“欲知后事如何,請聽下文分解”,激起學(xué)生對新課內(nèi)容的好奇心。例如,在學(xué)習(xí)七年級上冊的“秦帝國的興亡”后,我總結(jié)道:“通過這節(jié)課的學(xué)習(xí),我們知道公元前221年,秦統(tǒng)一了六國,結(jié)束了長期分裂割據(jù)的局面,建立起我國歷史上第一個統(tǒng)一的多民族的中央集權(quán)國家??汕爻畞砟昃蜏缤隽耍厥蓟实谋┱钦衼砗笫啦槐M的罵名。但是秦始皇真的無一是處嗎?”以此強(qiáng)調(diào)了本節(jié)課的線索,又調(diào)起了學(xué)生學(xué)習(xí)下一課“秦始皇建立中央集權(quán)的措施”的興趣。
六、討論式小結(jié)
在課堂教學(xué)中有著十分重要的作用,它能培養(yǎng)學(xué)生分析問題、解決問題的能力。教師通過提出問題,讓學(xué)生進(jìn)行討論后作出小結(jié),通過創(chuàng)造一種緊張思考問題的良好氛圍,使學(xué)生更透徹地理解教材的有關(guān)知識,鞏固所學(xué)內(nèi)容,同時,它能加強(qiáng)學(xué)生對教學(xué)活動的參與,使學(xué)生成為學(xué)習(xí)的主人。例如,在學(xué)習(xí)“夏商西周的社會與國家”后,我請學(xué)生談?wù)勍ㄟ^今天這堂歷史課的學(xué)習(xí)有哪些收獲。學(xué)生1:西周的分封制,包括它的實(shí)行目的、主要內(nèi)容和作用。學(xué)生2:奴隸制社會的主要社會成員有貴族、平民與奴隸,他們組成了奴隸制社會的階級結(jié)構(gòu)。學(xué)生3:西周的統(tǒng)治者吸取商亡的教訓(xùn),注意治民之道,系統(tǒng)地提出了“禮、樂、刑、政”一整套治民之術(shù),其中最突出的就是“禮”和“刑”。學(xué)生4:還知道了今天所用地名的歷史淵源。在學(xué)生回答的過程中,教師可做適當(dāng)?shù)狞c(diǎn)撥,在學(xué)生回答時,教師可在黑板上做簡單的記錄,以突出本節(jié)課的知識點(diǎn),也可以請優(yōu)等生在最后做出系統(tǒng)歸納,提高學(xué)生對課堂教學(xué)的參與度。
七、練習(xí)鞏固式小結(jié)
這也是較常用的一種方法。教師精心設(shè)計(jì)針對本節(jié)、本章教學(xué)內(nèi)容的練習(xí),學(xué)生通過練習(xí),達(dá)到鞏固知識的目的。為了能取得更好的效果,教師設(shè)計(jì)的練習(xí)要精巧,另外如果是簡單的知識性回顧式的練習(xí),應(yīng)先讓學(xué)習(xí)用少量時間閱讀課文后完成,避免直接從課本上簡單抄錄。比如在講完九年級上第五單元時,可以提問:主要資本主義國家走上資本主義道路的方式有何不同?對前兩個單元進(jìn)行階段性小結(jié)。
八、補(bǔ)充拓展式小結(jié)
不同版本的教材,講述側(cè)重有所不同,由于種種原因,教材中不可能將事件從頭至尾清晰地呈現(xiàn),因此,根據(jù)課本內(nèi)容,對材料進(jìn)行適當(dāng)?shù)难a(bǔ)充,可幫助學(xué)生對事件做更詳細(xì)的了解。例如,在學(xué)習(xí)“抗日戰(zhàn)爭的勝利”后,在做課堂小結(jié)時,我為學(xué)生適時地補(bǔ)充了抗戰(zhàn)取得勝利的其它原因,如國共合作、世界反法西斯戰(zhàn)爭的勝利等。同時,在教學(xué)中,將歷史知識與社會重大時政和社會熱點(diǎn)問題相結(jié)合,可培養(yǎng)學(xué)生運(yùn)用歷史知識分析處理問題的能力,并能做到關(guān)心社會、把握時代的脈搏。因此,教師應(yīng)重視歷史事件與現(xiàn)實(shí)(的結(jié)合,重視歷史的史鑒作用。例如,在學(xué)習(xí)完九年級下冊的“第二次世界大戰(zhàn)”后,我做小結(jié)時,利用一戰(zhàn)二戰(zhàn)的性質(zhì),請同學(xué)們談?wù)劗?dāng)今威脅世界和平安全的因素有哪些,至今未發(fā)生世界大戰(zhàn)的原因是什么,利用戰(zhàn)爭形成的世界格局請同學(xué)們談?wù)劗?dāng)今世界格局的特點(diǎn)。
總之,課堂小結(jié)可以把比較分散的知識點(diǎn)教學(xué)系統(tǒng)化。課堂小結(jié)的方法也是不一而足的,但同樣不可千篇一律,以防學(xué)生在整個課堂教學(xué)中由于疲勞興趣減免而影響效果。課堂小結(jié)猶如一場精彩演出的壓軸戲,有余音繞梁的功效。教師應(yīng)根據(jù)授課內(nèi)容、學(xué)生的具體情況,選擇合適的課堂小結(jié)。
第五篇:個人做站經(jīng)驗(yàn)分享 SEO方式小結(jié)
個人做站經(jīng)驗(yàn)分享 SEO方式小結(jié)
做優(yōu)化很長時間了,在這里我要和大家分享一下我的工作心得,以便能幫助更多的人在工作的道理的越走越順。也希望大家能給我提出寶貴的意見來。
1、網(wǎng)頁標(biāo)簽優(yōu)化,網(wǎng)頁標(biāo)簽優(yōu)化主要包括標(biāo)題標(biāo)簽,關(guān)鍵詞標(biāo)簽,描述標(biāo)簽等。標(biāo)題標(biāo)簽優(yōu)化對搜索引擎非常重要,描述標(biāo)簽千萬不要夸大,要保持和頁面內(nèi)容相符合才能取得效果。標(biāo)題標(biāo)簽長度不超過20個漢字最好。描述標(biāo)簽要清晰明了的寫出網(wǎng)頁簡介內(nèi)容,突出關(guān)鍵詞,不要太長和寫與網(wǎng)頁內(nèi)容不相干的內(nèi)容
2、導(dǎo)航欄目優(yōu)化,導(dǎo)航欄用圖片對于搜索引擎很不利,最好用文字鏈接,并且適當(dāng)對導(dǎo)航欄字體加粗。
3、頁面字體優(yōu)化,網(wǎng)頁內(nèi)容標(biāo)題中包含關(guān)鍵詞可以用加大字體或加粗,文本內(nèi)容出現(xiàn)的關(guān)鍵詞可以用不同的顏色或加粗。如“人才集市”中出現(xiàn)“寧波招聘會:8月15日專場招聘會”那么“寧波招聘會“加粗更有利百度的收錄。另外文本中有其他頁面的關(guān)鍵詞,可將這個關(guān)鍵詞加上超鏈接,導(dǎo)向相關(guān)頁面。如在最新資訊和人才集市中都有”寧波招聘會“這個關(guān)鍵詞,那么可以在最新資訊的”寧波招聘會“做個超鏈接,點(diǎn)擊可以跳到人才集市頁面中的這條消息,這樣有助于提高相關(guān)頁面的訪問量。
4、關(guān)鍵詞密度,每個網(wǎng)頁突出的關(guān)鍵詞不要超過3個,關(guān)鍵詞密度一般在3%左右比較合適。
5、論壇宣傳:有兩種,一種是選擇自己潛在客戶在的論壇,如寧波當(dāng)?shù)刂髁髡搲?另一個是人氣很旺的門戶論壇,如新浪。這里發(fā)帖的質(zhì)量很重要,可以利用口碑宣傳。我想在那發(fā)個有關(guān)招聘會的帖子,然后叫大家去扮演求職者和企業(yè)的角色去回復(fù)帖子,談?wù)劦轿覀冋衅笗F(xiàn)場的一些好的感受來達(dá)到一個好的口碑宣傳。據(jù)我在寧波主流論壇發(fā)布的帖子瀏覽率平均為30左右,在余慈論壇一個招聘會的帖子點(diǎn)擊率達(dá)到140多。即使沒給網(wǎng)站帶來多少點(diǎn)擊率但是曝光率還是挺高的。
6、網(wǎng)站的粘度:網(wǎng)站的內(nèi)容比較能吸引人去看,而且來了一次還會來第二次。網(wǎng)站的內(nèi)容能否吸引人再次來閱讀是很重要的?;蛘呖梢远ㄆ谕瞥鎏厣珜n}來吸引用戶。
7、圖片優(yōu)化,在網(wǎng)頁制作時可以對網(wǎng)站的圖片加入文字注釋,這樣百度根據(jù)關(guān)鍵詞搜索圖片時我們網(wǎng)站的圖片能夠被收錄,從而帶來鏈接。我們也許可以將媒體關(guān)注和公司簡介、團(tuán)體導(dǎo)航中的圖片加些文字注釋測試一下
8、發(fā)外鏈,外部鏈接顧名思義就是自己的內(nèi)容在別人的網(wǎng)站,論壇上出現(xiàn)的頻率度,當(dāng)然越多越好。一定要保證這些鏈接的質(zhì)量,要控制數(shù)量,不能發(fā)的太多,要知道質(zhì)比數(shù)更重要;內(nèi)容即不要太空洞,也不要一直的重復(fù)一樣的;不能偏離主題,也不要到和自己網(wǎng)站無關(guān)的地方發(fā)貼,從而浪費(fèi)資源;每個外鏈指向的可以是你的子頁面,盡量避免每個主題和主頁在保持一致。
9、偽原創(chuàng)(優(yōu)化)
可以聽到無數(shù)的呼聲中都在說增加偽原創(chuàng),因?yàn)檫@是很必須,不是每一個人都是大作家,他們也寫不出曠世奇作,那就要來點(diǎn)虛的了,當(dāng)然這不是就可以說隨便拿別人的東西。要做到不被作者看出,不被收錄工具看出,就是說要面目全非,讓誰看了都說是你寫的就成功了。步驟如下:
1.更改標(biāo)題:這是最關(guān)鍵的,我們可把意思理解了,更換成不一樣的話,但表達(dá)的內(nèi)容要是一致的,只是方式不同罷了;2.修改文章內(nèi)容:改動原創(chuàng)成為自己的東西關(guān)鍵就要看內(nèi)容了,這里最為重要的就是開始和結(jié)束了,這是人們看文章的一種合理習(xí)慣,沒有人會無聊到把每一個字都看仔細(xì)了,這就要看改文章人的水平了,要既要讓關(guān)鍵字出現(xiàn)的合情,又要把文章的內(nèi)容修飾的合理。這樣就可以讓引擎認(rèn)可你了。
10、原創(chuàng)(內(nèi)容)
多寫一些自己的東西傳上去,既真實(shí)被收錄的機(jī)會又高,這是毋庸置疑的。有人就會說了,那去做偽原創(chuàng)多省事啊,這里就要記住了,偽原創(chuàng)無論你做的多真實(shí),思路永遠(yuǎn)是別人的,是在走他們走過的路線,更不要忘了偽原創(chuàng)前面始終都有一個‘偽’字,這就是表明不真實(shí)。所以如果是想推網(wǎng)站的各位站長們就要花更多的心思在原創(chuàng)上了,付出就要收獲,相信這是不變的真理。企業(yè)網(wǎng)站優(yōu)化