网络程序设计复习题Word文件下载.docx
- 文档编号:19953594
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:14
- 大小:21.56KB
网络程序设计复习题Word文件下载.docx
《网络程序设计复习题Word文件下载.docx》由会员分享,可在线阅读,更多相关《网络程序设计复习题Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
网络结点、通信线路
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,则各个字节的发送顺序为。
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<
stdio.h>
03#include<
winsock2.h>
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("
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("
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("
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.阅读程序,回答问题。
09WORDsocketVersion=MAKEWORD(2,2);
10WSADATAwsaData;
11if(WSAStartup(socketVersion,&
17SOCKETsclient=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
18if(sclient==INVALID_SOCKET)
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>
38{
39recvData[ret]=0x00;
40printf(recvData);
41}
42
43closesocket(sclient);
44WSACleanup();
45system("
46return0;
47}
(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函数?
(11)如果该程序采用的是请求-响应模式,那么该程序是服务器程序还是客户端程序?
(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的全部内容打印出来。
(9)程序即将结束。
在此之前,需要关闭套接字并在WinSock实现中注销该程序,释放此前为应用程序、DLL及套接字分配的系统资源。
(11)客户端程序。
因为该程序首先向对方发送数据,然后等待对方的响应。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络程序设计 复习题