2014大学Windows网络编程(机械工业出版社) 课后习题解答

更新时间:2024-07-08 07:23:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《Windows网络编程基础》习题解答

第一章 网络应用程序设计基础

习题

1. TCP/IP协议栈的五个层次是什么?在这些层次中,每层的主要任务是什么?

解答:TCP/IP参考模型分为五个层次:应用层、传输层、网络层、链路层和物理层。以下分别介绍各层的主要功能。

应用层是网络应用程序及其应用层协议存留的层次。该层包括了所有与网络相关的高层协议,如文件传输协议(File Transfer Protocol,FTP)、超文本传输协议(Hypertext Transfer Protocol,HTTP)、Telent(远程终端协议)、简单邮件传送协议(Simple Mail Transfer Protocol,SMTP)、因特网中继聊天(Internet Relay Chat,IRC)、网络新闻传输协议(Network News Transfer Protocol,NNTP)等。

传输层的功能是使源端主机和目标端主机上的对等实体可以进行会话。在传输层定义了两种服务质量不同的协议,即:传输控制协议(Transmission Control Protocol,TCP)和用户数据报协议(User Datagram Protocol,UDP)。

网络层是整个TCP/IP协议栈的核心。它的功能是通过路径选择把分组发往目标网络或主机,进行网络拥塞控制以及差错控制。

链路层负责物理层和网络层之间的通信,将网络层接收到的数据分割成特定的可被物理层传输的帧,并交付物理层进行实际的数据传送。

物理层的任务是将该帧中的一个一个比特从一个节点移动到下一个节点。该层中的协议仍然是链路相关的,并且进一步与链路(如双绞线、单模光纤)的实际传输媒体相关。对应于不同的传输媒体,跨越这些链路移动一个比特的方式不同。

1

2. 请分析路由器、链路层交换机和主机分别处理TCP/IP协议栈中的哪些层次?

解答:路由器处理TCP/IP协议栈的物理层、链路层和网络层; 链路层交换机处理TCP/IP协议栈的物理层和链路层;

主机处理TCP/IP协议栈的物理层、链路层、网络层、传输层和应用层。

3. 请阐述NAT技术的主要实现方式,并思考NAT技术对网络应用程序的使用带来哪些影

响?

解答:网络地址转换(Network Address Translation,NAT)是接入广域网(WAN)的一种技术,能够将私有(保留)地址转化为合法的IP地址,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。NAT的实现方式有三种,即静态转换、动态转换和端口多路复用。

NAT有效解决了IP地址短缺的问题,但是它也带来了一些新的问题。主要体现在: 处于NAT后面的主机不能充当服务器直接接收外部主机的连接请求,必须对NAT设备进行相应的配置才能完成外部地址与内部服务器地址的映射;

处于不同NAT之后的两台主机无法建立直接的UDP或TCP连接,必须使用中介服务器来帮助它们完成初始化的工作。

4. 某业务要求实现一个局域网上网行为监控的软件,能够对局域网内用户的上网行为(包括访问站点、使用聊天工具、发布言论等)进行截获和分析,请选择一个合适的网络程序设计方法,并说明该软件设计的主要流程。

解答:选择使用具有较强数据捕获能力的网络编程方法,如WinPcap编程或WinSock编程中的原始套接字。局域网上网行为监控软件的主要流程包括:

1)通过交换机的镜像端口或分光方式,搭建局域网流量截获环境,能够将局域网上下行的网络流量复制出来进行后续分析;

2)对镜像出的网络流量进行捕获,得到原始数据;

3)对原始数据进行过滤,识别并保留与上网行为监控相关的协议数据,如HTTP、SMTP、QQ通信协议等;

2

4)提取不同协议中监控者感兴趣的信息,如访问网址、聊天对象、发布言论等; 5)分析数据,进行重点用户监控和异常行为检测。

第二章网络程序通信模型

习题

1. 面向少量客户持续请求的服务器和面向大量客户短期请求的服务器在设计中有哪些区

别?

解答:面向少量客户持续请求的服务器在单位时间内处理的客户请求数量是有限的,但服务器与每个客户端之间的交互时间和频率是持续的。在这种情况下,服务器一般设计为并发服务器,为每个客户端分配专门的线程以处理其复杂的业务需求。

面向大量客户短期请求的服务器在同一时间可能面临成百上千个客户的大量请求,但每个客户端的请求与响应比较简单。在这种情况下,服务器需要根据客户的具体业务需求来设计。如果是类似于时间服务的单次查询-响应服务,可选择循环服务器串行响应每个客户端的请求,避免线程膨胀和维护的复杂性;如果是类似于Web访问较复杂的服务,可选择基于完成端口的异步I/O,与线程池联合管理多个客户端的请求。

2. 某业务需要实现一个文件服务器,请给出该文件服务器的设计要点。

解答:文件服务器主要处理文件的上传与下载业务,在设计时需要考虑以下要点: 1) 用户鉴别与权限管理。

文件服务器应具备一定的用户登录和权限管理能力,以辨别用户身份,保护文件访问的合法性。

2) 数据传输可靠性。

为了确保文件服务器的传输可靠性,在传输协议选择上,可以使用TCP协议自定义文件传输过程,完成数据传输;或者使用FTP协议,用控制流进行用户授权和传输管理,用

3

数据流具体传送文件。

3) 数据传输的效率。

考虑到用户上传和下载大数据的现实体验,文件服务器应提供高效的数据传输能力,比如使用多线程机制提高效率,使用P2P模型支持多点下载等。

4) 断点续传

文件服务器应提供断点续传能力,确保在用户下载过程中断并恢复后,能够保存之前的数据和状态并继续后续的下载任务。

第三章网络数据的内容与形态

习题

1. 假设应用程序使用有符号短整型给端口号赋值,当端口号大于32768时,端口号的具体值为多少?是否合理?

解答:有符号短整型能够表示的数据范围是-32768~32767,当端口号n大于32768时,短整型最左边一位为1,端口号的值为负数,即-(216-n),这样表示是不合理的,应该选用无符号短整型来描述端口号。

2. 大端字节顺序和小端字节顺序是CPU处理多字节数的不同方式。例如“汉”字的Unicode

编码是0x6C49。那么存储在内存中时数据是如何存储呢?请在自己的系统平台下观察字节在内存中的具体存储方式。

解答:在基于X86平台的PC机中,汉字的Unicode编码是6C49,存储在内存中是小端字节序的,具体存储顺序如下:

数值: 0x6c49015小端字节顺序0x490x6c内存地址增大方向

3. 试考虑一个15字节的消息结构:

4

structintegerMessage {

uint8_t onebyte; uint16_t twobytes; uint32_t fourbytes; uint64_t eightbytes; }

请问,该消息结构在内存中的实际布置如何?该结构的长度为多少?

解答:由于字节对齐的原因,该消息结构在内存中的实际布置如下:

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:”指明结果。则一个具体的消息可以表示为由消息标识声明的文本串,如“VOT TYPE:2;CANDIDATE:peter;RESULT:true”,假设投票消息传送协议基于TCP协议承载,在具体传输过程中,使用一种编码方式(如:Unicode编码)对该文本串进行描述,并作为TCP

5

本文来源:https://www.bwwdw.com/article/xth.html

Top