Windows网络编程练习题参考答案.docx
《Windows网络编程练习题参考答案.docx》由会员分享,可在线阅读,更多相关《Windows网络编程练习题参考答案.docx(17页珍藏版)》请在冰豆网上搜索。
Windows网络编程练习题参考答案
第1章Internet与网络通信模型概述
一、选择题
1.D2.B3.D4.D
二、填空题
1.OpenSystemInterconnectionReferenceModel
2.开放系统互连参考模型
3.协议数据单元
4.PDU,ProtocolDataUnit
5.数据段〔Segment〕
6.数据包〔Packet〕
7.数据帧〔Frame〕
8.比特〔Bit〕
9.网络接口层
10.网络层
11.传输层
12.应用层
三、简答题
1.答:
OSI参考模型将网络通信的工作划分为7个层次,由低到高分别为物理层〔PhysicalLayer〕、数据链路层〔DataLinkLayer〕、网络层〔NetworkLayer〕、传输层〔TransportLayer〕、会话层〔SessionLayer〕、表示层〔PresentationLayer〕和应用层〔ApplicationLayer〕。
2.答:
在网络通信中,发送端的自上而下的使用OSI参考模型,对应用程序要发送的信息进行逐层打包,直至在物理层将其发送到网络中;而接收端那么自下而上的使用OSI参考模型,将收到的物理数据逐层解析,最后将得到的数据传送给应用程序。
当然,并不是所有的网络通信都需要经过OSI模型的全部七层。
例如,同一网段的二层交换机之间通信之需要经过数据链路层和物理层,而路由器之间的连接那么只需要网络层、数据链路层和物理层即可。
在发送方封装数据的过程中,每一层都会为数据包加上一个头部;在接收方解封数据时,又会逐层解析掉这个头部。
因此,双方的通信必须在对等层次上进行,否那么接收方将无法正确地解析数据。
3.答:
帧的简要结构如图1.4所示。
图1.4帧的简要结构
每个字段的说明如下:
●前导码,内容是16进制数0xAA,作用是使接收节点进行同步并做好接收数据帧的准备。
●帧首定界符,是10101011的二进制序列,标识帧的开始,以使接收器对实际帧的第一位定位。
●源地址和目的地址,即发送和接收数据的两端主机的MAC地址。
目的地址可以是单地址、组播地址和播送地址。
●数据字段的长度,指定要传送数据的长度,以便接收方对数据进行处理。
●要传送的数据,顾名思义,就是从源地址发送到目的地址的原始数据。
●填充字段,有效帧从目的地址到校验和字段的最短长度为64字节,其中固定字段的长度为18个字节。
如果数据字段长度小于46个字节时,就使用本字段来填充。
●校验和,使用32位CRC校验,用于对传送数据进行校验。
第2章TCP/IP协议及其应用
一、选择题
1.B2.A3.D4.A5.C
6.D7.A8.B
二、填空题
1.寻址〔Addressing〕
2.分片〔Fragmentation〕
3.效劳类型〔TOS,TypeofService〕
4.生存周期〔TTL,TimetoLive〕
5.选项
6.包头校验和
7.建立连接阶段
8.数据传输阶段
9.断开连接释放资源阶段
10.21
11.20
三、简答题
1.答:
生存周期表示一个Internet报文生存期的上限,由报文的发送者来设置。
可以把生存周期看作是数据库包的寿命计数器。
为了防止数据包在网络中无休止地被传递下去,或者由于传输路径造成死循环,每个IP数据包中都包含一个寿命计数器。
数据包在网络传输的过程中,每经过一个路由器的处理,其中的寿命计数器就会递减1。
如果寿命计数器的值等于0,并且报文还没有到达目的地,那么该报文将会被丧失。
发送者将会在稍后重新发送该报文。
为什么要在IP协议中使用生存周期的概念呢。
因为Internet的结构是复杂的,从一个主机发送报文到另外一个主机可以有多种路径,这一点与现实生活中一样,比方开车前往一个地点就可以有多种路线可供选择。
因为数据包在网络传输中的路径是由路由器或交换机等网络设备根据当时的网络情况选择的,所以每次传输的路径都可能不同。
如果一个数据包在传输过程中进入了环路,如果不终止它的话,它可能一直这样循环下去。
如果网络中存在大量这样循环的数据包,那对于网络来说就是一种灾难性。
使用生存周期就可以解决这种问题,它可以将长时间无法到达目的地的数据包丢弃。
2.答:
参照表2.1理解。
3.答:
UDP是一种不可靠的协议,在传送数据时,源主机和目的主机之间不建立连接。
而TCP协议为了确保数据传输的准确和平安可靠,集成了各种平安保障功能,这在实际执行过程中会占用大量的系统开销。
因此,UDP具有TCP无法比较的速度优势。
\相对于可靠性而言,基于UDP的应用更注意性能。
与TCP相比,UDP更适合发送数据量比较少、但对响应速度要求比较高的情况。
4.答:
ARP欺骗通常有如下两种情况
〔1〕对路由器ARP表的欺骗,感染ARP木马的主时机不断地向路由器发送一系列错误的内网MAC地址,使真实的地址信息无法通过更新保存在路由器上。
因为路由器负责转发数据包,是主机连接互联网的关键设备,所以路由器被欺骗后,网络中的大量主机都无法正常上网。
〔2〕伪造网关,欺骗其他主机向假网关发送数据,而不是通过正确的路由器途径上网。
ARP攻击的后果通常是很严重的,往往会造成网络的大面积掉线,没有经验的网络管理员通常很难定位问题所在。
5.答:
〔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〕与远程主机建立一个TCP连接,用户需要指定远程主机的IP地址和域名。
〔4〕最后,本地终端断开连接,结束到远程主机的TCP连接。
7.答:
FTP支持两种运行模式,即主动模式和被动模式,它们的区别在于控制如何翻开第2个连接。
1.主动模式
2.被动模式
四、操作题
略
第3章IP地址和子网规划
一、选择题
1.D2.B3.C4.B5.D
6.C7.C8.D9.B10.B
11.C
二、填空题
3.10
4.254
5.
7.网络域
8.子网域
9.主机域
三、问答题
1.答:
目前应用最广泛的IP地址是基于IPv4的,每个IP地址的长度为32位,即4个字节。
通常把IP地址中的每个字节使用一个10进制数字来表示,数字之间使用小数点〔.〕分隔,因此IPv4中IP地址的格式如下:
这种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,最后一个字节为主机ID,而且网络ID的前3位必须为“110〞。
C类IP地址的范围用二进制数来表示为192.0.0.1~223.255.255.254。
D类IP地址是专门保存的地址。
它并不指向特定的网络,目前这一类地址被用在多点播送中。
它的前4位必须为“1110〞。
D类IP地址的范围为~。
E类IP地址并没有公开使用,它是在设计时预留出来供将来使用的地址段,目前仅用于研究和实验。
E类IP地址以“11110〞开始,即从240.0.0.1开始后面的有效地址都是E类IP地址。
3.答:
单播是指对特定的主机进行数据传送,因此在数据链路层的数据头中应该指定非常具体的目的地址,即网卡的MAC地址;而且在IP分组报头中必须指定接收方的IP地址。
组播是主机之间“一对一组〞的通讯模式,即参加了同一组的主机可以接收到该组内的所有数据。
主机可以向路由器申请参加或退出指定的组,网络中的路由器和交换机可以有选择的复制并传输数据,即只将组内数据传输给该组中的主机。
组播可以大大节省网络带宽,无论有多少个目标地址,在整个网络的任何一条链路上只传送单一的数据包。
播送分组的目标IP地址的主机局部全部为1,这意味着本地网络中所有的主机都将接收并查看到该分组消息。
比较常见的播送应用是ARP和DHCP等网络协议。
第4章网络编程根底
一、选择题
1.B2.B
二、填空题
1.程序代码2.数据
3.进程控制块4.Peer-to-Peer
四、简答题
1.答:
端口是TCP/IP协议簇中,应用层进程与传输层协议实体间的通信接口,在OSI七层协议的描述中,将它称为应用层进程与传输层协议实体间的效劳访问点〔SAP〕。
应用层进程通过系统调用与某个端口进行绑定,然后就可以通过该端口接收或发送数据,因为应用进程在通信时,必须用到一个端口,它们之间有着一一对应的关系,所以可以用端口来标识通信的网络应用进程。
2.答:
〔1〕翻开一通信通道,并告知效劳器所在的主机,它愿意在某一公认的地址上〔熟知端口,如FTP为21〕接收客户请求。
〔2〕等待客户的请求到达该端口。
〔4〕返回第〔2〕步,等待并处理另一客户请求。
〔5〕在特定的情况下,关闭效劳器。
3.答:
P2P系统具有以下特征。
〔1〕分散性。
该系统是全分布式的系统,不存在瓶颈。
〔2〕规模性。
该系统可以容纳数百万乃至数千万台计算机。
〔3〕扩展性。
用户可以随时参加该网络。
效劳的需求增加,系统的资源和效劳能力也同步扩充,理论上其可扩展性几乎可以认为是无限的。
〔4〕Servent性。
每个节点同时具有Server和Cliert的特点,称之为Servent。
〔5〕自治性。
节点来自不同的所有者,不存在全局的控制者,节点可以随时参加或退出P2P系统。
〔6〕互助性。
〔7〕自组织性。
大量节点通过P2P协议自行组织在一起,不存在任何管理角色。
第5章Socket编程根底
一、选择题
1.C2.B3.A4.A
二、填空题
1.面向连接
2.无连接
3.ws2_32.lib
4.网络字节顺序〔NBO,NetworkByteOrder〕
5.主机字节顺序〔HBO,HostByteOrder〕
6.in_addr
7.setsockopt
三、简答题
1.答
〔2〕效劳器应用程序必须早于客户端应用程序启动,并在指定的IP地址和端口上执行侦听操作。
如果该端口被其他应用程序所占用,那么效劳器应用程序无法正常启动。
效劳器处于侦听状态就类似于接通线、等待拨打的状态。
〔3〕客户端在申请发送数据时,效劳器端应用程序必须有足够的时间响应才能进行正常通信。
否那么,就好似已经响了,但却无人接听一样。
在通常情况下,效劳器应用程序都需要具备同时处理多个客户端请求的能力,如果效劳器应用程序设计得不合理或者客户端的访问量过大,都有可能导致无法及时响应客户端的情况。
〔4〕使用Socket协议进行通信的双方还必须使用相同的通信协议,Socket支持的底层通信协议包括TCP和UDP两种。
在通信过程中,双方还必须采用相同的字符编码格式,而且按照双方约定的方式进行通信。
这就好似在通的时候双方都采用对方能理解的语言进行沟通一样。
〔5〕在通信过程中,物理网络必须保持畅通,否那么通信将会中断。
〔6〕通信结束后,效劳器端和客户端应用程序都可以中断它们之间的连接。
2.答:
表5.1流式套接字和数据报式套接字的区别
比较工程
流式套接字
数据报式套接字
建立和释放连接
√
×
保证数据到达
√
×
按发送顺序接收数据
√
×
通讯数据包含完整的目的地址信息
×
√
2.答:
第6章探测网络中的在线设备
一、选择题
1.B2.B3.B4.C
二、填空题
1.IPHelperAPI
2.IPHELPAPI.dll
3.IPHELPAPI.lib
4.GetAdaptersInfo()
5.GetIpAddrTable
三、简答题
1.答
IPHelperAPI可以实现的主要功能如下:
●获取网络配置的信息。
●管理网络适配器〔NetworkAdapter〕,也就是通常所说的网卡,它位于数据链路层。
●管理网络接口〔Interface〕。
接口表示节点上对应连接的局部,它位于IP层,因此可以在接口上绑定IP地址。
在IPHelperAPI中,网络适配器和接口是一一对应的。
●管理IP地址。
●使用ARP协议。
●获取IP和ICMP协议中的信息。
●管理路由信息。
●
●接收TCP和UDP信息。
2.答:
在VisualC++工程中,可以使用下面的语句引用IPHELPAPI.lib。
#pragmacomment(lib,"IPHLPAPI.lib")
也可以在工程属性对话框中选择“配置属性〞/“链接器〞/“输入〞,然后在右侧的“附加依赖项〞中输入IPHLPAPI.lib。
3.答
在系统菜单中选择“工程〞/“属性〞,翻开工程属性对话框。
在左侧的树中选择“配置属性〞/“调试〞
4.答
将IP地址与子网掩码执行按位与运算,即可计算出子网的子网地址,公式如下:
<子网地址>=&<子网掩码>
将子网掩码执行按位非操作,然后再将结果与IP地址执行按位或运算,即可计算出子网的播送地址,公式如下:
<播送地址>=|~<子网掩码>
第7章NetBIOS网络编程技术
一、选择题
1.B2.C3.C
二、填空题
1.137
2.138
3.139
4.逻辑网络适配器
5.ADAPTER_STATUS
6.NCBADDNAME
三、问答题
1.答:
对应于网卡及传输协议的唯一组合。
例如,假定某个工作站安装了两块网卡,以及两种具有NetBIOS能力的传输协议〔例如TCP/IP和NetBEUI〕,那么将共有下面4:
●表示“TCP/IP—网卡1〞对。
●表示“NetBEUI—网卡1〞对。
●表示“TCP/IP—网卡2〞对。
●表示“NetBEUI—网卡2〞对。
在进行NetBIOS编程时需要注意,两台进行通信的~9之间,LANA0代表默认的LANA。
2.答:
在Windows中,如果安装了NetBIOS协议,那么系统将自动开放以下端口:
●137端口,主要作用是在局域网中提供计算机的名称或IP地址查询效劳。
●138端口,主要作用是提供NetBIOS环境下的计算机名浏览功能。
●。
四、练习题
略
第8章高级Socket编程技术
一、选择题
1.D2.D3.A4.D
二、填空题
1.阻塞2.非阻塞
3.10244.
5.完成例程6.fd_set
7.Windows消息8.0
9.已授信〔signaled〕10.未授信〔nonsignaled〕
三、简答题
1.答:
Socket编程可以分为阻塞和非阻塞两种开发模式。
2.答:
WSAAsyncSelect模型又称为异步选择模型,它为每个套接字绑定一个消息。
当套接字上出现事先设置事件时,操作系统会给应用程序发送这个消息,从而使应用程序可以对该事件做相应的处理。
WSAAsyncSelect模型的优点是在系统开销不大的情况下可以同时处理许多个客户端连接。
它的缺点是,即使应用程序不需要窗口,也要至少设计一个窗口用于处理套接字事件。
而且,在一个窗口中处理大量的事件也可能成为性能瓶颈。
3.答:
4.答:
●
●有数据可以读取。
●连接已经关闭、重置或者中止。
5.答:
WSAEventSelectWSAEventSelect
6.答:
完成端口模型也属于并发线程模型,但它解决了前面提到的普通并发线程模型中存在问题。
完成端口模型中规定了并发线程的数量,并使用线程池对线程进行管理。
系统
套接字在被创立后,可以在任何时候与指定的完成端口进行关联。
线程池的使用既限制了工作线程的数量,又防止了反复创立线程的开销,减少了线程调度的开销,从而提高了效劳器程序的性能。
第9章基于WinPcap技术的网络数据包捕获、过滤和分析技术
一、选择题
1.B2.C3.C4.B
二、填空题
1.WindowsPacketCapture2.网络
3.核心层4.用户层
5.监听〔或混杂〕6.pcap_findalldevs_ex()
7.pcap_open()
三、简答题
1.答
WinPcap是Windows平台下的网络数据包捕获库。
它可以独立于TCP/IP协议发送和接收原始数据包,其主要功能如下:
●绕开网络协议栈捕获网络数据包,支持远程数据包捕获功能。
●在数据包发送到应用程序之前,按照指定的规那么实现核心层数据包过滤。
●在网络上发送原始数据包。
●收集网络通信过程中的统计信息。
2.
答:
NPF包含4个主要功能,即数据的捕获和过滤、监测和统计、转储到磁盘以及数据包发送。
〔1〕数据包的捕获和过滤
捕获数据库是WinPcap的核心技术。
在捕获时,驱动器使用网络接口嗅探数据包,并把它们完整地传送到用户层应用程序。
可以看到,捕获数据包时使用了两个组件,即过滤器和核心缓冲区。
核心缓冲区用来保存数据包,防止出现丢包的情况。
如果网络中的数据流量很大,那么NPF很可能无法及时地把通过过滤器的数据包复制到用户应用程序。
如果没有缓冲区,那么在新的数据包到达后,NPF就必须把未传送的数据包丢弃,就是会影响用户应用程序的分析结果。
另外,系统调用一次可以从内核空间中复制到用户空间的最小数据量也是极其重要的。
如果这个值很大的话,内核需要等待假设干个数据包到达后才能把数据复制到用户空间中去。
这样会减少系统调用的次数,从而占用较少的CPU利用率,但这是以牺牲程序的实时性为代价的。
在配置这个值时,用户必须在高效率和高响应性上做出选择。
在Wpcap.dll中包含用来设置读取操作超时时间和传递给应用程序的最小数据量值的系统调用。
在默认情况下,读操作的超时时间为1秒钟,内核复制给应用程序的最小数据量为16KB。
〔2〕监测和统计
NPF中包含一个可编程的监测模块,它可以对网络流量进行简单的统计和计算。
不需要把数据包复制到用户层应用程序,只要简单地接收和显示从监测引擎获得的结果即可收集到统计信息。
不需要捕获数据包捕获,也就防止了捕获过程中可能消耗的CPU和内存资源。
监测引擎由一个带有计数器的分类器构成。
NPF中的一个过滤引擎对数据包进行分类,没有被过滤掉的数据会进入计数器。
计数器拥有一些变量,用于保存数据的数据和过滤器接收的字节数。
每当有新的数据包进入时,这些变量的值都会被更新。
监测引擎会定期将这些变量的值传递给用户层应用程序,传递的时间可以由用户自行配置。
〔3〕转储到磁盘
该功能允许用户直接在内核模式下将网络数据保存到磁盘上,而不需要把数据包复制到用户层应用程序,再由应用程序将数据保存磁盘上。
〔4〕数据包发送
3.答:
利用WinPcap进行网络数据包的捕获和过滤的根本步骤如下:
〔1〕翻开网卡,并设为混杂模式
〔3〕当数据包过滤器监听到有数据包到达时,NDIS中间驱动程序首先调用分组驱动程序,该程序将数据传递给每一个参与进程的分组过滤程序。
〔5〕通过分组过滤器后,将未过滤掉的数据包提交给核心缓冲区。
然后等待系统缓冲区满后,再将数据包拷贝到用户缓冲区。
监听程序可以直接从用户缓冲区中读取捕获的数据包。
〔6〕关闭网卡。