Windows网络编程基础

上传人:feng****ing 文档编号:216216007 上传时间:2023-06-05 格式:DOCX 页数:20 大小:63.54KB
收藏 版权申诉 举报 下载
Windows网络编程基础_第1页
第1页 / 共20页
Windows网络编程基础_第2页
第2页 / 共20页
Windows网络编程基础_第3页
第3页 / 共20页
资源描述:

《Windows网络编程基础》由会员分享,可在线阅读,更多相关《Windows网络编程基础(20页珍藏版)》请在装配图网上搜索。

1、Windows 网络编程基础习题解答第一章 网络应用程序设计基础习题1. TCP/IP 协议栈的五个层次是什么?在这些层次中,每层的主要任务是什么?解答:TCP/IP参考模型分为五个层次:应用层、传输层、网络层、链路层和物理层。 以下分别介绍各层的主要功能。应用层是网络应用程序及其应用层协议存留的层次。该层包括了所有与网络相关的高层 协议,如文件传输协议(File Transfer Protocol,FTP)超文本传输协议(Hypertext Transfer Protocol,HTTP) Telen(t 远程终端协议) 简单邮件传送协议( Simple Mail Transfer Proto

2、col, SMTP )、因特网中继聊天( Internet Relay Chat , IRC )、网络新闻传输协议( Network News Transfer Protocol,NNTP )等。传输层的功能是使源端主机和目标端主机上的对等实体可以进行会话。在传输层定义了 两种服务质量不同的协议,即:传输控制协议(Transmission Control Protocol,TCP )和用 户数据报协议( User Datagram Protocol, UDP)。网络层是整个 TCP/IP 协议栈的核心。它的功能是通过路径选择把分组发往目标网络或 主机,进行网络拥塞控制以及差错控制。链路层负责物

3、理层和网络层之间的通信,将网络层接收到的数据分割成特定的可被物理 层传输的帧,并交付物理层进行实际的数据传送。物理层的任务是将该帧中的一个一个比特从一个节点移动到下一个节点。该层中的协议 仍然是链路相关的,并且进一步与链路(如双绞线、单模光纤)的实际传输媒体相关。对应 于不同的传输媒体,跨越这些链路移动一个比特的方式不同。2. 请分析路由器、链路层交换机和主机分别处理TCP/IP协议栈中的哪些层次?解答:路由器处理 TCP/IP 协议栈的物理层、链路层和网络层;链路层交换机处理TCP/IP协议栈的物理层和链路层;主机处理 TCP/IP 协议栈的物理层、链路层、网络层、传输层和应用层。3. 请阐

4、述NAT技术的主要实现方式,并思考NAT技术对网络应用程序的使用带来哪些影 响?解答:网络地址转换(Network Address Translation , NAT )是接入广域网(WAN )的一 种技术,能够将私有(保留)地址转化为合法的IP地址,它被广泛应用于各种类型Internet 接入方式和各种类型的网络中。NAT的实现方式有三种,即静态转换、动态转换和端口多 路复用。NAT有效解决了 IP地址短缺的问题,但是它也带来了一些新的问题。主要体现在:处于NAT后面的主机不能充当服务器直接接收外部主机的连接请求必须对NAT设备 进行相应的配置才能完成外部地址与内部服务器地址的映射;处于不同

5、NAT之后的两台主机无法建立直接的UDP或TCP连接,必须使用中介服务 器来帮助它们完成初始化的工作。4. 某业务要求实现一个局域网上网行为监控的软件,能够对局域网内用户的上网行为(包 括访问站点、使用聊天工具、发布言论等)进行截获和分析,请选择一个合适的网络程 序设计方法,并说明该软件设计的主要流程。解答:选择使用具有较强数据捕获能力的网络编程方法,如WinPcap编程或WinSock 编程中的原始套接字。局域网上网行为监控软件的主要流程包括:1)通过交换机的镜像端口或分光方式,搭建局域网流量截获环境,能够将局域网上下 行的网络流量复制出来进行后续分析;2)对镜像出的网络流量进行捕获,得到原

6、始数据;3 )对原始数据进行过滤,识别并保留与上网行为监控相关的协议数据如HTTP、SMTP、 QQ 通信协议等;4)提取不同协议中监控者感兴趣的信息,如访问网址、聊天对象、发布言论等;5)分析数据,进行重点用户监控和异常行为检测。第二章 网络程序通信模型习题1. 面向少量客户持续请求的服务器和面向大量客户短期请求的服务器在设计中有哪些区别?解答:面向少量客户持续请求的服务器在单位时间内处理的客户请求数量是有限的,但 服务器与每个客户端之间的交互时间和频率是持续的。在这种情况下,服务器一般设计为并 发服务器,为每个客户端分配专门的线程以处理其复杂的业务需求。面向大量客户短期请求的服务器在同一时

7、间可能面临成百上千个客户的大量请求,但每 个客户端的请求与响应比较简单。在这种情况下,服务器需要根据客户的具体业务需求来设 计。如果是类似于时间服务的单次查询-响应服务,可选择循环服务器串行响应每个客户端 的请求,避免线程膨胀和维护的复杂性;如果是类似于Web访问较复杂的服务,可选择基 于完成端口的异步I/O ,与线程池联合管理多个客户端的请求。2. 某业务需要实现一个文件服务器,请给出该文件服务器的设计要点。解答:文件服务器主要处理文件的上传与下载业务,在设计时需要考虑以下要点:1)用户鉴别与权限管理。文件服务器应具备一定的用户登录和权限管理能力,以辨别用户身份,保护文件访问的 合法性。2)

8、数据传输可靠性。为了确保文件服务器的传输可靠性,在传输协议选择上,可以使用TCP协议自定义文 件传输过程,完成数据传输;或者使用 FTP 协议,用控制流进行用户授权和传输管理,用数据流具体传送文件。3) 数据传输的效率。考虑到用户上传和下载大数据的现实体验,文件服务器应提供高效的数据传输能力,比 如使用多线程机制提高效率,使用P2P模型支持多点下载等。4) 断点续传 文件服务器应提供断点续传能力,确保在用户下载过程中断并恢复后,能够保存之前的 数据和状态并继续后续的下载任务。实验1. 结合Wireshark网络流量分析工具对网页邮件登录过程进行捕获和分析,说明其基本的 工作流程。解答:分析流程

9、具体见Windows网络编程实验。2. 结合Wireshark网络流量分析工具对迅雷登录和文件下载过程进行捕获和分析,说明其 基本的工作流程。解答:分析流程具体见Windows网络编程实验。第三章 网络数据的内容与形态习题1. 假设应用程序使用有符号短整型给端口号赋值,当端口号大于 32768时,端口号的具体 值为多少?是否合理?解答:有符号短整型能够表示的数据范围是-3276832767,当端口号n大于32768时, 短整型最左边一位为1,端口号的值为负数,即-(216n ),这样表示是不合理的,应该选用 无符号短整型来描述端口号。2. 大端字节顺序和小端字节顺序是 CPU 处理多字节数的不

10、同方式。例如“汉”字的 Unicode 编码是0X6C49。那么存储在内存中时数据是如何存储呢?请在自己的系统平台下观察 字节在内存中的具体存储方式。解答:在基于X86平台的PC机中,汉字的Unicode编码是6C49,存储在内存中是小 端字节序的,具体存储顺序如下:数值: 0x6c490 150x490x6c内存地址增大方向3. 试考虑一个 15字节的消息结构: struct integerMessage uint8_t onebyte; uint16_t twobytes; uint32_t fourbytes; uint64_t eightbytes; 请问,该消息结构在内存中的实际布置

11、如何?该结构的长度为多少?解答:由于字节对齐的原因,该消息结构在内存中的实际布置如下:1字节填充2字节4字节8字节inte gerMessag e 结构体该消息结构的长度为16.4. 假设一个端口扫描应用程序被设计为递增IP地址和TCP端口,并手工构造和发送TCP 扫描包给目标方,那么在每次发送数据前,TCP扫描包的哪些字段需要修改,如何修改?解答: TCP 端口扫描程序面向给定的目的主机,对指定的端口范围进行扫描,扫描过 程一般是向目标主机的端口号发送SYN请求,并接收对方的应答,如果对方反馈了 SYN应 答包则说明该端口开放,否则认为端口不开放。手工构造TCP扫描包涉及到IP首部和TCP首

12、部的构造,那么在探测过程中,每次TCP 扫描包需要修改的字段主要有:IP首部中目的IP地址、IP首部的校验和清零后重新计算、 TCP首部的目标端口号、TCP首部的校验和清零后重新计算。5. 请设计一个远程投票系统的消息传送协议,具体内容包括:1)投票协议标识2)投票消息类型3)投票候选人标识4)投票结果使用文本串和二进制两种方式设计投票消息以满足以上需求。解答:基于文本串的消息描述方式需要定义一些固定含义的文本串来标识消息内容。比 如:“VOT”指明投票协议,“TYPE :指明消息类型“CANDIDATE:指明候选人,“RESULT :指 明结果。则一个具体的消息可以表示为由消息标识声明的文本

13、串,如“ VOT TYPE:2; CANDIDATE : peter ; RESULT : true”,假设投票消息传送协议基于TCP协议承载,在具体 传输过程中,使用一种编码方式(如 : Unicode 编码)对该文本串进行描述,并作为 TCP 协议的数据部分传输。基于二进制的消息描述方式使用固定大小的数据区域存储消息内容,比如设计投票消息 传送协议格式如下:0 15协议标识消息类型候选人标识投票结果定义:协议标识0x01代表投票协议消息类型0x02代表投票消息候选人标识0x05代表候选人“peter的唯一标识投票结果0x01代表投票,0x02代表反对那么一次对候选人peter的赞成投票的投

14、票消息为:0x01020501.假设投票消息传送协议基于 TCP 协议承载,在具体传输过程中,二进制描述的投票消息可以直接作为 TCP 协议的数据部分传输。第四章 协议软件接口习题1. 阐述使用Windows Sockets编程的环境配置过程。解答:Windows Sockets实现一般由两部分组成:开发组件和运行组件。开发组件是供程序员开发 Windows Sockets 应用程序使用的,它包括介绍 WindowsSockets实现的文档、Windows Sockets应用程序接口( API )引入库和一些头文件。头文件 winsock.h、winsock2.h 分别对应于 WinSock

15、1.1 和 WinSock2.2,是 Windows Sockets 最重要 的头文件,它们包括了 Windows Sockets实现所定义的宏、常数值、数据结构和函数调用接 口原型。运行组件是Windows Sockets应用程序接口的动态链接库(DLL),应用程序在执行时 通过装入它实现网络通信功能。两个版本的动态链接库以及与其对应的接口引入库和头文件 如下所示。表 4-1 Windows Sockets 版本中相应的动态链接库版本头文件静态链接库文件动态链接库文件1.1winsock.hwinsock.libwinsock.dll2.2winsock2.hws2 32.1ibws2 32

16、.dll对动态链接的使用,需要在程序编译前将对应的头文件引入源文件,以便编译环境可以 找到相应函数和变量的声明,并在项目中引入静态链接库文件,以便在程序编译通过后,连 接时可以找到套接字函数的执行地址。以Windows Sockets 2.2版本为例,对头文件的引入使用以下代码段:#include “winsock2.h”对静态链接库的引入使用以下代码段:#pragma comment(lib,ws2_32.lib)或者在开发环境中的项目菜单中配置增加对“ws2_32.1ib”文件的引入,如下图所示。2考虑一种提供消息传递的操作系统,阐述如何扩展应用程序接口使其适用于网络通信?解答:提供消息传

17、递的操作系统典型的例子是Windows操作系统,该系统最大的特点 是图形化的操作界面,其图形化界面是建立在消息处理机制这个基础之上的。程序不断等待, 等待任何可能的输入,然后做判断,根据不同的消息调用消息处理函数进行适当的处理。这 种输入是操作系统捕捉到后以消息形式(一种数据结构)进入程序之中的。有了消息机制的推动,套接字接口也可以借助消息机制来通知应用程序网络事件满足, 具体思路是:首先为应用程序创建消息传递所需的消息接收窗口和消息队列;然后定义与网 络事件相关联的消息;之后通过系统调用注册网络事件与消息的对应关系;最后,当网络事 件发生时,系统触发消息通知应用程序处理。通过以上基本步骤实现

18、了基于消息机制的异步 网络操作。3阐述程序、套接字、端口和协议之间的关系。解答:程序和套接字的关系:一个程序可以同时使用多个套接字,不同套接字完成不同 的传输任务。多个应用程序可以同时使用同一个套接字,不过这种情况并不常见。套接字和端口的关系:每个套接字都有一个关联的本地TCP或UDP端口,它用于把传 入的分组指引到应该接收它们的应用程序。一个端口上可能关联多个套接字,流式套接字的 服务器上可能同时有监听套接字和连接套接字,它们都与一个TCP的端口号相关联;一个套接字一般只会关联一个唯一的本地端口号。端口和协议的关系:TCP和UDP的端口号是独立使用的。实验1调用Windows Sockets

19、的API函数获得本地主机和远端域名的IP地址,如果一个主机名 称对应了多个IP地址,请依次打印。解答:实现过程具体见Windows网络编程实验。第五章 流式套接字编程习题1. 思考套接字接口层与TCP实现之间的关系,结合数据发送和接收分析数据的传递过程 以及两个层次的具体工作。解答:对应于 TCP 数据的发送和接收,套接字实现设计了两个独立的缓冲区,分别用 于缓存应用程序请求发送的数据和等待接收的数据(一般以先进先出队列的形式保存)。从应用程序实现、套接口实现和协议实现三个层次来观察数据发送的过程,数据发送在实施过程中主要涉及到两个缓冲区:一个是应用程序发送缓冲区,即调用send()函数时由用

20、 户申请并填充的缓冲区,这个缓冲区保存了用户即将使用协议栈发送的TCP数据;另一个 是TCP套接口的发送缓冲区,在这个缓冲区中保存了 TCP协议尚未发送的数据和已发送但 未得到确认的数据。数据发送涉及到两个层次的写操作:从应用程序发送缓冲区拷贝数据到 TCP套接口的发送缓冲区,和从TCP套接口的发送缓存将数据发送到网络中。数据接收在实施过程中主要涉及到另外两个缓冲区,一个是TCP套接口的接收缓冲区, 在这个缓冲区中保存了 TCP 协议从网络中接收到的与该套接口相关的数据;另一个是应用 程序的接收缓冲区,即调用recv()函数时由用户分配的缓冲区,这个缓冲区用于保存从TCP 套接口的接收缓存收到

21、并提交给应用程序的网络数据。数据接收也涉及到两个层次的写操作: 从网络上接收数据保存到TCP套接口的接收缓冲区,和从TCP套接口的接收缓冲区拷贝数 据到应用程序的接收缓冲区中。2. 在基于流式套接字的网络应用程序设计中,假设客户端以8 字节-12字节-8 字节-12字 节的顺序交替发送数据给服务器,请思考,服务器的接收操作每次能够接收到多少字节 的数据?为什么?解答:服务器接收操作每次能够接收到的数据长度是不确定的,这是因为TCP传送数 据的形态是没有间隔的字节流,数据接收仅与接收调用的时间和当前主机内核缓存中尚未提 交应用程序的数据有关,与发送端发送多少次和TCP如何传送没有直接的关系,我们

22、不能 准确地预测一个特定的接收操作到底返回多少字节。3. 思考使用 TCP 进行数据传输的应用程序是否一定不会出现数据丢失?应用程序应在哪 些具体操作上考虑可靠性问题?解答:使用TCP进行数据传输的应用程序也可能会出现数据丢失,这是因为TCP是一 个端到端的协议,这意味着通信的双方只关心自己提供了一个可靠的传输机制,“端”是对等 方的TCP协议实现,而不是对等方的应用程序。应用程序的可靠性需要应用程序自己提供。导致TCP传输出现失败的现象有:在正常的TCP连接上,TCP确认的数据实际上有可 能不会到达它的目的应用程序,服务器的TCP实现不确认接收到了数据,如:发生永久的 或暂时的网络紊乱,对等

23、方的应用程序崩溃,对等方的应用程序运行的主机崩溃等。网络程序设计人员应注意到这些失败模式对TCP应用程序的影响,在数据发送、接收、 连接关闭等操作上,注意函数调用时机,关注函数调用结果,尽可能全面地处理TCP传输 中可能遇到的失败模式。实验1. 使用流式套接字编程设计一个并发的回射服务器,该服务器具有并发处理客户请求的功 能,当多个客户端同时请求服务器回射时,服务器能够同时接收到多个客户端的请求并 相应做出回射响应。解答:实现过程具体见Windows网络编程实验。2.设计一个网络测试程序,客户端能够模拟“发送-发送-接收”的操作序列,采用send()和WSASendO两种发送方式进行请求发送,

24、测试在这两种发送操作下服务器的响应时 间有何差别,并说明原因。解答:实现过程具体见Windows网络编程实验。第六章 数据报套接字编程习题3. 思考套接字接口层与UDP实现之间的关系,结合数据发送和接收分析数据的传递过程 以及两个层次的具体工作。解答:数据发送过程和接收过程类似,以数据接收为例,从应用程序实现、套接口实现 和协议实现三个层次来观察接收的过程,数据接收在实施过程中主要涉及到两个缓冲区,一 个是UDP套接口的接收缓冲区,在这个缓冲区中保存了 UDP协议从网络中接收到的与该套 接口相关的数据;另一个是应用程序的接收缓冲区,即调用recvfrom()函数时由用户分配的 缓冲区recvb

25、uf,这个缓冲区用于保存从UDP套接口的接收缓存收到并提交给应用程序的网 络数据。数据接收涉及到两个层次的写操作:从网络上接收数据保存到UDP套接口的接收 缓冲区,和从UDP套接口的接收缓冲区拷贝数据到应用程序的接收缓冲区中如下图所示。应用程序接收缓存应用程序实现recvfrom()UDP套接口接收缓存1接收UDP协议实现网络4. 在基于数据报套接字的网络应用程序设计中,假设客户端向服务器发送了两个数据报,一个报文长度为 800字节,另一个报文长度为1200字节,设置服务器端的接收缓冲区 为1000字节,进行三次接收操作,请思考,服务器在三次接收操作时各发生何种现象, 实际接收到的字节长度为多

26、少?解答:第一次接收操作接收到完整的800字节的报文,recvfrom()函数返回800 ;第二次接收操作接收1000字节的报文,recvfrom()函数返回1000,第二个报文后续的200 字节内容被截断丢弃;第三次接收操作依赖于套接字的工作模式,如果是阻塞模式,则接收函数阻塞,如果设置了接收超时,则在超时时间到时返回接收超时错误;如果是非阻塞模式,则接收函数立刻 返回,错误类型是 WSAEWOULDBLOCK.5. 总结使用UDP进行数据传输的应用程序应在哪些具体操作上考虑可靠性问题?解答:由于UDP协议是一个不可靠的协议,使用UDP进行数据传输的应用程序会因为网络环境、主机环境的差异带来

27、数据传递过程中发生丢失、乱序、重复等问题,那么在程序 运行过程中需要考虑:发送操作:发送出去的数据可能会丢失,需要考虑超时重传问题;发送目的地可能并不存在,需要判断目的应用程序的状态。接收操作:接收到的数据可能重复,需要判断重复数据;接收到的数据可能是噪音,需要排除噪音;接收到的数据可能乱序,需要考虑重组;可能无法接收到预期的数据,需要考 虑反馈确认和流量控制问题。实验1. 设计一个网络测试程序,客户端能够高速发送数据,服务器端接收数据并统计接收到的 数据报文个数,测试当前系统和网络环境下,服务器的丢包率为多少?解答:实现过程具体见Windows网络编程实验。2. 在上题的测试程序基础上,修改

28、系统接收缓存,测试系统接收缓存的大小与程序丢包率 之间的关系,并解释原因。解答:实现过程具体见Windows网络编程实验。第七章 原始套接字编程习题1. 原始套接字在处理数据发送和接收时与流式套接字和数据报套接字有哪些不同?解答:在使用原始套接字进行数据传输的编程过程中,增加了诸多操作,如套接字选项 的设置、传输协议首部的构造、网卡工作模式的设定以及接收数据的过滤与判断等。使用原始套接字发送数据需要填写的数据内容更加复杂,根据应用的不同,原始套接字 可以有两种数据填充的选择:仅构造IP数据或构造IP首部和IP数据。此时程序设计人员 需要根据实际需要对套接字选项IP_HDRINCL进行配置。使用

29、原始套接字接收数据时,网络接口提交给原始套接字的数据并不一定是网卡接收到 的所有数据,如果希望得到特定类型的数据包,应用程序需要对套接字的接收进行控制,设 定接收选项SIO_RCVALL,或者通过bind()、connect。函数明确端点地址。由于原始套接字 的数据传输也是无连接的,网络接口提交给原始套接字的数据很可能存在噪音,因此在接收 到数据后,需要对数据进行一定条件的过滤。2.某程序员在Windows 7环境下,使用原始套接字构造TCP的SYN请求实现半开端口扫描,但结果发现网络中并没有看到SYN请求的发送,请分析原因并给出解决思路。解答:在 Windows 环境下,原始套接字的支持一直

30、是个备受争议的问题,不同版本的Windows 环境对原始套接字给出了一些限制。在 Windows7、Windows Vista、Windows XP SP2 和Windows XP SP3中,通过原始套接字发送数据的能力受到了诸多限制,其中对TCP的限 制是TCP的数据不能通过原始套接字发送。因此,如果仍要在Windows7环境下开发SYN半开端口扫描,那么需要选择其它的编 程方法,如 WinPcap 编程。实验1. 使用原始套接字编程,实现UDP回射客户端的主要功能。该客户端具备IP原始数据包 的构造、发送和接收功能,能够从控制台获取用户输入,将用户输入的字符串作为 UDP 的数据填充回射请

31、求,发送给回射服务器,接收服务器发回的响应,并将响应打印到命 令行中。解答:实现过程具体见Windows网络编程实验。2. 设计一个路径探测器,能够实现类似于traceroute功能,获取从探测源到达目的主机的 路由器路径和延迟。解答:实现过程具体见Windows网络编程实验。第八章网络通信中的I/O操作习题1. 简述阻塞与非阻塞、同步与异步的区别。 解答:同步和异步概念与消息的通知机制有关。对于消息处理者而言,在同步的情况下,由处理消息者自己去等待消息是否被触发;在异步的情况下,由触发机制来通知处理消息者, 然后进行消息的处理。同步和异步仅仅是关于所关注的消息如何通知的机制,而不是处理消 息

32、的机制。阻塞和非阻塞与消息的处理机制有关。阻塞模式是指在指定套接字上调用函数执行操作 时,在没有完成操作之前,函数不会立即返回。非阻塞模式是指在指定套接字上调用函数执 行操作时,无论操作是否完成,函数都会立即返回。同步与阻塞,异步与非阻塞并不是两对相同的概念,要注意消息的通知和消息的处理是 不同的。2. 简述WSAAsyncSelect模型和WSAEventSelect模型的主要区别和各自在使用中的优缺 点。解答:WSAAsyncSelect 模型和 WSAEventSelect 模型都是 Windows Sockets 引入的异步最主要的区别是网络事件发生时系统通知应用程序的方式不同。WSA

33、AsyncSelect模型依赖 消息通知,而WSAEventSelect模型允许在多个套接字上接收以事件为基础的网络事件的通 知。WSAAsyncSelect 模型基于 Windows 消息机制实现,其优点是:在系统开销不大的情况 下可以较简单地同时处理多个客户端的网络I/O。其缺点是:消息的运转需要有消息队列, 为了支持消息机制,就必须创建一个窗口来接收消息,另外,在一个窗口中处理大量的消息 也可能成为性能的瓶颈。WSAEventSelect 模型不依赖于消息,所以可以在没有窗口的环境下比较简单地实现对 网络通信的异步操作。该模型的缺点是等待的事件对象的总数是有限制的(每次只能等待 64 个

34、事件),在有些应用中可能会因此受到限制。3. 假设某Web服务器使用TCP协议通信,在同一时间会有上万个客户端同时在线访问,试选择一种网络 I/O 通信的模型,使其能够充分发挥服务器所在系统的性能,并阐明 原因。解答:选择使用完成端口模型处理网络I/O ,该模型内部提供了线程池的管理,可以避 免反复创建线程的开销,同时可以根据CPU的个数灵活地决定线程个数,减少线程调度的 次数,从而提高了程序的并行处理能力。由于其稳定、高效的并发通信能力,该模型适合于 具有大量并发用户请求的场合。4. 假设某时间服务器使用UDP协议通信,同一时间仅有少量客户端请求,每次请求的主 要过程是建立连接后获取时间,之

35、后断开连接,试选择一种适合的网络I/O通信模型, 并阐明原因。解答:选择使用WSAAsyncSelect模型或WSAEventSelect模型处理网络I/O,这两个模 型使用异步方式进行I/O事件通知,不会使应用程序阻塞于网络事件的等待上灵活性较好, 同时程序的实现比较简单,可以满足业务复杂性不高且对性能要求不高的简单时间服务器的 设计需求。实验1. 请使用I/O复用模型设计一个支持多协议的回射服务器。要求综合流式套接字和数据报 套接字编程,基于I/O复用模型管理多个套接字上的网络事件,实现支持TCP和UDP 协议的回射服务器,服务器能够接收使用不同协议客户端的回射请求,将接收到的信息 发送回

36、客户端。解答:实现过程具体见Windows网络编程实验。2. 请使用WSAAsyncSelect模型设计一个简单的局域网聊天工具。要求使用数据报套接字, 基于WSAAsyncSelect模型异步管理套接字上的网络事件,使用UDP协议实现局域网 内两台主机的文字聊天功能。解答:实现过程具体见Windows网络编程实验。3. 请设计一个并发的HTTP代理服务器。要求使用流式套接字编程,基于完成端口模型管 理多个套接字上的网络事件,实现并发的HTTP代理服务器,能够同时接收多个用户通 过浏览器提交的Web网页访问请求,并将其合理解析后发送给服务器,获取服务器返 回的页面应答,递交回请求的客户端。解答

37、:实现过程具体见Windows网络编程实验。第九章 WinPcap 编程习题1. 请比较使用原始套接字和 WinPcap 两种方式实现网络嗅探器的差别,从工作层次、数 据内容、协议类型和调用方法等方面进行区分。解答:尽管原始套接字和WinPcap都能够对较低层的网络通信流量进行发送和接收,但两种编程方法之间是有差别的,主要表现在以下几点:1)工作层次:在Windows环境下,WinPcap工作在网卡驱动之上,能够操控链路层的原始数据帧;原始套接字工作在协议栈实现之上,能够操控网络层的原始数据包。2)数据内容:包括帧首部在内的所有内容都是可以被WinPcap捕获和构造的;使用原始套接字接收和构造

38、的数据不包括帧首部。3 )协议类型:WinPcap可以发送和接收包括IP、ARP、RARP等协议上传输的数据;原始套接字不能配置帧类型,因此只能发送和接收IP协议及IP协议承载的其它协 议。4)调用方法:使用WinPcap需要安装WinPcap驱动;使用原始套接字不需要附加的驱动。实验1. 请使用WinPcap编程实现ARP欺骗,该程序能够构造ARP请求包或响应包,携带错误 的IP地址和MAC地址对应关系,改变局域网内主机ARP缓存中IP地址与MAC地址 的对应关系。解答:实现过程具体见Windows网络编程实验。2. 请使用 WinPcap 编程实现一个用户级网桥,该网桥能够在多网卡主机上运行,从一个 网卡中接收数据并将其转发到另一个网卡上,从而在数据链路层将网络中的多个网段连 接起来。解答:实现过程具体见Windows网络编程实验。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!