• 327.00 KB
  • 2022-04-22 11:38:14 发布

Windows 网络编程 (罗莉琴 詹祖桥 著) 人民邮电出版社 课后答案

  • 17页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'课后答案网您最真诚的朋友www.hackshp.cn网团队竭诚为学生服务,免费提供各门课后答案,不用积分,甚至不用注册,旨在为广大学生提供自主学习的平台!课后答案网:www.hackshp.cn视频教程网:www.efanjy.comPPT课件网:www.ppthouse.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn第1章InternetInterInternetnet与网络通信模型概述一、选择题1.D2.B3.D4.D二、填空题1.OpenSystemInterconnectionReferenceModel2.开放系统互连参考模型khdaw.com3.协议数据单元4.PDU,ProtocolDataUnit5.数据段(Segment)6.数据包(Packet)7.数据帧(Frame)8.比特(Bit)9.网络接口层10.网络层11.传输层12.应用层三、简答题1.答:课后答案网OSI参考模型将网络通信的工作划分为7个层次,由低到高分别为物理层(PhysicalLayer)、数据链路层(DataLinkLayerwww.hackshp.cn)、网络层(NetworkLayer)、传输层(TransportLayer)、会话层(SessionLayer)、表示层(PresentationLayer)和应用层(ApplicationLayer)。2.答:在网络通信中,发送端的自上而下的使用OSI参考模型,对应用程序要发送的信息进行逐层打包,直至在物理层将其发送到网络中;而接收端则自下而上的使用OSI参考模型,将收到的物理数据逐层解析,最后将得到的数据传送给应用程序。当然,并不是所有的网络通信都需要经过OSI模型的全部七层。例如,同一网段的二层交换机之间通信之需要经过数据链路层和物理层,而路由器之间的连接则只需要网络层、数据链路层和物理层即可。在发送方封装数据的过程中,每一层都会为数据包加上一个头部;在接收方解封数据时,又会逐层解析掉这个头部。因此,双方的通信必须在对等层次上进行,否则接收方将无法正确地解析数据。3.答:帧的简要结构如图1.4所示。khdaw.com1若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn图1.4帧的简要结构每个字段的说明如下:�前导码,内容是16进制数0xAA,作用是使接收节点进行同步并做好接收数据帧的准备。�帧首定界符,是10101011的二进制序列,标识帧的开始,以使接收器对实际帧的第一位定位。�源地址和目的地址,即发送和接收数据的两端主机的MAC地址。目的地址可以是单地址、组播地址和广播地址。�数据字段的长度,指定要传送数据的长度,以便接收方对数据进行处理。�要传送的数据,顾名思义,就是从源地址发送到目的地址的原始数据。�填充字段,有效帧从目的地址到校验和字段的最短长度为64字节,其中固定字段khdaw.com的长度为18个字节。如果数据字段长度小于46个字节时,就使用本字段来填充。�校验和,使用32位CRC校验,用于对传送数据进行校验。课后答案网www.hackshp.cnkhdaw.com2若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn第2章TCP/IPTCP/ITCP/IPP协议及其应用一、选择题1.B2.A3.D4.A5.C6.D7.A8.B二、填空题1.寻址(Addressing)khdaw.com2.分片(Fragmentation)3.服务类型(TOS,TypeofService)4.生存周期(TTL,TimetoLive)5.选项6.包头校验和7.建立连接阶段8.数据传输阶段9.断开连接释放资源阶段10.2111.20三、简答题1.答:课后答案网生存周期表示一个Internet报文生存期的上限,由报文的发送者来设置。可以把生存周期看作是数据库包的寿命计数器。为了防止数据包在网络中无休止地被传递下去,或者由于传输路径造成死循环,每个www.hackshp.cnIP数据包中都包含一个寿命计数器。数据包在网络传输的过程中,每经过一个路由器的处理,其中的寿命计数器就会递减1。如果寿命计数器的值等于0,并且报文还没有到达目的地,则该报文将会被丢失。发送者将会在稍后重新发送该报文。为什么要在IP协议中使用生存周期的概念呢。因为Internet的结构是复杂的,从一个主机发送报文到另外一个主机可以有多种路径,这一点与现实生活中一样,比如开车前往一个地点就可以有多种路线可供选择。因为数据包在网络传输中的路径是由路由器或交换机等网络设备根据当时的网络情况选择的,所以每次传输的路径都可能不同。如果一个数据包在传输过程中进入了环路,如果不终止它的话,它可能一直这样循环下去。如果网络中存在大量这样循环的数据包,那对于网络来说就是一种灾难性。使用生存周期就可以解决这种问题,它可以将长时间无法到达目的地的数据包丢弃。2.答:参照表2.1理解。3.答:UDP是一种不可靠的协议,在传送数据时,源主机和目的主机之间不建立连接。而khdaw.comTCP3若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn协议为了确保数据传输的准确和安全可靠,集成了各种安全保障功能,这在实际执行过程中会占用大量的系统开销。因此,UDP具有TCP无法比拟的速度优势。相对于可靠性而言,基于UDP的应用更注意性能。与TCP相比,UDP更适合发送数据量比较少、但对响应速度要求比较高的情况。4.答:ARP欺骗通常有如下两种情况(1)对路由器ARP表的欺骗,感染ARP木马的主机会不断地向路由器发送一系列错误的内网MAC地址,使真实的地址信息无法通过更新保存在路由器上。因为路由器负责转发数据包,是主机连接互联网的关键设备,所以路由器被欺骗后,网络中的大量主机都无法正常上网。(2)伪造网关,欺骗其他主机向假网关发送数据,而不是通过正确的路由器途径上网。ARP攻击的后果通常是很严重的,往往会造成网络的大面积掉线,没有经验的网络管理员通常很难定位问题所在。khdaw.com5.答:(1)申请IP地址的主机在本地网络中发送一个RARP广播包,其中包括自己的MAC地址,请求任何收到该请求的RARP服务器为其分配一个IP地址。(2)收到请求的RARP服务器将检查其RARP列表,判断是否存在该MAC地址对应的IP地址。如果存在,则给源主机发送一个响应数据包,并将此IP地址提供给对方主机使用;如果不存在,则RARP服务器对该请求不做响应。一个网段中可以存在多个RARP服务器。(3)源主机收到RARP服务器发回的响应信息后,使用得到的IP地址进行通讯。(4)如果一直没有收到RARP服务器的响应信息,则说明初始化失败。(5)如果在前2步中遭受到ARP攻击,则RARP服务器返回的IP地址可能会被占用,因此导致申请主机无法正常上网。课后答案网6.答:(1)与远程主机建立一个www.hackshp.cnTCP连接,用户需要指定远程主机的IP地址和域名。(2)在本地终端上输入用户名和口令,然后输入控制命令,客户端会将它们以NVT(NetVirtualTerminal)格式传送到远程主机。(3)将远程主机输出的NVT格式的数据转化为本地所接受的格式,然后送回本地终端,包括命令的回显和命令的执行结果。(4)最后,本地终端断开连接,结束到远程主机的TCP连接。7.答:FTP支持两种运行模式,即主动模式和被动模式,它们的区别在于控制如何打开第2个连接。1.主动模式在主动模式下,客户端向服务器发送自己用于数据连接的IP地址和端口号,然后由服务器程序打开数据连接。2.被动模式当客户端在防火墙后面或者无法接收TCP连接时,通常建议采用被动模式。在被动模式下,服务器向客户端发送自己用于数据连接的IP地址和端口号,则客户端打开数据连接。khdaw.com4若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn四、操作题略khdaw.com课后答案网www.hackshp.cnkhdaw.com5若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn第3章IP地址和子网规划一、选择题1.D2.B3.C4.B5.D6.C7.C8.D9.B10.B11.C二、填空题khdaw.com1.1.0.0.12.126.255.255.2543.104.2545.10.0.0.06.10.255.255.2557.网络域8.子网域9.主机域10.网络号/网络ID的位数三、问答题1.答:课后答案网目前应用最广泛的IP地址是基于IPv4的,每个IP地址的长度为32位,即4个字节。通常把IP地址中的每个字节使用一个10进制数字来表示,数字之间使用小数点(.)分隔,因此IPv4中IP地址的格式如下:www.hackshp.cnXXX.XXX.XXX.XXX这种IP地址表示法被称为点分十进制表示法。2.答:为了便于寻址和构造层次化的网络结构,在设计IP地址时规定每个IP地址都由两个标识码(ID)组成,即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,而IP地址中除了网络ID外的其他部分则是主机ID,它可以唯一标识当前网络中的一台主机(可以是计算机、服务器或网络设备等)。根据网络ID的不同,IP地址可以分为5种类型,即A类地址、B类地址、C类地址、D类地址和E类地址。A类IP地址的第1个字节为网络ID,其他3个字节则为主机ID,而且网络ID的第1位必须为“0”。A类IP地址的范围为1.0.0.1~126.255.255.254。B类IP地址的前两个字节为网络ID,后面两个字节则为主机ID,而且网络ID的前两位必须为“10”。B类IP地址的范围为128.0.0.1~191.255.255.254。C类IP地址的前3个字节为网络ID,最后一个字节为主机khdaw.comID,而且网络ID的前3位6若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn必须为“110”。C类IP地址的范围用二进制数来表示为192.0.0.1~223.255.255.254。D类IP地址是专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播中。它的前4位必须为“1110”。D类IP地址的范围为224.0.0.1~239.255.255.254。E类IP地址并没有公开使用,它是在设计时预留出来供将来使用的地址段,目前仅用于研究和实验。E类IP地址以“11110”开始,即从240.0.0.1开始后面的有效地址都是E类IP地址。3.答:单播是指对特定的主机进行数据传送,因此在数据链路层的数据头中应该指定非常具体的目的地址,即网卡的MAC地址;而且在IP分组报头中必须指定接收方的IP地址。组播是主机之间“一对一组”的通讯模式,即加入了同一组的主机可以接收到该组内的所有数据。主机可以向路由器申请加入或退出指定的组,网络中的路由器和交换机可以有选择的复制并传输数据,即只将组内数据传输给该组中的主机。组播可以大大节省网络带宽,无论有多少个目标地址,在整个网络的任何一条链路上只传送单一的数据包。khdaw.com广播分组的目标IP地址的主机部分全部为1,这意味着本地网络中所有的主机都将接收并查看到该分组消息。比较常见的广播应用是ARP和DHCP等网络协议。课后答案网www.hackshp.cnkhdaw.com7若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn第4章网络编程基础一、选择题1.B2.B二、填空题1.程序代码2.数据khdaw.com3.进程控制块4.Peer-to-Peer四、简答题1.答:端口是TCP/IP协议簇中,应用层进程与传输层协议实体间的通信接口,在OSI七层协议的描述中,将它称为应用层进程与传输层协议实体间的服务访问点(SAP)。应用层进程通过系统调用与某个端口进行绑定,然后就可以通过该端口接收或发送数据,因为应用进程在通信时,必须用到一个端口,它们之间有着一一对应的关系,所以可以用端口来标识通信的网络应用进程。2.答:(1)打开一通信通道,并告知服务器所在的主机,它愿意在某一公认的地址上(熟知端口,如FTP为21课后答案网)接收客户请求。(2)等待客户的请求到达该端口。(3)服务器接收到服务请求,处理该请求并发送应答信号。为了能并发地接收多个客户的服务请求,要激活一个新进程或新线程来处理这个客户请求(如www.hackshp.cnUNIX系统中用fork、exec)。服务完成后,关闭此新进程与客户的通信通路,并终止。(4)返回第(2)步,等待并处理另一客户请求。(5)在特定的情况下,关闭服务器。3.答:P2P系统具有以下特征。(1)分散性。该系统是全分布式的系统,不存在瓶颈。(2)规模性。该系统可以容纳数百万乃至数千万台计算机。(3)扩展性。用户可以随时加入该网络。服务的需求增加,系统的资源和服务能力也同步扩充,理论上其可扩展性几乎可以认为是无限的。(4)Servent性。每个节点同时具有Server和Cliert的特点,称之为Servent。(5)自治性。节点来自不同的所有者,不存在全局的控制者,节点可以随时加入或退出P2P系统。(6)互助性。(7)自组织性。大量节点通过P2P协议自行组织在一起,不存在任何管理角色。khdaw.com8若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn第5章SocketSockeSockett编程基础一、选择题1.C2.B3.A4.A二、填空题1.面向连接khdaw.com2.无连接3.ws2_32.lib4.网络字节顺序(NBO,NetworkByteOrder)5.主机字节顺序(HBO,HostByteOrder)6.in_addr7.setsockopt三、简答题1.答(1)客户端(相当于拨打电话的一方)需要了解服务器的地址(相当于电话号码)。在TCP/IP网络环境中,可以使用IP地址来标识一个主机。但仅仅使用IP地址是不够的,如果一台主机中运行了多个网络应用程序,那么如何确定与哪个应用程序通信呢。在课后答案网Socket通信过程中借用了TCP和UDP协议中端口的概念,不同的应用程序可以使用不同的端口进行通信,这样一个主机上就可以同时有多个应用程序进行网络通信了。这有些类似于电话分机的作用。www.hackshp.cn(2)服务器应用程序必须早于客户端应用程序启动,并在指定的IP地址和端口上执行侦听操作。如果该端口被其他应用程序所占用,则服务器应用程序无法正常启动。服务器处于侦听状态就类似于电话接通电话线、等待拨打的状态。(3)客户端在申请发送数据时,服务器端应用程序必须有足够的时间响应才能进行正常通信。否则,就好像电话已经响了,但却无人接听一样。在通常情况下,服务器应用程序都需要具备同时处理多个客户端请求的能力,如果服务器应用程序设计得不合理或者客户端的访问量过大,都有可能导致无法及时响应客户端的情况。(4)使用Socket协议进行通信的双方还必须使用相同的通信协议,Socket支持的底层通信协议包括TCP和UDP两种。在通信过程中,双方还必须采用相同的字符编码格式,而且按照双方约定的方式进行通信。这就好像在通电话的时候双方都采用对方能理解的语言进行沟通一样。(5)在通信过程中,物理网络必须保持畅通,否则通信将会中断。(6)通信结束后,服务器端和客户端应用程序都可以中断它们之间的连接。2.答:khdaw.com9若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn表5.1流式套接字和数据报式套接字的区别比较项目流式套接字数据报式套接字建立和释放连接√×保证数据到达√×按发送顺序接收数据√×通讯数据包含完整的目的地址信息×√2.答:服务器程序要先于客户机程序启动,每个步骤中调用的Socket函数如下:(1)调用WSAStartup()函数加载WindowsSockets动态库,然后调用socket()函数创建一个流式套接字,返回套接字号s。(2)调用bind()函数将套接字s绑定到一个已知的地址,通常为本地IP地址。(3)调用listen()函数将套接字s设置为侦听模式,准备好接收来自各个客户机的连接请求。khdaw.com(4)调用accept()函数等待接受客户端的连接请求。(5)如果接收到客户端的请求,则accept()函数返回,得到新的套接字ns。(6)调用recv()函数接收来自客户端的数据,调用send()函数向客户端发送数据。(7)与客户端的通信结束后,服务器程序可以调用shutdown()函数通知对方不再发送或接收数据,也可以由客户端程序断开连接。断开连接后,服务器进程调用closesocket()函数关闭套接字ns。此后服务器程序返回第4步,继续等待客户端进程的连接。(8)如果要退出服务器程序,则调用closesocket()函数关闭最初的套接字s。客户端程序在每一步骤中使用的函数如下:(1)调用WSAStartup()函数加载WindowsSockets动态库,然后调用socket()函数创建一个流式套接字,返回套接字号s。(2)调用connect()函数将套接字s连接到服务器。(3)调用send()函数向服务器发送数据,调用recv()函数接收来自服务器的数据。(4)与服务器的通信结束后,客户端程序可以调用课后答案网shutdown()函数通知对方不再发送或接收数据,也可以由服务器程序断开连接。断开连接后,客户端进程调用closesocket()函数关闭套接字。www.hackshp.cn第6章探测网络中的在线设备一、选择题1.B2.B3.B4.C二、填空题1.IPHelperAPI2.IPHELPAPI.dllkhdaw.com10若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn3.IPHELPAPI.lib4.GetAdaptersInfo()5.GetIpAddrTable三、简答题1.答IPHelperAPI可以实现的主要功能如下:�获取网络配置的信息。�管理网络适配器(NetworkAdapter),也就是通常所说的网卡,它位于数据链路层。�管理网络接口(Interface)。接口表示节点上对应连接的部分,它位于IP层,因此可以在接口上绑定IP地址。在IPHelperAPI中,网络适配器和接口是一一对应的。khdaw.com�管理IP地址。�使用ARP协议。�获取IP和ICMP协议中的信息。�管理路由信息。�接收网络事务的通知信息。�接收TCP和UDP信息。2.答:在VisualC++项目中,可以使用下面的语句引用IPHELPAPI.lib。#pragmacomment(lib,"IPHLPAPI.lib")也可以在项目属性对话框中选择“配置属性”/“链接器”/“输入”,然后在右侧的“附加依赖项”中输入IPHLPAPI.lib。3.答课后答案网在系统菜单中选择“项目”/“属性”,打开项目属性对话框。在左侧的树中选择“配置属性”www.hackshp.cn/“调试”,在右侧的列表中的命令参数栏中输入命令行参数。4.答将IP地址与子网掩码执行按位与运算,即可计算出子网的子网地址,公式如下:<子网地址>=&<子网掩码>将子网掩码执行按位非操作,然后再将结果与IP地址执行按位或运算,即可计算出子网的广播地址,公式如下:<广播地址>=|~<子网掩码>khdaw.com11若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn第7章NetBIOSNetBINetBIOSOS网络编程技术一、选择题1.B2.C3.C二、填空题1.1372.1383.139khdaw.com4.逻辑网络适配器5.ADAPTER_STATUS6.NCBADDNAME三、问答题1.答:LANA(LANAdapter,LAN适配器)编号是NetBIOS进行网络编程的关键,它对应于网卡及传输协议的唯一组合。例如,假定某个工作站安装了两块网卡,以及两种具有NetBIOS能力的传输协议(例如TCP/IP和NetBEUI),那么将共有下面4个LANA编号:�表示“TCP/IP—网卡1”对。�表示“NetBEUI—网卡1”对。�表示“TCP/IP—网卡2”对。�表示“NetBEUI—课后答案网网卡2”对。在进行NetBIOS编程时需要注意,两台进行通信的计算机必须至少安装有同一种协议,并且这两台计算机通信所依赖的LANA编号对应的网络协议要相同,否则即使这两台计算机安装相同的协议也无法进行通信。www.hackshp.cnLANA编号范围在0~9之间,LANA0代表默认的LANA。2.答:在Windows中,如果安装了NetBIOS协议,则系统将自动开放下列端口:�137端口,主要作用是在局域网中提供计算机的名称或IP地址查询服务。�138端口,主要作用是提供NetBIOS环境下的计算机名浏览功能。�139端口,主要作用是提供文件和打印机共享的功能。四、练习题略khdaw.com12若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn第8章高级SocketSockeSockett编程技术一、选择题1.D2.D3.A4.D二、填空题1.阻塞2.非阻塞3.10244.事件通知5.完成例程6.fd_setkhdaw.com7.Windows消息8.09.已授信(signaled)10.未授信(nonsignaled)三、简答题1.答:Socket编程可以分为阻塞和非阻塞两种开发模式。阻塞模式是指在指定套接字上调用函数执行操作时,在没有完成操作之前,函数不会立即返回。例如,服务器程序在阻塞模式下调用accept()函数时将会阻塞服务器线程,直至接收到一个来自客户端的连接请求。默认创建的套接字为阻塞模式。非阻塞模式是指在指定套接字上调用函数执行操作时,无论操作是否完成,函数都会立即返回。例如,在非阻塞模式下调用recv()函数时,程序会直接读取网络缓冲区中的数据,无论是否读到数据,函数都会立即返回,而不会一直挂在此函数的调用上。课后答案网2.答:www.hackshp.cnWSAAsyncSelect模型又称为异步选择模型,它为每个套接字绑定一个消息。当套接字上出现事先设置事件时,操作系统会给应用程序发送这个消息,从而使应用程序可以对该事件做相应的处理。WSAAsyncSelect模型的优点是在系统开销不大的情况下可以同时处理许多个客户端连接。它的缺点是,即使应用程序不需要窗口,也要至少设计一个窗口用于处理套接字事件。而且,在一个窗口中处理大量的事件也可能成为性能瓶颈。3.答:WSAEventSelect模型与WSAAsyncSelect模型之间的主要区别是网络事件发生时系统通知应用程序的方式不同。WSAAsyncSelect模型以消息的形式通知应用程序,而WSAEventSelect模型则以事件的形式进行通知。4.答:�已经调用了listen()函数,并且成功建立连接,则调用accept()函数会成功。�有数据可以读取。khdaw.com13若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn�连接已经关闭、重置或者中止。5.答:WSAEventSelect模型和WSAAsyncSelect模型都是异步I/O模型,它与WSAAsyncSelect模型的最主要区别是网络事件发生时系统通知应用程序的方式不同。WSAAsyncSelect模型使用消息方式通知应用程序,而WSAEventSelect模型以事件形式进行通知。本节将通过实例介绍基于WSAEventSelect模型的Socket编程方法。6.答:完成端口模型也属于并发线程模型,但它解决了前面提到的普通并发线程模型中存在问题。完成端口模型中规定了并发线程的数量,并使用线程池对线程进行管理。一个完成端口实际上就是一个通知队列,操作系统把已经完成的重叠I/O请求的通知放到队列中。当某项I/O操作完成时,系统会向服务器完成端口发送一个I/O完成数据包,此操作在系统内部完成。应用程序在收到khdaw.comI/O完成数据包后,完成端口队列中的一个线程被唤醒,为客户端提供服务。服务完成后,该线程会继续在完成端口上等待。套接字在被创建后,可以在任何时候与指定的完成端口进行关联。线程池的使用既限制了工作线程的数量,又避免了反复创建线程的开销,减少了线程调度的开销,从而提高了服务器程序的性能。第9章基于WinPcap技术的网络数据包捕获、过滤和分析技术课后答案网一、选择题www.hackshp.cn1.B2.C3.C4.B二、填空题1.WindowsPacketCapture2.网络3.核心层4.用户层5.监听(或混杂)6.pcap_findalldevs_ex()7.pcap_open()三、简答题1.答WinPcap是Windows平台下的网络数据包捕获库。它可以独立于TCP/IP协议发送和接收原始数据包,其主要功能如下:�绕开网络协议栈捕获网络数据包,支持远程数据包捕获功能。khdaw.com14若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cn�在数据包发送到应用程序之前,按照指定的规则实现核心层数据包过滤。�在网络上发送原始数据包。�收集网络通信过程中的统计信息。2.答:NPF包含4个主要功能,即数据的捕获和过滤、监测和统计、转储到磁盘以及数据包发送。(1)数据包的捕获和过滤捕获数据库是WinPcap的核心技术。在捕获时,驱动器使用网络接口嗅探数据包,并把它们完整地传送到用户层应用程序。可以看到,捕获数据包时使用了两个组件,即过滤器和核心缓冲区。过滤器可以决定一个进入数据包是否要被接收和复制到监听应用程序。网络中的数据流量相当大,如果不加过滤直接把所有数据包传送到用户层应用程序,则会给应用程序带来很khdaw.com大的负载,使应用程序的工作效率大受影响。事实上,大多数使用NPF的应用程序拒绝的数据包远远多于其接受的数据包。实际上,数据包过滤器是一个返回布尔值的函数,它以进入的数据包为参数。如果函数返回TRUE,则驱动器会数据复制到用户层应用程序;否则会直接丢弃该数据包。核心缓冲区用来保存数据包,避免出现丢包的情况。如果网络中的数据流量很大,则NPF很可能无法及时地把通过过滤器的数据包复制到用户应用程序。如果没有缓冲区,那么在新的数据包到达后,NPF就必须把未传送的数据包丢弃,就是会影响用户应用程序的分析结果。用户缓冲区的大小非常重要,它决定了一个系统调用一次可以从内核空间中复制到用户空间的最大数据量。另外,系统调用一次可以从内核空间中复制到用户空间的最小数据量也是极其重要的。如果这个值很大的话,内核需要等待若干个数据包到达后才能把数据复制到用户空间中去。这样会减少系统调用的次数,从而占用较少的课后答案网CPU利用率,但这是以牺牲程序的实时性为代价的。在配置这个值时,用户必须在高效率和高响应性上做出选择。在Wpcap.dll中包含用来设置读取操作超时时间和传递给应用程序的最小数据量值的系www.hackshp.cn统调用。在默认情况下,读操作的超时时间为1秒钟,内核复制给应用程序的最小数据量为16KB。(2)监测和统计NPF中包含一个可编程的监测模块,它可以对网络流量进行简单的统计和计算。不需要把数据包复制到用户层应用程序,只要简单地接收和显示从监测引擎获得的结果即可收集到统计信息。不需要捕获数据包捕获,也就避免了捕获过程中可能耗费的CPU和内存资源。监测引擎由一个带有计数器的分类器构成。NPF中的一个过滤引擎对数据包进行分类,没有被过滤掉的数据会进入计数器。计数器拥有一些变量,用于保存数据的数据和过滤器接收的字节数。每当有新的数据包进入时,这些变量的值都会被更新。监测引擎会定期将这些变量的值传递给用户层应用程序,传递的时间可以由用户自行配置。(3)转储到磁盘该功能允许用户直接在内核模式下将网络数据保存到磁盘上,而不需要把数据包复制到用户层应用程序,再由应用程序将数据保存磁盘上。(4)数据包发送NPF允许将一个原始数据包发送的网络上。要实现此功能,需要用户层的应用程序在khdaw.com15若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com 课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!www.hackshp.cnNPF设备文件上执行一个WriteFile()的系统调用。数据被发送到网络上时并不会进行任何协议的封装,因此应用程序必须亲自为每个要发送的数据包填写好包头的数据。3.答:利用WinPcap进行网络数据包的捕获和过滤的基本步骤如下:(1)打开网卡,并设为混杂模式(2)回调函数NetworkTap在得到监听命令后,从网络设备驱动程序处收集数据包,把监听到的数据包传送给过滤程序。(3)当数据包过滤器监听到有数据包到达时,NDIS中间驱动程序首先调用分组驱动程序,该程序将数据传递给每一个参与进程的分组过滤程序。(4)然后由数据包过滤程序决定哪些数据包应该丢弃,哪些数据包应该接收,是否需要将接收到的数据拷贝到相应的应用程序。(5)通过分组过滤器后,将未过滤掉的数据包提交给核心缓冲区。然后等待系统缓冲区满后,再将数据包拷贝到用户缓冲区。监听程序可以直接从用户缓冲区中读取捕获的数据khdaw.com包。(6)关闭网卡。课后答案网www.hackshp.cnkhdaw.com16若侵犯了您的版权利益,敬请来信通知我们!℡www.khdaw.com'

您可能关注的文档