《Windows防火墙与网络封包截获技术》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:朱雁辉编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2002
  • ISBN:7505377175
  • 页数:598 页
图书介绍:这本英文原版教材对局域网/城域网技术进行了全面的探讨,既强调了基本原理,也注重在设计局域网/城域网时性能的重要性。本书还涉及了各种高速和无线局域网、与QoS相关的技术以及网络之间的互联和广域网。全书包括四个部分。第一部分提供必要的技术背景,内容包括对数据通信和网络中的一些论题简要回顾以及对协议与TCP/IP协议栈的介绍。第二部分讨论局域网的一般性问题,内容包括局域网实现过程中常用的拓扑结构和传输介质、局域网协议体系结构以及LLC的详细内容。第三部分是本书的重点,主要介绍五种相关类型的局域网,内容包括以太网、令牌环网、光纤信道局域网与无线局域网以及异步传输模式(ATM)局域网。第四部分讨论有关局域网设计的一些问题,包括用网桥进行局域网互联、网际互联、网络管理及性能考虑等问题。本书适合高等院校电子、计算机、通信类专业作为双语教学的教材,也适应专业技术人员参考。

第一部分 Windows网络封包的截获技术 3

第1章 Windows网络协议架构 3

1.1 Windows网络协议的实现 3

1.2 Windows操作系统的总体架构 3

1.3 网络7层协议在Windows中的实现 5

1.4 TCP/IP协议的架构 7

1.5 TCP/IP协议在Windows中的实现 9

第2章 编程环境的构建 10

2.1 硬件需求 10

2.2 软件需求 11

2.3 软件安装 11

2.4 VC6 IDE环境的设置 11

2.5 编译并测试Winsock示例程序 13

2.6 编译并测试DDK示例程序 15

2.6.1 测试驱动程序示例程序 15

2.6.2 编译驱动程序示例程序 16

2.6.3 在VC环境下编译驱动程序 17

第3章 用传输层过滤驱动程序截获网络封包 21

3.1 一个最小化的驱动程序 21

3.1.1 MinDriver.h代码清单 21

3.1.2 MinDriver.c代码清单 22

3.2 过滤驱动程序的特性 23

3.3 传输层过滤驱动程序实例 24

3.3.1 在Packet.h里定义的宏和结构类型 24

3.3.2 FilterTdiDriver入口函数DriverEntry 26

3.3.3 用来绑定过滤驱动程序的函数TCPFilter_Attach 27

3.3.4 卸载驱动程序的函数DriverUnload 30

3.3.5 解除挂接的函数TCPFilter_Detach 32

3.3.6 用来分发IRP请求的函数PacketDispatch 33

3.3.7 IRP处理完成后的回调函数PacketCompletion 37

3.3.8 工程文件Source 38

第4章 用NDIS中间驱动程序截获网络封包 39

4.1 NDIS简介 39

4.2 中间驱动程序的特性 39

4.3 编译、安装和测试xpassthru 41

4.4 xpassthru的架构 43

4.5 xpassthru使用的宏、结构和全局变量 44

4.6 xpassthru的入口函数DriverEntry 47

4.7 注册Miniport设备的函数MPRegisterAsMiniport 49

4.8 注册Protocol设备的函数MPRegisterAsMiniport 50

4.9 Miniport接口函数 52

4.10 Protocol接口函数 54

4.11 发送封包的函数 58

4.11.1 MPSend 58

4.11.2 MPSendOnePacket 59

4.11.3 MPSendPackets 61

4.11.4 PtSendComplete 62

4.11.5 MPTransferData 63

4.11.6 PtTransferDataComplete 64

4.12 接收封包的函数 65

4.12.1 PtReceive 65

4.12.2 PtReceiveComplete 69

4.12.3 PtReceivePacket 70

4.12.4 MPReturnPacket 72

4.13 得到封包属性的函数 73

4.14 source内容清单 75

第5章 Winsock 2 SPI编程技术 77

5.1 Winsock2 SPI基础 77

5.1.1 WinsockAPI与SPI的对应关系 78

5.2 传输服务提供者 79

5.2.1 最小化的基础服务提供者例程 84

5.2.2 最小化的分层服务提供者例程 90

第6章 用Winsock 2 SPI截获网络封包 106

6.1 运行程序 106

6.1.1 建立截获封包的DLL工程 107

6.1.2 建立用来安装的EXE工程 108

6.2 编写安装程序 109

6.2.1 输出调试信息的宏 110

6.2.2 安装程序代码 111

6.2.3 CXInstall类 114

6.2.4 构造完整的安装程序 127

6.3 编写截获TCP/IP封包的DLL程序 129

6.3.1 全局变量 129

6.3.2 DllMain 130

6.3.3 WSPStartup 132

6.3.4 截获的服务提供者函数 135

6.3.5 工程配置文件TcplpDog.Def 148

6.3.6 设置、编译和测试TcplpDog 149

第二部分 Xfilter个人防火墙实例剖析 153

第7章 Xfilter个人防火墙系统设计 153

7.1 Xfilter的核心功能分析 153

7.2 程序工作流程图 155

7.3 Xfilter的主体功能 156

7.4 模块划分 157

7.4.1 模块划分原则 158

7.4.2 模块结构图 158

7.4.3 模块接口定义 162

7.4.4 制定测试方法 163

7.5 控管规则文件结构设计 164

7.5.1 控管规则文件需要存储的内容 164

7.5.2 控管规则文件结构 167

7.5.3 日志文件需要存储的内容 170

7.5.4 日志文件结构 170

7.6 网络命令结构 172

7.7 界面设计 173

7.7.1 制定界面风格 173

7.7.2 界面设计工具选择 173

7.7.3 界面设计文档 174

7.8 选择开发工具和制定编码规则 179

7.8.1 选择开发工具 179

7.8.2 编码规则 180

第8章 Xfilter.dll的封包截获 182

8.1 封包截获相关代码分析 182

8.1.1 Xfilter.dll的入口函数DllMain 182

8.1.2 服务提供者入口函数 184

8.1.3 截获的服务提供者函数 189

8.1.4 与Xfilter.exe的接口函数XfloControl 201

8.1.5 询问是否放行的函数QueryAccess 203

8.2 相关知识点说明 207

8.2.1 在不同的进程间共享数据 207

8.2.2 全局变量的临界操作 208

8.2.3 Win9x与WinNT/2000不同的DLL调用方式 208

8.2.4 在DLL中向进程发送消息完成通信 209

第9章 Xfilter.dll的访问控管 210

9.1 CCheckAcl类的原型 210

9.2 CCheckAcl类的成员变量和函数 212

9.3 对服务提供者函数做管制的函数 213

9.3.1 CheckStartup 213

9.3.2 CheckSocket 214

9.3.3 CheckCloseSocket 215

9.3.4 CheckConnect 216

9.3.5 CheckAccept 217

9.3.6 CheckSend 218

9.3.7 CheckSendTo 219

9.3.8 CheckRecv 220

9.3.9 CheckRecvFrom 221

9.4 封包处理函数 223

9.4.1 InitializeSession 223

9.4.2 CreateSession 224

9.4.3 DeleteSession 225

9.4.4 FindSession 227

9.4.5 SetSession 227

9.4.6 SetSessionEx 229

9.4.7 FinallySession 230

9.4.8 SendSessionToApp 231

9.4.9 GetSessionAndSetSessionNull 232

9.5 管制函数 232

9.5.1 IsLocalIP 232

9.5.2 GetAccessInfo 234

9.5.3 GetAccessFromWorkMode 234

9.5.4 GetAccessFromAcl 235

9.5.5 FindAcl 240

9.5.6 FindTime 240

9.5.7 FindIP 242

9.6 初始化和清理函数 244

9.6.1 CCheckAcl 244

9.6.2 ~CCheckAcl 244

9.6.3 SetWindowsVersion 244

9.7 设置函数 246

9.7.1 IsWin9x 246

9.7.2 SetGuiProcessName 246

9.7.3 SetGuiWnd 247

9.7.4 GetGuiWnd 247

9.7.5 SetWorkMode 247

9.7.6 GetWorkMode 248

9.7.7 SetAcl 248

9.7.8 SetAclToChangedMode 249

9.8 相关知识点说明 250

9.8.1 类的构造函数和析构函数 250

9.8.2 全局变量的定义和使用 251

9.8.3 用指针实现动态数组 251

第10章 Xfilter.dll的协议解析和公用函数分析 252

10.1 典型的协议封包数据 252

10.1.1 HTTP协议包头实例 252

10.1.2 FTP下载/上传文件封包实例 252

10.1.3 SMTP发送邮件封包实例 253

10.1.4 POP3接收邮件封包实例 254

10.2 CProtocolInfo类原型 257

10.3 CProtocolInfo类的成员函数列表 258

10.4 供外部调用的公共函数 258

10.4.1 GetProtocolInfo 258

10.5 类内部调用的私有函数 259

10.5.1 GetFromSend 259

10.5.2 GetFromRecv 260

10.5.3 GetFtp 260

10.5.4 GetHttp 262

10.5.5 GetSmtp 264

10.5.6 GetPop3BySend 265

10.5.7 GetPop3 266

10.6 公共模块CXCommon类 268

10.6.1 CXCommon类的原型 268

10.6.2 CXCommon类的成员函数列表 268

10.6.3 DIPToSIP 269

10.6.4 GetBit 269

10.6.5 SetBit 270

10.6.6 GetAppPath 270

10.6.7 GetPath 272

10.6.8 GetName 272

10.7 生成Xfilte.dll的工程文件(LspServ.def) 273

10.8 小结 274

第11章 Xfilter.exe与Xfilter.dll的接口 275

11.1 建立界面工程 275

11.2 主应用程序类CPropertyApp 277

11.2.1 CPropertyApp类的原型 278

11.2.2 CPropertyApp类的变量 279

11.2.3 初始化函数 280

11.2.4 退出函数 287

11.2.5 菜单函数 291

11.2.6 其他函数 295

11.3 隐藏的主窗口类CMainFrame 298

11.3.1 CMainFrame类的原型 298

11.3.2 CMainFrame类的变量列表 299

11.3.3 CMainFrame类的自定义消息处理函数 300

11.3.4 CMainFrame类使用的线程函数 304

11.3.5 CMainFrame类的其他成员函数 306

11.4 在任务栏上显示图标的类CSystemTray 310

11.4.1 CSvstemTray类的原型 310

11.4.2 CSystemTray类的成员变量 311

11.4.3 CSystemTray类的成员函数 311

11.5 小结 320

第12章 Xfilter.exe的文件操作 321

12.1 控管规则文件操作类CAclFile 321

12.1.1 CAclFile类的原型 321

12.1.2 CAclFile类的成员变量 322

12.1.3 CAclFile类的构造和析构函数 323

12.1.4 CAclFile类的公有函数 324

12.1.5 CAclFile类的私有函数 333

12.2 日志文件操作类CXLogFile 347

12.2.1 CXLogFile类的原型 347

12.2.2 CXLogFile类的成员变量 348

12.2.3 CXLogFile类的构造和析构函数 348

12.2.4 CXLogFile类的公有函数 349

12.2.5 CXLogFile类的私有函数 355

第13章 用户注册和下载网络命令 360

13.1 用户注册窗口类CRegister 360

13.1.1 CRegister类的原型 360

13.1.2 CRegister类的成员变量 362

13.1.3 VC中界面元素对象与变量的绑定 362

13.1.4 CRegister类的成员函数 363

13.2 用户注册和下载网络命令类CHttpRequest 367

13.2.1 CHttpRequest类的原型 368

13.2.2 CHttpRequest类的变量 369

13.2.3 构造和析构函数 369

13.2.4 网络请求函数 370

13.2.5 用户注册函数 377

13.2.6 下载网络命令函数 382

13.3 模拟超级链接类CHyperLink 390

13.3.1 CHyperLink类的原型 390

13.3.2 CHyperLink类的成员变量 391

13.3.3 CHyperLink类的成员函数 392

13.4 可以更改字体颜色的标签类CColorStatic 399

13.4.1 CColorStatic类的原型 399

13.4.2 CColorStatic类的成员变量 399

13.4.3 CColorStatic类的成员函数 399

第14章 Xfilter.exe的属性页界面 401

14.1 属性页总窗口类CMainSheet 401

14.1.1 CMainSheet类的原型 401

14.1.2 CMainSheet类的变量 403

14.1.3 CMainSheet类的成员函数 403

14.2 封包监视窗口类CPacketMonitor 412

14.2.1 CPacketMonitor类的原型 412

14.2.2 CPacketMonitor类的成员变量 414

14.2.3 CPacketMonitor类的成员函数 414

14.3 日志查询窗口类CLogQuery 420

14.3.1 CLogQuery类的原型 420

14.3.2 CLogQuery类的成员变量 422

14.3.3 CLogQuery类的成员函数 422

14.4 控管规则窗口类CAcl 431

14.4.1 CAcl类的原型 432

14.4.2 CAcl类的成员变量 434

14.4.3 CAcl类成员函数 434

14.5 系统设置窗口类CSystemSet 446

14.5.1 CSystemSet类的原型 447

14.5.2 CSystemSet类的成员变量 448

14.5.3 CSystemSet类的成员函数 449

14.6 关于窗口类CAbout 451

14.7 增加欢迎画面 452

第15章 Xfilter.exe的控管规则设置 454

15.1 控管规则设置窗口类CAclSet 454

15.1.1 CAclSet类的原型 454

15.1.2 CAclSet类的成员变量 456

15.1.3 CAclSet类的成员函数 456

15.2 网络/时间设置窗口类CNetTimeSheet 468

15.2.1 CNetTimeSheet类的原型 469

15.2.2 CNetTimeSheet类使用的全局变量 470

15.2.3 CNetTimeSheet类的成员函数 470

15.3 时间设置窗口类CSetTime 475

15.3.1 CSetTime类的原型 475

15.3.2 CSetTime类的成员变量 477

15.3.3 CSetTime类的成员函数 477

15.4 网络设置窗口类CSetNet 486

15.4.1 CSetNet类的原型 486

15.4.2 CSetNet类的成员变量 488

15.4.3 CSetNet类的成员函数 488

15.5 IP地址段设置窗口类CNetIPAria 501

15.5.1 CNetIPAria类的原型 501

15.5.2 CNetIPAria类的成员变量 503

15.5.3 CNetIPAria类的成员函数 503

15.6 小结 504

第16章 联机帮助的实现 505

16.1 帮助文件制作方法简介 505

16.1.1 选择工具 505

16.1.2 制作方法 505

16.2 在帮助文件中使用API主题映射 512

16.3 将帮助文件应用到程序中 514

第17章 打包与测试 516

17.1 安装程序的制作 516

17.2 测试 523

17.3 Xfilter的部分测试文档 524

17.4 小结 532

第三部分 附录 535

附录A 传输服务提供者函数 535

A.1 WSPAccept 535

A.2 WSPAddressToString 537

A.3 WSPAsyncSelect 538

A.4 WSPBind 539

A.5 WSPCancelBlockingCall 540

A.6 WSPCleanup 541

A.7 WSPCloseSocket 541

A.8 WSPConnect 542

A.9 WSPDuplicateSocket 545

A.10 WSPEnumNetworkEvents 546

A.11 WSPEventSelect 547

A.12 WSPGetOverlappedResult 547

A.13 WSPGetPeerName 549

A.14 WSPGetQOSByName 550

A.15 WSPGetSockName 551

A.16 WSPGetSockOpt 552

A.17 WSPIoctl 553

A.18 WSPJoinLeaf 555

A.19 WSPListen 557

A.20 WSPRecv 559

A.21 WSPRecvDisconnect 561

A.22 WSPRecvFrom 562

A.23 WSPSelect 565

A.24 WSPSend 567

A.25 WSPSendDisconnect 569

A.26 WSPSendTo 570

A.27 WSPSetSockOpt 574

A.28 WSPShutdown 575

A.29 WSPSocket 576

A.30 WSPStartup 578

A.31 WSPStringToAddress 579

附录B Xfilter宏代码 581

B.1 最大值代码 581

B.2 网络命令代码 581

B.3 用户注册代码 581

B.4 日志文件相关代码 582

B.5 自定义消息代码 582

B.6 控管规则文件相关代码 582

B.7 错误代码 583

B.8 控制代码 584

B.9 访问权限控制代码 585

B.10 其他控管规则的相关代码 585

附录C Xfilter结构类型 587

C.1 Internet结构类型 587

C.1.1 XUSER_INFO 587

C.1.2 XNET_COMMAND_HEADER 588

C.2 控管规则结构类型 589

C.2.1 XACL_HEADER 589

C.2.2 XACL 591

C.2.3 XACL_IP 591

C.2.4 XACL_TIME 592

C.2.5 XACL_FILE 592

C.3 封包结构类型 593

C.3.1 SESSION 593

C.3.2 QUERY_SESSION 594

C.4 控制结构类型 594

C.4.1 XFILTER_IO_CONTROL 594

C.5 日志文件结构类型 595

C.5.1 LOG_HEADER 595

C.5.2 LOG_FIND 595

附录D Xfilter全局变量 597

D.1 Xfilter.dll使用的全局变量列表 597

D.2 Xfilter.exe使用的全局变量列表 598