Windows网络编程基础-习题解答

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Windows网络编程基础课后习题作业软件1202罗伟(1205290203)第一章:1.TCP/IP协议栈的五个层次是什么?在这些层次中,每层的主要任务是什么?解答:TCP/IP参考模型分为五个层次:应用层、传输层、网络层、链路层和物理层。以下分别介绍各层的主要功能。应用层是网络应用程序及其应用层协议存留的层次。该层包括了所有与网络相关的高层协议,如文件传输协议(FileTransferProtocol,FTP)、超文本传输协议(HypertextTransferProtocol,HTTP)、Telent(远程终端协议)、简单邮件传送协议(SimpleMailTransferProtocol,SMTP)、因特网中继聊天(InternetRelayChat,IRC)、网络新闻传输协议(NetworkNewsTransferProtocol,NNTP)等。传输层的功能是使源端主机和目标端主机上的对等实体可以进行会话。在传输层定义了两种服务质量不同的协议,即:传输控制协议(TransmissionControlProtocol,TCP)和用户数据报协议(UserDatagramProtocol,UDP)。网络层是整个TCP/IP协议栈的核心。它的功能是通过路径选择把分组发往目标网络或主机,进行网络拥塞控制以及差错控制。链路层负责物理层和网络层之间的通信,将网络层接收到的数据分割成特定的可被物理层传输的帧,并交付物理层进行实际的数据传送。物理层的任务是将该帧中的一个一个比特从一个节点移动到下一个节点。该层中的协议仍然是链路相关的,并且进一步与链路(如双绞线、单模光纤)的实际传输媒体相关。对应于不同的传输媒体,跨越这些链路移动一个比特的方式不同。2.请分析路由器、链路层交换机和主机分别处理TCP/IP协议栈中的哪些层次?解答:路由器处理TCP/IP协议栈的物理层、链路层和网络层;链路层交换机处理TCP/IP协议栈的物理层和链路层;主机处理TCP/IP协议栈的物理层、链路层、网络层、传输层和应用层。3.请阐述NAT技术的主要实现方式,并思考NAT技术对网络应用程序的使用带来哪些影响?解答:网络地址转换(NetworkAddressTranslation,NAT)是接入广域网(WAN)的一种技术,能够将私有(保留)地址转化为合法的IP地址,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。NAT的实现方式有三种,即静态转换、动态转换和端口多路复用。NAT有效解决了IP地址短缺的问题,但是它也带来了一些新的问题。主要体现在:处于NAT后面的主机不能充当服务器直接接收外部主机的连接请求,必须对NAT设备进行相应的配置才能完成外部地址与内部服务器地址的映射;处于不同NAT之后的两台主机无法建立直接的UDP或TCP连接,必须使用中介服务器来帮助它们完成初始化的工作。4.某业务要求实现一个局域网上网行为监控的软件,能够对局域网内用户的上网行为(包括访问站点、使用聊天工具、发布言论等)进行截获和分析,请选择一个合适的网络程序设计方法,并说明该软件设计的主要流程。解答:选择使用具有较强数据捕获能力的网络编程方法,如WinPcap编程或WinSock编程中的原始套接字。局域网上网行为监控软件的主要流程包括:1)通过交换机的镜像端口或分光方式,搭建局域网流量截获环境,能够将局域网上下行的网络流量复制出来进行后续分析;2)对镜像出的网络流量进行捕获,得到原始数据;3)对原始数据进行过滤,识别并保留与上网行为监控相关的协议数据,如HTTP、SMTP、QQ通信协议等;4)提取不同协议中监控者感兴趣的信息,如访问网址、聊天对象、发布言论等;5)分析数据,进行重点用户监控和异常行为检测。第二章网络程序通信模型习题1.面向少量客户持续请求的服务器和面向大量客户短期请求的服务器在设计中有哪些区别?解答:面向少量客户持续请求的服务器在单位时间内处理的客户请求数量是有限的,但服务器与每个客户端之间的交互时间和频率是持续的。在这种情况下,服务器一般设计为并发服务器,为每个客户端分配专门的线程以处理其复杂的业务需求。面向大量客户短期请求的服务器在同一时间可能面临成百上千个客户的大量请求,但每个客户端的请求与响应比较简单。在这种情况下,服务器需要根据客户的具体业务需求来设计。如果是类似于时间服务的单次查询-响应服务,可选择循环服务器串行响应每个客户端的请求,避免线程膨胀和维护的复杂性;如果是类似于Web访问较复杂的服务,可选择基于完成端口的异步I/O,与线程池联合管理多个客户端的请求。2.某业务需要实现一个文件服务器,请给出该文件服务器的设计要点。解答:文件服务器主要处理文件的上传与下载业务,在设计时需要考虑以下要点:1)用户鉴别与权限管理。文件服务器应具备一定的用户登录和权限管理能力,以辨别用户身份,保护文件访问的合法性。2)数据传输可靠性。为了确保文件服务器的传输可靠性,在传输协议选择上,可以使用TCP协议自定义文件传输过程,完成数据传输;或者使用FTP协议,用控制流进行用户授权和传输管理,用数据流具体传送文件。3)数据传输的效率。考虑到用户上传和下载大数据的现实体验,文件服务器应提供高效的数据传输能力,比如使用多线程机制提高效率,使用P2P模型支持多点下载等。4)断点续传文件服务器应提供断点续传能力,确保在用户下载过程中断并恢复后,能够保存之前的数据和状态并继续后续的下载任务。实验1.结合Wireshark网络流量分析工具对网页邮件登录过程进行捕获和分析,说明其基本的工作流程。解答:分析流程具体见《Windows网络编程实验》。2.结合Wireshark网络流量分析工具对迅雷登录和文件下载过程进行捕获和分析,说明其基本的工作流程。解答:分析流程具体见《Windows网络编程实验》。第三章网络数据的内容与形态习题1.假设应用程序使用有符号短整型给端口号赋值,当端口号大于32768时,端口号的具体值为多少?是否合理?解答:有符号短整型能够表示的数据范围是-32768~32767,当端口号n大于32768时,短整型最左边一位为1,端口号的值为负数,即-(216-n),这样表示是不合理的,应该选用无符号短整型来描述端口号。2.大端字节顺序和小端字节顺序是CPU处理多字节数的不同方式。例如“汉”字的Unicode编码是0x6C49。那么存储在内存中时数据是如何存储呢?请在自己的系统平台下观察字节在内存中的具体存储方式。解答:在基于X86平台的PC机中,汉字的Unicode编码是6C49,存储在内存中是小端字节序的,具体存储顺序如下:数值:0x6c490x490x6c015小端字节顺序内存地址增大方向3.试考虑一个15字节的消息结构:structintegerMessage{uint8_tonebyte;uint16_ttwobytes;uint32_tfourbytes;uint64_teightbytes;}请问,该消息结构在内存中的实际布置如何?该结构的长度为多少?解答:由于字节对齐的原因,该消息结构在内存中的实际布置如下:1字节填充2字节4字节8字节integerMessage结构体该消息结构的长度为16.4.假设一个端口扫描应用程序被设计为递增IP地址和TCP端口,并手工构造和发送TCP扫描包给目标方,那么在每次发送数据前,TCP扫描包的哪些字段需要修改,如何修改?解答:TCP端口扫描程序面向给定的目的主机,对指定的端口范围进行扫描,扫描过程一般是向目标主机的端口号发送SYN请求,并接收对方的应答,如果对方反馈了SYN应答包则说明该端口开放,否则认为端口不开放。手工构造TCP扫描包涉及到IP首部和TCP首部的构造,那么在探测过程中,每次TCP扫描包需要修改的字段主要有:IP首部中目的IP地址、IP首部的校验和清零后重新计算、TCP首部的目标端口号、TCP首部的校验和清零后重新计算。5.请设计一个远程投票系统的消息传送协议,具体内容包括:1)投票协议标识2)投票消息类型3)投票候选人标识4)投票结果使用文本串和二进制两种方式设计投票消息以满足以上需求。解答:基于文本串的消息描述方式需要定义一些固定含义的文本串来标识消息内容。比如:“VOT”指明投票协议,“TYPE:”指明消息类型,“CANDIDATE:”指明候选人,“RESULT:”指明结果。则一个具体的消息可以表示为由消息标识声明的文本串,如“VOTTYPE:2;CANDIDATE:peter;RESULT:true”,假设投票消息传送协议基于TCP协议承载,在具体传输过程中,使用一种编码方式(如:Unicode编码)对该文本串进行描述,并作为TCP协议的数据部分传输。基于二进制的消息描述方式使用固定大小的数据区域存储消息内容,比如设计投票消息传送协议格式如下:协议标识消息类型候选人标识投票结果015定义:协议标识0x01代表投票协议消息类型0x02代表投票消息候选人标识0x05代表候选人“peter”的唯一标识投票结果0x01代表投票,0x02代表反对那么一次对候选人peter的赞成投票的投票消息为:0x01020501.假设投票消息传送协议基于TCP协议承载,在具体传输过程中,二进制描述的投票消息可以直接作为TCP协议的数据部分传输。第四章协议软件接口习题1.阐述使用WindowsSockets编程的环境配置过程。解答:WindowsSockets实现一般由两部分组成:开发组件和运行组件。开发组件是供程序员开发WindowsSockets应用程序使用的,它包括介绍WindowsSockets实现的文档、WindowsSockets应用程序接口(API)引入库和一些头文件。头文件winsock.h、winsock2.h分别对应于WinSock1.1和WinSock2.2,是WindowsSockets最重要的头文件,它们包括了WindowsSockets实现所定义的宏、常数值、数据结构和函数调用接口原型。运行组件是WindowsSockets应用程序接口的动态链接库(DLL),应用程序在执行时通过装入它实现网络通信功能。两个版本的动态链接库以及与其对应的接口引入库和头文件如下所示。表4-1WindowsSockets版本中相应的动态链接库版本头文件静态链接库文件动态链接库文件1.1winsock.hwinsock.libwinsock.dll2.2winsock2.hws2_32.libws2_32.dll对动态链接的使用,需要在程序编译前将对应的头文件引入源文件,以便编译环境可以找到相应函数和变量的声明,并在项目中引入静态链接库文件,以便在程序编译通过后,连接时可以找到套接字函数的执行地址。以WindowsSockets2.2版本为例,对头文件的引入使用以下代码段:#include“winsock2.h”对静态链接库的引入使用以下代码段:#pragmacomment(lib,ws2_32.lib)或者在开发环境中的项目菜单中配置增加对“ws2_32.lib”文件的引入,如下图所示。2.考虑一种提供消息传递的操作系统,阐述如何扩展应用程序接口使其适用于网络通信?解答:提供消息传递的操作系统典型的例子是Windows操作系统,该系统最大的特点是图形化的操作界面,其图形化界面是建立在消息处理机制这个基础之上的。程序不断等待,等待任何可能的输入,然后做判断,根据不同的消息调用消息处理函数进行适当的处理。这种输入是操作系统捕捉到后以消息形式(一种数据结构)进入程序之中的。有了消息机制的推动,套接字接口也可以借助消息机制来通知应用程序网络事件满足,具体思路是:首先为应用程序创建消息传递所需的消息接收窗口和消息队列;然后定义与网络事件相关联的消息;之后通过系统调用注册网络事件与消息的对应关系;最后,当网络事件发生时,系统触发消息通知应用程序处理。通过以上基本步骤实现了基于消息机制的异步网络操作。3.阐述程序、套接字、端口和协议之间的关系。解答:程序和套接字的关系:一个程序可以同时使用多个套接字,不同套

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功