1、第 1 页,共 7 页 合肥学院 2014 至 2015 学年第 二 学期 网络协议编程 课程考试 ( A) 卷 系 级 专业 学号 姓名 题号 一 二 三 四 五 六 七 八 九 十 总 分 得分 阅卷 一、 选择题: ( 2 分 10=20 分 ) 1 Telnet使用( A )端口来建立连接 A. TCP端口 23 B. UDP 端口 23 C. ARP端口 25 D. ICMP端口 25 2. Ping命令使用的协议为( D ) A. TCP B. UDP C. ARP D. ICMP 3. 下面模型使用线程池处理异步 I/O请求的是( D ) A Select模型 B WSAAsyn
2、cSelect 模型 C WSAEventSelect 模型 D Overlapped I/O 完成例程模型 4. 目前流行 的 Internet 通信协议是( D ) A. HTML B. HTTP C. ARPA D. TCP/IP 5. 172.17.17.182/25 的 网络号是多少?( C ) A. 172.17.17.0 B. 172.17.255.0 C. 172.17.17.128 D. 172.17.17.255 6. FTP客户机向服务器发送 PASS命令, FTP 服务器 返回的响应 代码 为 ( A )才表示用户名和密码均正确并登陆成功。 A. 230 B. 331
3、C. 332 D. 420 7.ICMP时间戳 请求 报文 的 报文类型为( C ) A. type=8 B. type=3 C. type=13 D. type=14 (试卷首页 ) 大题 得分 装 订 线 第 2 页,共 7 页 8.阻塞模式相比较非阻塞模 式( A ) A.开发过程更加简单 B.在大量建立好的套接字线程之间进行通信时比较容易 C.需要写更多的代码 D.在数据收发量不均、时间不定的时候,具有更明显的优势 9.数据包的捕获流程为( A ) A. Pcap_findalldevs - Pcap_open_live - Pcap_compile - Pcap_setfilter
4、- Pcap_loop - Pcap_close B. Pcap_findalldevs - Pcap_compile - Pcap_open_live - Pcap_setfilter - Pcap_loop - Pcap_close C. Pcap_findalldevs - Pcap_open_live - Pcap_compile - Pcap_setfilter - Pcap_close D. Pcap_findalldevs - Pcap_open_live - Pcap_compile - Pcap_loop - Pcap_close 10.在 Visual C+中,通常使用 W
5、inSock2.2实现网络通信的功能,则需要引用头 文件为( B ) A. Winsock.h B. winsock2.h C. winsock2_2.h D. winsock2.2.h 二、 填空题 ( 1 分 20=20 分 ) 1.在计算机中使用无符号长整型数( unsigned long)来存储和表示 IP 地址,而且分为 _网络字节顺序 _和 _主机字节顺序 _两种格式。 2.Socket编程可以分为 _阻塞 _ _和 _非阻塞 _两种开发模式。 3.NPF是 Winpcap 的核心部分,也是 Winpcap 的核心组件,它可以实现数据 包的 捕获 、过滤 、 统计 、 转储 等功能
6、。 4.在 Visual C+中使用结构体 _ in_addr_来保存网络字节顺序格式的 IP地址。 5.常见的网络编程技术有: 直接网卡编程技术 、基于 Packet Driver 的网络编程技术、基于 NDIS 的网络编程技术、基于 Libpcap/Winpcap 的网络编程技术、 Socket 网络编程技术 _和 基于 .Net 框架的网络编程技术 。 6.FTP 用于建立控制连接的端口为 21 ;当需要传输文件数据时,客户端程序将连接服务器的端口 20 。 7.根据 基于的底层协议不同, Socket 开发接口可以提供 _面向连接 _和 _面向无连接_两种服务方式。 8.两个主机使用
7、TCP 进行通信可以分为 3 个阶段,即 建立连接 阶段 , _数据传输阶段 _和 断开连接 释放资源阶段 。 9.在 WSAAsyncSelect 模型中,应用程序可以在一个 Socket 上接收以 _ Windows 消息 _为基础的网络事件通知。 10.在 select()函数中使用 _ fd_set_结构体来管理多个 Socket。 三、 简答题( 6 分 4=24 分 ) 1.描述 TCP/IP协议族 的 体系结构 。 ( 1)网络接口层 ( 2)网际层(网络层) ( 3)运输层(传输层) ( 4)应用层 大题 得分 大题 得分 小题 得分 第 3 页,共 7 页 评分 标准: 1、
8、 每个 1.5 分 ,共 6 分。 2.简述 Socket提供的 三种类型套接字 以及它们各自的特点是? 流式套接口( SOCK_STREAM)提供面向链接的、可靠的数据传输服务,可以无差错地发送和接受数据。流式套接字在传输层是通过 TCP 协议实现的。 数据报套接口( SOCK_DGRAM)提供了一种无连接、不可靠的双向数据传输服务。数据报套接口在传输层通过 UDP 协议实现。 原始套接口( SOCK_RAW)提供了读写 IP/ICMP/IGMP、构造特殊的 IP 报文的功能。 评分 标准: 1、 能回答出三种类型名称的,各得 1 分, 共 3 分 , 写出 中文或英文的名称均可; 2、 能
9、 正确描述三种套接字的特点的,每个 1 分 , 共 3 分 。 3.HTTP请求 中包含 请求 行、报头、空白行和请求正文,请简述 的消息 报头的四个种类 ? 其中包括:普通报头(只用于传输消息,并不用于被传输的实体) 请求报头(允许客户端向服务器端传递请求的附加信 息以及客户端自身的信息) 响应报头(允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对 Request-URI 所标识的资源进行下一步访问的信息) 实体报头(请求和响应消息都可以传送一个实体) 评分 标准: 1、每项 1.5 分 ,共 6 分 。 4.简述 FTP的两种连接模式及 两种 连接模式 的特点 。 答
10、: FTP 支持两种运行模式,即主动模式和被动模式,它们的区别在于控制如何打开第 2个连接。 1主动模式 :在主动模式下,客户端向服务器发送自己用于数据连接的 IP 地址和端口号,然后由服务器程序打开数据连接。 2被动模式 :当客户端在防火墙后面或者无法接收 TCP 连接时,通常建议采用被动模式。在被动模式下,服务器向客户端发送自己用于数据连接的 IP 地址和端口号,则客户端打开数据连接。 评分 标准: 1、 能表述出 两种 模式的,各得 1 分 ,共 2 分 ; 2、 能 表述清楚两种模式的特点,各得 2 分 , 共 4 分 。 小题 得分 小题 得分 小题 得分 大题 得分 装 订 线 第
11、 4 页,共 7 页 四 、 编程题 ( 2 分 10=20 分 ) 通常我们使用 winsock2.2 来进行网络编程 , 下面是我们在网络协议编程 中经常使用的模版范例,请根据你所学的知识填空 。 其中在 注释符号后面的 填空 需要填写的内容是程序的注释,在代码中间所要填写的是 开发 过程中所需要使用到的函数或变量等 。 #include “stdafx.h“ #include #include “( 1) “ #pragma comment(lib, “( 2) “) int main(int argc, char* argv) const int BUF_SIZE = 64; WSAD
12、ATA wsd; /WSADATA 变量 SOCKET sServer; /服务器套接字 SOCKET sClient; /客户端套接字 SOCKADDR_IN addrServ; /服务器地址 char bufBUF_SIZE; /接收数据缓冲区 int retVal; /返回值 if (WSAStartup(MAKEWORD(2,2), return 1; /( 4) , 填写下面一句的注释 sServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(INVALID_SOCKET = sServer) printf(“失败 !n“); W
13、SACleanup(); return -1; /服务器套接字地址 addrServ.sin_family = ( 5) ; addrServ.sin_port = htons(4999); addrServ.sin_addr.s_addr = INADDR_ANY; /( 6) retVal = bind(sServer, (LPSOCKADDR) if(SOCKET_ERROR = retVal) printf(“失败 !n“); 第 5 页,共 7 页 closesocket(sServer); WSACleanup(); return -1; /开始监听 retVal = ( 7) (
14、sServer, 1); if(SOCKET_ERROR = retVal) printf(“监听任务失败 !n“); closesocket(sServer); WSACleanup(); return -1; /接受客户端请求 sockaddr_in addrClient; int addrClientlen = sizeof(addrClient); /接受链接 sClient =( 8) (sServer,(sockaddr FAR*) if(INVALID_SOCKET = sClient) printf(“接受链接启动失败 !n“); closesocket(sServer); W
15、SACleanup(); return -1; while(true) /接收客户端数据 ZeroMemory(buf, BUF_SIZE);/清空 retVal =( 9) (sClient, buf, BUF_SIZE, 0);/接收 数据 if (SOCKET_ERROR = retVal) printf(“接受客户端数据失败 !n“); closesocket(sServer); closesocket(sClient); WSACleanup(); return -1; if(buf0 = 0) break; printf(“客户端发送的数据: %sn“,buf); 装 订 线 第
16、6 页,共 7 页 printf(“向客户端发送数据 :%sn“,buf); ( 10) (sClient, buf, strlen(buf), 0); /发送 数据 closesocket(sServer); /关闭套接字 closesocket(sClient); /关闭套接字 WSACleanup(); /释放套接字资源 ; return 0; 答案 : 1 winsock2.h 2 ws2_32.lib 3初始化套结字动态库 4创建套接字 5 AF_INET 6绑定套接字 7 listen 8 accept 9 recv 10 send 评分 标准: 1、每个填空 1 分 ,共 10
17、分 ,要求 程序 关键字的大小写均需要填写正确 , 中文注释的 地方 只要意思答对即可 。 五 、 综合题( 16 分 *1=16 分 ) 1、 我们在浏览互联网信息的时候使用的最多的方式就是使用浏览器(如 IE、 Chrome、Fixfox), 实际上 浏览器就是我们 通常 所说的 WWW客户端 , 请 运用你所学的网络协议编程知识,阐述 请 从 软件设计 到软件的 开发 、 调试 、 运行的过程 中 的关键 设计 流程 以及知识点。 本题 为开放 、 综合性的题目,主要考察 学生 对于网络协议编程中 应用层 中编程的流程以及基本的软件设计的流程的描述 的 能力等。 主要 的设计 流程图参考如下: 大题 得分 第 7 页,共 7 页 评分 标准: 1、 能绘出 流程图, 并且 流程 顺序 不出现 原理性颠倒或错误 的情况下,每个步骤 1 分 ,共 8分 , 写出 超出 8 个 步骤的,最高分为 8 分 ; 2、 按照 软件的设计流程描述出来 软件开发 步骤的, 每个 步骤 0.5 分 , 此 部分最高 分 4 分 ; 3、 对于 能完整表述开发的过程及设计的流程,并整体设计思路较为清晰的,根据描述的准确度评定 1-4 分 。