《毕业设计(论文)嗅探器的开发与设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)嗅探器的开发与设计.doc(32页珍藏版)》请在三一办公上搜索。
1、0304080104学号: 吉林农业大学发展学院毕业设计 (论文)嗅探器的开发与设计 信息工程学院学生姓名: 计算机科学与技术学 院: 2008级网络工程班专 业:班 级:指导教师:2012年5月28日摘 要现今网络技术的发展和网络应用的普及,越来越多的信息资源放在了互联网上,来让人们浏览下载等。因此网络的安全性和可靠性显得越发重要。嗅探器Sniffer是一种利用计算机网络接口件事网络数据运行、截获网络数据的工具,可用于网络管理、网络协议分析以及网络安全等众多方面。在网络攻防技术中,嗅探器是最为基础的一种技术。从供给的角度,黑客可以利用嗅探器程序非法获取网络中传输的大量敏感信息,如账号和口令等
2、,对网络安全极具威胁;从防守的角度,嗅探技术是基于网络入侵检测系统的最底层环节,是整个系统的数据来源。本次课程设计通过分析网络上常用的嗅探器,在了解其功能和原理的基础上,以Visual C+ 为开发平台设计并实现一款基于Windows环境下的网络嗅探器。按照网络工程的思想进行设计、实现和测试。关键字: 网络嗅探器 数据包捕获 数据包分析 原始套接字AbstractAlong with the development of network technology and popularization of the network applications, more and more of the
3、 information resources on the Internet, the safety and reliability of the network is becoming more and more important. Sniffer is a use of computer network interface thing network data operation, intercept of network data tools, can be used for network management, network protocol analysis and netwo
4、rk security etc. In the network attack and defense technology, sniffer is the most basic kind of technology. From the point of view of supply, hackers can use sniffer program for the transmission of illegal network of sensitive information, such as account and password, etc, to extremely network sec
5、urity threats; From the point of view of defense, sniffer technique is based on the network intrusion detection system of the bottom link is the source of data for the whole system. This course design through the analysis on the network of commonly used a sniffer in understanding the functions and p
6、rinciples, and on the basis of Visual C+ for development platform to design and implement a Windows environment based on the network sniffer. According to the network project design, implementation and thoughts on the test. For the sniffer the general framework design, divided five parts, respective
7、ly is bottom data cache, and data access layer, data capture, protocol analysis and data filtering and the top graphical user interface. To realize the interface, the source network protocol IP address, destination IP address and port number display of the information such as the program, so that it
8、 can be a comprehensive analysis of the information for the user reference decisions.Key words: network sniffer capture data packet analyze data capture; raw sockets目 录目录5引 言5第1章 概述61.1介绍论文的研究目的、意义;61.2Sniffer的简介61.3Snifffer的分类61.4应用背景7第2章 嗅探器主要技术82.1sniffer的工作原理82.2SOCKET编程和常用的函数102.3Sniffer协议分析11第
9、3章 Sniffer设计与实现14第4章 嗅探器的网络安全中的应用204.1嗅探器可能造成的危害:204.2Sniffer攻击方法204.3如何防御Sniffer攻击 :21结 束 语25参 考 文 献26附 录 I:英文原文27附 录 II:译文28引 言网络嗅探器对许多人来说并不陌生或多或少都听说过和了解是做什么的,在现今的网络中它的应用是十分广泛的。顾名思义,网络嗅探器是作用在网络上的一种监听程序,它是系统管理员的一个得力助手,管理员可以用它来分析网络。可以利用计算机网络接口截获所需网络内部数据的报文,他广泛地应用于流量分析、安全监控、网管分析、防火墙等的实现中。Sniffer主要被用来
10、在网络上截获位于OSI协议模型中各个协议层次上的数据包,通过对截获数据包的分析,嗅探器可以掌握目标主机的信息。由于与具体平台的网络协议栈密切相关,并涉及网络安全的敏感问题,网络嗅探一般没有通用的实现方法。所以说sniffer对诊断网络的状况是广大网络技术人员不可缺少的工具之一。第1章 概述1.1介绍论文的研究目的、意义;现今嗅探产业已成为IT产业的重要领域,作为业余休闲娱乐的方式之一,盗号受到人们的喜爱,而嗅探器的开发和发展也成为一个重要的专业计算机领域。嗅探器有好的一面也有不好的一面,所以我们要用利来防止弊。此文就是想通过介绍sniffer来让人们进一步的了解sniffer的用途,是怎样抓包
11、的,sniffer的危害及防范。在该设计中将把重点放在基于网络数据的抓包,学习和熟悉网络技术嗅探实现的路径,以及熟悉运用中常见的技术、物理等相关知识,了解开发的原理。写此文的主要目的就是让更多的人们懂得sniffer是什么,怎么用,以及防范。在此文中sniffer主要采用了SOCKET 技术对sniffer的开发与设计进行研究TCP/IP协议中TCP/UDP/IP/ICMP等协议的内容与分析,也是运用C+代码程序实现的。1.2Sniffer的简介Sniffer是利用计算机的网络接口截获目的地为其他计算机的书籍报文的一种工具。Sniffer的正当用处主要是分析网络的流量,以便找出所关心的网络中潜
12、在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此是就可以用Sniffer截获网络中的数据包,分析问题的所在。当信息以明文的形式在网络上传输时,便可以使用网络监听的方式来进行攻击。将网络接口设置在监听模式,便可以将网上传输的源源不断的信息截获。Sniffer技术常常被黑客们用来截获用户的口令,据说某个骨干网络的路由器网段曾经被黑客攻入,并嗅探到大量的用户口令。但实际上Sniffer技术被广泛地应用于网络故障诊断、协议分析、应用性能分析和网络安全保障等各个领域。1.3Snifffer的分类Sniffer分为软件和硬件两种,软件的Sniffer有N
13、etXray、Packetboy、Net Monitor、Sniffer Pro、WireShark、WinNetCap等,其优点是物美价廉,易于学习使用,同时也易于交流;缺点是无法抓取网络上所有的传输,某些情况下也就无法真正了解网络的故障和运行情况。硬件的Sniffer通常称为协议分析仪,一般都是商业性的,价格也比较贵。我介绍的Sniffer指的是软件。它把包抓取下来,然后打开并查看其中的内容,可以得到密码等。Sniffer只能抓取一个物理网段内的包,就是说,你和监听的目标中间不能有路由或其他屏蔽广播包的设备,这一点很重要。所以,对一般拨号上网的用户来说,是不可能利用Sniffer来窃听到其
14、他人的通信内容的。 1.4应用背景Sniffer无论是在网络安全还是在黑客攻击方面均扮演了很重要的角色。通过使用Sniffer可以把网卡设置于混杂模式,并可实现对网络上传输的数据包的捕获与分析。此分析结果可供网络安全分析之用,但如为黑客所利用也可以为其发动进一步的攻击提供有价值的信息。可见,Sniffer实际是一把双刃剑。虽然网络嗅探技术被黑客利用后会对网络安全构成一定的威胁,但Sniffer本身的危害并不是很大,主要是用来为其他黑客软件提供网络情报,真正的攻击主要是由其他黑软来完成的。而在网络安全方面,网络嗅探手段可以有效地探测在网络上传输的数据包信息,通过对这些信息的分析利用是有助于网络安
15、全维护的,来权衡利弊。第2章 嗅探器主要技术2.1sniffer的工作原理 Sniffer利用的是共享式的网络传输介质。共享即意味着网络中的一台机器可以嗅探到传递给本网段中的所有机器的报文。例如最常见的以太网就是一种共享式的网络技术,以太网卡收到报文后,通过对目的地址进行检查,来判断是否是传递给自己的,如果是,则把报文传递给操作系统;否则,将报文丢弃,不进行处理;网卡存在一种特殊的工作模式,在这种工作模式下,网卡不对目的地址进行判断,而直接将他收到的所有报文都传递给操作系统进行处理,这种特殊的工作模式,就称之为混杂模式。网络嗅探器通过将网卡设置为混杂模式来实现对网络的嗅探。 一个实际的主机系统
16、中,数据的收发是由网卡来完成的,当网卡接收到传输来的数据包时,网卡内的单片程序首先解析数据包的目的网卡物理地址,然后根据网卡驱动程序设置的接收模式判断该不该接收,认为该接收就产生中断信号通知CPU,认为不该接收就丢掉数据包,所以不该接收的数据包就被网卡截断了,上层应用根本就不知道这个过程。CPU如果得到网卡的中断信号,则根据网卡的驱动程序设置的网卡中断程序地址调用驱动程序接收数据,并将接收的数据交给上层协议软件处理。通常在同一个网段的所有网络接口都有访问在物理媒体上传输的所有数据的能力,而每个网络接口都还应该有一个硬件地址,该硬件地址不同于网络中存在的其他网络接口的硬件地址,同时,每个网络至少
17、还要一个广播地址。代表所有的接口地址,在正常情况下,一个合法的网络接口应该只响应这样的两种数据帧: 1、帧的目标区域具有和本地网络接口相匹配的硬件地址。 2、帧的目标区域具有广播地址。 在接受到上面两种情况的数据包时,计算机通过cpu产生一个硬件中断,该中断能引起操作系统注意,然后将帧中所包含的数据传送给系统进一步处理。 而sniffer就是一种能将本地计算机状态设成杂乱状态的软件,当网络计算机处于这种混杂方式时,该计算机具备广播地址,它对所有遭遇到的每一个帧都产生一个硬件中断以便提醒操作系统处理流经该物理媒体上的每一个报文包。(绝大多数的计算机具备置成 promiscuous方式的能力) 可
18、见,sniffer工作在网络环境中的底层,它会拦截所有的正在网络上传送的数据,并且通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体布局。值得注意的是:sniffer是极其安静的,它是一种消极的安全攻击。监听络通常包括以下几种:(1)以大网在实际中应用广泛,很容易被监听。以大网的工作原理是:将要发送的数据包发往连接在一起的所有主机,在包中包含着应该接收数据包的主机的正确地址。因此,只有与数据包中目标地址一致的那台主机才能接收信包。但是,当主机工作在监听模式下,无论数据包中的目标物理地址是什么,主机都将接收。(2)FDDI、Token- ring不是广播型网络,但包在传
19、输过程中是沿环传送的,高的传输率使监听变得困难。(3)使用电话线被监听的可能性中等,电话线可以被一些与电话公司协作的人或者一些有机会在物理上访问到线路的人搭线窃听,在微波线路上的信息也会被截获。在实际中,高速的MODEM比低速的MODEM搭线困难的多。(4)通过有线电视信道传送IP被监听的可能性比较高,可以被一些可以物理上访问到TV电缆的人截获。(5)微波和无线电被监听的可能性比较高,无线电本来上一个广播型的传输媒介,任何一个无线电接受机的人可以截获那些传输的信息。Sniffer可以是硬件,也可以是软件,它用来接收在网络上传输的信息。网络可以是运行在各种协议之下的。包括Ethernet、TCP
20、/IP、ZPX等等。Sniffer使网络接口处于监听模式,从而可从截获网络上的所有内容。在这种意义上,每一个机器,每一个路由器都是一个Sniffer(或者至少可以说它们可以成为一个Sniffer)。要使一台机器成为一个Sniffer,则或者需要一个特殊的软件(Ethernet卡的广播驱动程序)或者需要一种网络软件能使网络处于监听模式。要使主机工作在监听模式下,需要向网络接口发送I/O控制命令,将其设置为监听模式。在Unix系统中,发送这些命令需要超级用户的权限。这一点使得普通用户不能进行网络监听,只有获得超级使用户权限,才能进行网络监听。但是,在Windows中,则没有这个限制。对于一个施行网
21、络攻击的人来说,能攻破网关、路由器、防火墙的情况极为少见,在这里完全可以由安全管理员安装一些设备,对网络进行监控,或者使用一些专门设备,运行专门的监听软件,并防止任何非法访问。然而,潜入一台不引人注意的计算机中,悄悄地运行一个监听程序,一个攻击者是完全可以做到的。sniffer对来往数据包进行侦听,发现感兴趣的包。如果发现符合条件的包,就把它存到一个log文件中去。通常设置的这些条件是包含字username或password的包。Sniffer必须是位于准备进行Sniffer工作的网络上的,它可以放在网络段中的任何地方。网络监听软件运行时,需要消耗大量的处理器时间,此时就详细地分析包中的内容,
22、许多包就会来不及接收而漏掉,因此,网络监听软件通常都是将监听到的包存放在文件中,待以后再分析。sniffer通常运行在路由器,或有路由器功能的主机上。这样就能对大量的数据进行监控。sniffer属第二层次的攻击。通常是攻击者已经进入了目标系统,然后使用sniffer这种攻击手段,以便得到更多的信息。当连接在同一条电缆或集线器上的主机被逻辑地分为几个子网时,如果一台主机处于监听模式下,它还能接收到发向与自己不在同一子网(使用了不同的掩码、IP地址和网关)的主机的那些信包。也就是说,在同一条物理信道上传输的所有信息都可以被接收到。网络监听常常要保存大量的信息,并对收集的大量信息进行整理,因此,正在
23、进行监听的机器对用户的请来响应很慢。网络监听常常被用来获取用户的口令。当前网上的数据绝大多数是以明文的形式使软而且口令通常都很短且容易辨认。当口令被截获,则可以非常容易地登上另一台主机。一个Sniffer可能截获网络上所有的信息。通常包括以下信息:Sniffer可以截获用户明文传送的ID和口令。这大概是绝大多数非法使用sniffer的理由。Sniffer能够捕获专用的或者机密的信息。比如截获在网上传送的用户姓名、口令、信用卡号码、截止日期、帐号和pin。偷窥机密或敏感的信息数据,记录别人敏感的信息传送,或者干脆拦截整个的email会话过程。Sniffer可以用来危害网络邻居的安全,或者用来获取
24、更高级别的访问权限。Sniffer可以窥探低级的协议信息。通过对底层的信息协议记录,比如记录两台主机之间的网络接口地址、远程网络接口IP地址、IP路由信息和TCP连接的字节顺序号码等。这些信息由非法入侵的人掌握后将对网络安全构成极大的危害,如进行一次IP欺骗。snifffer就是能够捕获网络报文的设备。嗅探器的正当用处在于分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用嗅探器来作出精确的问题判断。 2.2SOCKET编程和常用的函数socket的英文原义是“孔”或“插座”。作为4BDS UNI
25、X的进程通信机制,取后一种意思。通常也称作套接字,用于描述IP地址和端口,是一个通信链的句柄。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。socket套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端面点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程socket两个基本概念:客户方和服务方。当两个应用之间需要采用socket通信时,首先需要在两个应用之间可能位于同一台机器,也可能位于不同的机器建立socket连接,发起呼叫
26、连接请求的一方为客户方,接受呼叫连接请求的一方成为服务方。客户方和服务方是相对的,同一个应用可以是客户方,也可以是服务方。在客户方呼叫连接请求之前,它必须知道服务方在哪里。所以需要知道服务方所在机器的IP地址或机器名称,如果客户方和服务方事前有一个约定就好了,这个约定就是PORT(端口号)。也就是说,客户方可以通过服务方所在机器的IP地址或机器名称和端口号唯一的确定方式来呼叫服务方。在客户方呼叫之前,服务方必须处于侦听状态,侦听是否有客户要求建立连接。一旦接到连接请求,服务方可以根据情况建立或拒绝连接。连接方式有两种,同步方式(Blocking)和(noBlocking).客户方发送的消息可以
27、是文本,也可以是二进制信息流。当客户方的消息到达服务方端口时,会自动触发一个事件(event),服务方只要接管该事件,就可以接受来自客户方的消息了。常用的几个函数CONNET() LISTENING()CLOSE()等CONNET():connect(建立socket连线),connect()用来将参数sockfd 的socket 连至参数serv_addr 指定的网络地址,参数addrlen为sockaddr的结构长度。LISTEN():listen在套接字函数中表示让一个套接字处于监听到来的连接请求的状态。listen函数使用主动连接套接口变为被连接套接口,使得一个进程可以接受其它进程的请
28、求,从而成为一个服务器进程。在TCP服务器编程中listen函数把进程变为一个服务器,并指定相应的套接字变为被动连接。CLOSE():close关闭相应的套接字2.3Sniffer协议分析 嗅探器在功能和设计方面有很多不同。有些只能分析一种协议,而另一些可能能够分析几百种协议。一般情况下,大多数的嗅探器至少能够分析下面的协议和各项协议的报文格式: 1.标准以太网 2.TCP/IP族中的TCP/UDP/IP/ICMP等协议的内容与分析3 IPX 4 DECNet下面就主要介绍一下sniffer是怎样对TCP/IP协议分析中TCP/UDP/IP/ICMP等协议的内容与分析的:TCP:如果IP数据包
29、中有已经封好的TCP数据包,那么IP将把它们向上传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。TCP将它的信息送到更高层多大应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动和物理介质之后到接收方。TCP的报文格式:源端口号目标端口号顺序号确认号报文长度保留URGACRPSHRSTSYNFIN窗口大小校验和紧急指南 可选项数据UDP:UDP与TCP位于同一层,但对于数据包的顺序错误或重发。因此,UDP不被应用于那些
30、使用虚电路的面向连接的服务,UDP主要用于那些面向查询应答额服务,向NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网络时间协议)和DNS(DNS也使用TCP)。欺骗UDP包比欺骗TCP包更容易,以为UDP没有建立初始化连接(就是我们常说的握手)以为两个系统间没有虚电路,与UDP相关的服务面临着更大的危险。UDP报文格式:源端口号目标端口号长度校验和数据IP:网际协议IP是TCP/IP的心脏,也是网路层中最重要的协议。IP层接收由更低层以太网设备发来的数据包,并把该数据包发送到更高层TCP或UDP层;相反IP层也把从TCP或UDP层接收来的数据包传
31、送到更低层。IP数据包是不可靠地,以为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址源地址和接收它的主机地址的目的地址。高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。许多依靠IP源地址确认的服务将产生问题并且会被非法入侵。IP报文格式:版本4报文长度4服务类型总长度16标示符16标志3片偏移13生存时间协 议报头校验和 源IP地址 目的IP地址IP选项ICMP: ICMP与IP位于同一层,它被用来传送IP的控制信息。它主要是用来提供有关向目的
32、地址得路径信息。ICMP的Redirect信息通知主机通向其他系统的更准确的路径,而Unreachable信息则指出路径有问题。另外,如果路径不可用了,ICMP可以使TCP连接体面地终止。PING是最常用的基于ICMP的服务。ICMP报文格式: IP头部(20字节)类型0、8代码0校验和标示符序列号 选项(若有)第3章 Sniffer设计与实现信息的抓包得到IP / UDP / TCP / ICMP统计#ifndef IP_EXPORT_INCLUDED#define IP_EXPORT_INCLUDED 1#if _MSC_VER 1000#pragma once#endiftypedef
33、unsigned long IPAddr; /一个IP地址。typedef unsigned long IPMask; /一个IP子网路遮罩typedef unsigned long IP_STATUS; /状态码返回从IP的apistruct ip_option_information unsigned char Ttl; / Time To Live unsigned char Tos; / Type Of Service unsigned char Flags; / IP header flags unsigned char OptionsSize; / Size in bytes of
34、 options data unsigned char FAR *OptionsData; / Pointer to options data; /* ip_option_information */struct icmp_echo_reply IPAddr Address; / Replying address unsigned long Status; / Reply IP_STATUS unsigned long RoundTripTime; / RTT in milliseconds unsigned short DataSize; / Reply data size in bytes
35、 unsigned short Reserved; / Reserved for system use void FAR *Data; / Pointer to the reply data struct ip_option_information Options; / Reply options; /* icmp_echo_reply */*NOINC*/typedef struct ip_option_information IP_OPTION_INFORMATION, FAR *PIP_OPTION_INFORMATION;typedef struct icmp_echo_reply I
36、CMP_ECHO_REPLY, FAR *PICMP_ECHO_REPLY;struct ArpRequestBuffer IPAddr DestAddress; IPAddr SrcAddress; /* ArpRequestBuffer */*NOINC*/typedef struct ArpRequestBuffer ARP_SEND_REPLY, FAR *PARP_SEND_REPLY;typedef struct _TCP_RESERVE_PORT_RANGE USHORT UpperRange; USHORT LowerRange;TCP_RESERVE_PORT_RANGE,
37、*PTCP_RESERVE_PORT_RANGE;#define MAX_ADAPTER_NAME 128typedef struct _IP_ADAPTER_INDEX_MAP ULONG Index; WCHAR NameMAX_ADAPTER_NAME;IP_ADAPTER_INDEX_MAP, *PIP_ADAPTER_INDEX_MAP;typedef struct _IP_INTERFACE_INFO LONG NumAdapters; IP_ADAPTER_INDEX_MAP Adapter1; IP_INTERFACE_INFO,*PIP_INTERFACE_INFO;type
38、def struct _IP_UNIDIRECTIONAL_ADAPTER_ADDRESS ULONG NumAdapters; IPAddr Address1; IP_UNIDIRECTIONAL_ADAPTER_ADDRESS, *PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS;typedef struct _IP_ADAPTER_ORDER_MAP ULONG NumAdapters; ULONG AdapterOrder1; IP_ADAPTER_ORDER_MAP, *PIP_ADAPTER_ORDER_MAP;#define IP_STATUS_BASE 11
39、000#define IP_SUCCESS 0#define IP_BUF_TOO_SMALL (IP_STATUS_BASE + 1)#define IP_DEST_NET_UNREACHABLE (IP_STATUS_BASE + 2)#define IP_DEST_HOST_UNREACHABLE (IP_STATUS_BASE + 3)#define IP_DEST_PROT_UNREACHABLE (IP_STATUS_BASE + 4)#define IP_DEST_PORT_UNREACHABLE (IP_STATUS_BASE + 5)#define IP_NO_RESOURC
40、ES (IP_STATUS_BASE + 6)#define IP_BAD_OPTION (IP_STATUS_BASE + 7)#define IP_HW_ERROR (IP_STATUS_BASE + 8)#define IP_PACKET_TOO_BIG (IP_STATUS_BASE + 9)#define IP_REQ_TIMED_OUT (IP_STATUS_BASE + 10)#define IP_BAD_REQ (IP_STATUS_BASE + 11)#define IP_BAD_ROUTE (IP_STATUS_BASE + 12)#define IP_TTL_EXPIRE
41、D_TRANSIT (IP_STATUS_BASE + 13)#define IP_TTL_EXPIRED_REASSEM (IP_STATUS_BASE + 14)#define IP_PARAM_PROBLEM (IP_STATUS_BASE + 15)#define IP_SOURCE_QUENCH (IP_STATUS_BASE + 16)#define IP_OPTION_TOO_BIG (IP_STATUS_BASE + 17)#define IP_BAD_DESTINATION (IP_STATUS_BASE + 18)/ The next group are status co
42、des passed up on status indications to/ transport layer protocols./#define IP_ADDR_DELETED (IP_STATUS_BASE + 19)#define IP_SPEC_MTU_CHANGE (IP_STATUS_BASE + 20)#define IP_MTU_CHANGE (IP_STATUS_BASE + 21)#define IP_UNLOAD (IP_STATUS_BASE + 22)#define IP_ADDR_ADDED (IP_STATUS_BASE + 23)#define IP_MEDI
43、A_CONNECT (IP_STATUS_BASE + 24)#define IP_MEDIA_DISCONNECT (IP_STATUS_BASE + 25)#define IP_BIND_ADAPTER (IP_STATUS_BASE + 26)#define IP_UNBIND_ADAPTER (IP_STATUS_BASE + 27)#define IP_DEVICE_DOES_NOT_EXIST (IP_STATUS_BASE + 28)#define IP_DUPLICATE_ADDRESS (IP_STATUS_BASE + 29)#define IP_INTERFACE_MET
44、RIC_CHANGE (IP_STATUS_BASE + 30)#define IP_RECONFIG_SECFLTR (IP_STATUS_BASE + 31)#define IP_NEGOTIATING_IPSEC (IP_STATUS_BASE + 32)#define IP_INTERFACE_WOL_CAPABILITY_CHANGE (IP_STATUS_BASE + 33)#define IP_DUPLICATE_IPADD (IP_STATUS_BASE + 34)#define IP_GENERAL_FAILURE (IP_STATUS_BASE + 50)#define MAX_IP_STATUS IP_GENERAL_FAILURE