网络程序设计复习题Word文件下载.docx

上传人:b****5 文档编号:19953594 上传时间:2023-01-12 格式:DOCX 页数:14 大小:21.56KB
下载 相关 举报
网络程序设计复习题Word文件下载.docx_第1页
第1页 / 共14页
网络程序设计复习题Word文件下载.docx_第2页
第2页 / 共14页
网络程序设计复习题Word文件下载.docx_第3页
第3页 / 共14页
网络程序设计复习题Word文件下载.docx_第4页
第4页 / 共14页
网络程序设计复习题Word文件下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

网络程序设计复习题Word文件下载.docx

《网络程序设计复习题Word文件下载.docx》由会员分享,可在线阅读,更多相关《网络程序设计复习题Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。

网络程序设计复习题Word文件下载.docx

网络结点、通信线路

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)客户端程序。

因为该程序首先向对方发送数据,然后等待对方的响应。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 公务员考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1