网络程序设计复习题.docx
- 文档编号:6932101
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:14
- 大小:21.56KB
网络程序设计复习题.docx
《网络程序设计复习题.docx》由会员分享,可在线阅读,更多相关《网络程序设计复习题.docx(14页珍藏版)》请在冰豆网上搜索。
网络程序设计复习题
选择题
1.通信子网由通信线路和()两部分组成。
A.终端结点B.转接结点C.网络结点D.通信结点
答案:
B
2.在TCP/IP参考模型中,TCP协议的协议数据单元指的是()。
A.TCP报文段B.TCP用户数据报C.TCP用户数据报载荷D.来自应用层的数据
答案:
A
3.在OSI参考模型中,()层在两个相邻结点间无差错地传送以帧为单位的数据。
A.物理层B.数据链路层C.传输层D.网络层
答案:
B
4.IP地址属于()。
A.物理地址B.逻辑地址C.端口地址D.特定应用地址
答案:
B
5.URL属于()。
A.物理地址B.逻辑地址C.端口地址D.特定应用地址
答案:
D
6.socket编程属于()。
A.面向应用的网络编程B.基于TCP/IP协议栈的网络编程
C.面向原始数据帧的网络编程D.面向用户数据报的网络编程
答案:
B
7.WinPcap编程属于()。
A.面向应用的网络编程B.基于TCP/IP协议栈的网络编程
C.面向原始数据帧的网络编程D.面向用户数据报的网络编程
答案:
C
8.提出客户/服务器模型的目的是用来解决()。
A.点到点通信B.端到端通信C.会聚点问题D.中间人攻击
答案:
C
9.以下哪种网络应用适合选用流式套接字编程?
()
A.文件下载B.直播C.广播D.DNS
答案:
A
10.原始套接字发送和接收数据的内容是()。
A.应用层数据B.TCP或UDP报文C.IP分组D.原始数据帧
答案:
C
11.WinPcap不能用于()。
A.捕获网络数据帧B.发送网络数据帧C.网络监测和统计D.网络流量控制
答案:
D
12.WinPcap不能用来开发()。
A.网络防火墙B.网络监视器C.网络流量发生器D.网络流量记录器
答案:
A
填空题
1.计算机网络由和两部分构成。
答案:
网络结点、通信线路
2.网络结点分为和两类。
答案:
终端结点、转接结点
3.通信子网由和两部分构成。
答案:
转接结点、通信线路
4.资源子网是结点的集合。
答案:
终端
5.网络中的结点在进行数据交换时共同遵守的一些规则、约定与标准称为。
答案:
协议
6.在计算机网络体系结构中,是相邻层间的服务接口,实现层与层之间的实体通信。
答案:
服务访问点(或SAP)
7.在计算机网络体系结构中,是从上层实体得到的报文。
答案:
服务数据单元(或SDU)
8.在计算机网络体系结构中,是协议通信时传递的数据单元。
答案:
协议数据单元(或PDU)
9.OSI参考模型将计算机网络分成了层。
答案:
7
10.当前全球范围内应用的互联网络参考模型是。
答案:
TCP/IP参考模型
11.以大端字节序存储数值0x12345678,按内存地址增大方向排序,内存中的各个字节为。
答案:
0x12,0x34,0x56,0x78
12.在基于x86平台的PC机上存储数值0x12345678,按内存地址增大方向排序,内存中的各个字节为。
答案:
0x78,0x56,0x34,0x12
13.在基于TCP/IP协议栈的网络上发送数值0x12345678,则各个字节的发送顺序为。
答案:
0x12,0x34,0x56,0x78
14.网络应用程序发送数据前,用户定义的数据类型为大于1字节的整数时,需要将_________字节序转换为字节序。
答案:
主机、网络
15.网络应用程序接收数据后,当需要将以字节流形式表示的网络数据转换为大于1字节的整数时,需要将字节序转换为字节序。
答案:
网络、主机
16.在socket程序设计中,使用由协议、本地地址、本地端口号、___________和__________组成的五元组,唯一标识一个完整的网络通信。
答案:
远程地址、远程端口号
17.在TCP/IP协议族中,端口号是之间的整数。
答案:
0~65535
18.IP地址和端口号的组合称为。
答案:
套接字地址(或端点地址)
19.数据报套接字的模式适用于单播、广播和多播。
答案:
非连接
20.是允许访问底层传输协议的一种套接字类型,能够对网络数据包进行某种程度的控制操作。
答案:
原始套接字
21.著名的网络协议分析软件Wireshark是基于开源库开发的。
答案:
WinPcap
22.WinPcap的体系结构包含网络、和用户层三个层次。
答案:
核心层
23.NPF模块位于WinPcap的层。
答案:
核心
24.WinPcap提供了Packet.dll和wpcap.dll两个编程接口,其中的层次更高。
答案:
wpcap.dll
判断题
1.通常认为TCP/IP模型的应用层是OSI模型中应用层、表示层、会话层三层的合并。
答案:
对
2.OSI是先有协议,协议丰富后出现模型加以描述和规范。
答案:
错
3.与OSI模型相比,TCP/IP模型的层次定义更清晰,更容易实现协议替换。
答案:
错
4.客户/服务器模型适用于流式套接字编程。
答案:
对
5.客户/服务器模型适用于数据报套接字编程。
答案:
对
6.客户/服务器模型不适用于原始套接字编程。
答案:
对
7.客户/服务器模型不适用于WinPcap编程。
答案:
对
8.在客户/服务器模型中,客户与服务器的数量关系可以是一对多。
答案:
对
9.在客户/服务器模型中,客户与服务器的数量关系可以是多对一。
答案:
对
10.在客户/服务器模型中,客户与服务器的数量关系可以是多对多。
答案:
对
11.在客户/服务器模型中,客户与服务器可以位于同一主机上。
答案:
对
12.在客户/服务器模型中,客户与服务器可以位于同一局域网上。
答案:
对
13.应用程序可以同时具有客户和服务器两种角色。
答案:
对
14.与客户/服务器模型相比,P2P模型配置更容易。
答案:
对
15.与客户/服务器模型相比,P2P模型配置成本更低。
答案:
对
16.与客户/服务器模型相比,P2P模型管理更复杂。
答案:
对
17.P2P模型可以解决客户/服务器模型中服务器的性能瓶颈问题。
答案:
对
18.标准ASCII编码是国际通用的字符编码。
答案:
对
19.TCP提供全双工服务。
答案:
对
20.TCP是可靠的传输层协议
答案:
对
21.UDP是无连接的协议。
答案:
对
22.数据报套接字的非连接模式适用于单播、广播和多播。
答案:
对
23.数据报套接字的连接模式仅适用于单播。
答案:
对
24.原始套接字适用于基于数据包捕获的应用。
答案:
对
25.WSAAsyncSelect模型适合处理多个I/O请求。
答案:
对
26.WSAAsyncSelect模型利用了Windows的消息处理机制。
答案:
对
27.阻塞I/O模型是同步、阻塞的。
答案:
对
28.非阻塞I/O模型是同步、非阻塞的。
答案:
对
29.I/O复用模型是异步、阻塞的。
答案:
错
30.WSAAsyncSelect模型是异步、非阻塞的。
答案:
对
简答题
2.常用的网络编程方法有哪几种?
请简述它们的基本概念。
答案:
常用的网络编程方法包括面向应用的网络编程方法、基于TCP/IP协议栈的网络编程方法、面向原始帧的网络编程方法等。
面向应用的网络编程方法是针对具体应用、特定协议的网络应用程序编程方法。
这些方法屏蔽了大量网络操作的细节,提供简单的接口用于访问应用程序的数据流。
基于TCP/IP协议栈的网络编程方法是最基本的网络编程模式,主要是使用各种编程语言,利用操作系统提供的套接字网络编程接口,直接开发各种网络应用程序。
在网络上直接发送和接收数据帧是最原始的数据访问方式。
在这个层面上,程序员能够控制网卡的工作模式,灵活地访问帧中的各个字段。
然而,这种灵活性也增加了程序设计的复杂性。
3.网络应用程序的功能有哪些?
答案:
在计算机网络环境中,运行于协议栈之上并借助协议栈实现通信的网络应用程序,主要承担三个方面的功能:
(1)实现通信能力:
在协议族的不同层次上选择特定通信服务,调用相应的接口函数实现数据传输功能。
(2)处理程序逻辑:
根据程序功能,对网络交换的数据进行加工处理,从而满足用户的种种需求。
(3)提供用户交互界面:
接受用户的操作指示,将操作指示转换为机器可识别的命令进行处理,并将处理结果显示于用户界面。
4.客户/服务器模型有哪些优缺点?
答案:
优点:
结构简单
支持分布式、并发环境
服务器集中管理资源,有利于权限控制和系统安全
可扩展性较好
缺点:
缺乏有效的安全性
客户负荷过重
服务器工作效率低
容易造成网络阻塞
6.浏览器/服务器模型有哪些优缺点?
答案:
优点:
具有分布式特点,可以随时随地进行查询、浏览等业务处理
业务扩展简单方便,通过增加网页即可增加服务器功能
维护简单方便,只需改变网页,即可实现所有用户的同步更新
开发简单,共享性强
缺点:
以鼠标为最基本的操作方式,无法满足快速操作的要求
页面动态刷新,响应速度明显降低
功能弱化,难以实现传统模式下的特殊功能要求
7.P2P模型有哪些优缺点?
答案:
优点:
配置容易
通信方便
成本低
缺点:
知识产权的侵害
网络病毒传播
垃圾信息
管理复杂
8.何时需要进行字节序转换?
答案:
下列几种场景需要进行字节序转换:
(1)发送数据前,用户定义的数据类型为大于1字节的整数时,需要将主机字节序转换为网络字节序。
(2)接收数据后,当需要将以字节流形式表示的网络数据转换为大于1字节的整数时,需要将网络字节序转换为主机字节序。
(3)当使用解析函数如gethostbyname()、getserverbyname()、inet_addr()等后,数值都是以网络字节序的方式返回,不需要在发送前调用hton*()函数转换,否则会发生错误。
程序阅读题
1.阅读程序,回答问题。
01#include"afx.h"
02#include
03#include
04
05#pragmacomment(lib,"ws2_32.lib")
06
07intmain(intargc,char*argv[])
08{
09WSADATAwsaData;
10WORDsockVersion=MAKEWORD(2,2);
11if(WSAStartup(sockVersion,&wsaData)!
=0)
12{
13system("pause");
14return0;
15}
16
17SOCKETserSocket=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
18if(serSocket==INVALID_SOCKET)
19{
20printf("socketerror!
");
21WSACleanup();
22system("pause");
23return0;
24}
25
26sockaddr_inserAddr;
27serAddr.sin_family=AF_INET;
28serAddr.sin_port=htons(8888);
29serAddr.sin_addr.S_un.S_addr=INADDR_ANY;
30if(bind(serSocket,(sockaddr*)&serAddr,sizeof(serAddr))==SOCKET_ERROR)
31{
32printf("binderror!
");
33closesocket(serSocket);
34WSACleanup();
35system("pause");
36return0;
37}
38
39sockaddr_inremoteAddr;
40intnAddrLen=sizeof(remoteAddr);
41while(true)
42{
43charrecvData[255];
44intret=recvfrom(serSocket,recvData,255,0,(sockaddr*)&remoteAddr,&nAddrLen);
45if(ret>0)
46{
47recvData[ret]=0x00;
48printf("接收到来自%s的数据\r\n",inet_ntoa(remoteAddr.sin_addr));
49printf(recvData);
50
51char*sendData="一个数据包\n";
52sendto(serSocket,sendData,strlen(sendData),0,(sockaddr*)&remoteAddr,nAddrLen);
53}
54}
55closesocket(serSocket);
56WSACleanup();
57system("pause");
58return0;
59}
(1)第9~11行做的事情是?
(2)第17行做的事情是?
(3)第28行,为什么要使用htons?
(4)第30行,bind函数的具体作用是?
(5)第33、34行,为什么要调用closesocket和WSACleanup函数?
(6)第47行做的事情是?
为什么需要第47行?
(7)第48行打印出的信息是?
为什么要调用inet_ntoa函数?
(8)该程序在什么情况下会向对方发送数据?
发送数据的内容是什么?
(9)第56行,WSACleanup函数的具体作用是?
(10)该程序是流式套接字编程、数据报套接字编程还是原始套接字编程?
为什么?
(11)该程序采用的传输层协议是TCP还是UDP?
为什么?
(12)该程序使用的是何种I/O模型?
答案:
(1)完成WinSock动态链接库的初始化,指定程序使用的WinSock版本为2.2,分配必要的资源。
(2)创建套接字,指定其地址族为IPv4,套接字类型为数据报套接字,使用传输协议UDP。
(3)因为本机中的数值是主机字节序的,而sockaddr_in结构体中的端口号是网络字节序,所以在填写sockaddr_in结构体的端口号之前,需要使用htons将主机字节序的数值转换为网络字节序。
(4)将指定的套接字同一个已知的套接字地址绑定在一起。
(5)bind函数调用失败,程序即将结束。
在此之前,需要关闭监听套接字并在WinSock实现中注销该程序,释放此前为应用程序、DLL及套接字分配的系统资源。
(6)第47行的作用是在接收到的数据后面加上一个结束标记,这样第49行打印出的就会是从缓冲区开头到结束标记之间的部分,即接收到的数据。
如果不加结束标记,那么第49行会将缓冲区recvData的全部内容打印出来。
缓冲区recvData的前面部分是接收到的数据,而数据后面的内容则是不可预知的。
(7)打印出的是字符串“接收到来自”+点分十进制形式的对端IP地址+字符串“的数据”。
调用inet_ntoa函数的目的是把地址结构体中数值形式的对端IP地址转换成点分十进制形式,以便显示在屏幕上供用户阅读。
(8)在接收到来自对方的数据之后;“一个数据包”。
(9)在WinSock实现中注销该程序,释放此前为应用程序及DLL分配的系统资源。
(10)数据报套接字编程。
因为在创建套接字时指定了套接字类型为数据报套接字。
(11)UDP。
因为在创建套接字时指定了传输层协议为UDP。
(12)阻塞I/O模型。
2.阅读程序,回答问题。
01#include"afx.h"
02#include
03#include
04
05#pragmacomment(lib,"ws2_32.lib")
06
07intmain(intargc,char*argv[])
08{
09WORDsocketVersion=MAKEWORD(2,2);
10WSADATAwsaData;
11if(WSAStartup(socketVersion,&wsaData)!
=0)
12{
13system("pause");
14return0;
15}
16
17SOCKETsclient=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
18if(sclient==INVALID_SOCKET)
19{
20printf("socketerror!
");
21WSACleanup();
22system("pause");
23return0;
24}
25
26sockaddr_insin;
27sin.sin_family=AF_INET;
28sin.sin_port=htons(8888);
29sin.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
30intlen=sizeof(sin);
31
32char*sendData="一个数据包.\n";
33sendto(sclient,sendData,strlen(sendData),0,(sockaddr*)&sin,len);
34
35charrecvData[255];
36intret=recvfrom(sclient,recvData,255,0,(sockaddr*)&sin,&len);
37if(ret>0)
38{
39recvData[ret]=0x00;
40printf(recvData);
41}
42
43closesocket(sclient);
44WSACleanup();
45system("pause");
46return0;
47}
(1)第9~11行做的事情是?
(2)第17行做的事情是?
(3)第26~29行做的事情是?
(4)第28行,为什么要使用htons?
(5)第29行,为什么要调用inet_addr函数?
(6)如果通信目标的IP地址为192.168.8.41,那么程序应该如何修改?
(7)第36行做的事情是?
(8)第39行做的事情是?
为什么需要第39行?
(9)第43、44行,为什么要调用closesocket和WSACleanup函数?
(10)该程序是流式套接字编程、数据报套接字编程还是原始套接字编程?
为什么?
(11)如果该程序采用的是请求-响应模式,那么该程序是服务器程序还是客户端程序?
为什么?
(12)该程序使用的是何种I/O模型?
答案:
(1)完成WinSock动态链接库的初始化,指定程序使用的WinSock版本为2.2,分配必要的资源。
(2)创建套接字,指定其地址族为IPv4,套接字类型为数据报套接字,使用传输协议UDP。
(3)指定通信目标的地址族为IPv4,端口号为8888,IP地址为127.0.0.1。
(4)因为本机中的数值是主机字节序的,而sockaddr_in结构体中的端口号是网络字节序,所以在填写sockaddr_in结构体的端口号之前,需要使用htons将主机字节序的数值转换为网络字节序。
(5)为了把点分十进制形式的通信目标的IP地址转换成数值形式,以便填入地址结构体。
(6)将29行的IP地址127.0.0.1改为192.168.8.41。
(7)使用长度为255的缓冲区recvData从套接字sclient上接收数据。
(8)第39行的作用是在接收到的数据后面加上一个结束标记,这样第40行打印出的就会是从缓冲区开头到结束标记之间的部分,即接收到的数据。
如果不加结束标记,那么第40行会将缓冲区recvData的全部内容打印出来。
缓冲区recvData的前面部分是接收到的数据,而数据后面的内容则是不可预知的。
(9)程序即将结束。
在此之前,需要关闭套接字并在WinSock实现中注销该程序,释放此前为应用程序、DLL及套接字分配的系统资源。
(10)数据报套接字编程。
因为在创建套接字时指定了套接字类型为数据报套接字。
(11)客户端程序。
因为该程序首先向对方发送数据,然后等待对方的响应。
(12)阻塞I/O模型。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络程序设计 复习题
![提示](https://static.bdocx.com/images/bang_tan.gif)