windows网络编程答案.docx
- 文档编号:12176869
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:17
- 大小:27.36KB
windows网络编程答案.docx
《windows网络编程答案.docx》由会员分享,可在线阅读,更多相关《windows网络编程答案.docx(17页珍藏版)》请在冰豆网上搜索。
windows网络编程答案
windows网络编程答案
【篇一:
2014大学windows网络程序设计期末复习试卷模拟习题1】
习题1
1.以下哪个是tcp/ip模型?
(b)
a.应用层,表示层,网络层,物理层;b.应用层,传输层,网络层,链路层
c.应用层,传输层,链路层,物理层d.应用层,传输层,网络层,物理层
2.p2p的设计架构不包含以下哪一种?
(c)
a.集中式架构b.完全分布式架构
c.点对点架构d.混合型架构
3.http请求方法不包括如下哪一种(b)
a.postb.update
c.getd.head
4.ftp的作用不包括(c)
a.文件共享;b.通过应用程序直接或间接使用远程主机;
c.提供一致性的协议,避免用户在不同主机上有相同的操作方式;
d.提供可靠及有效率的数据传输;
5.smtp与pop3的端口分别是:
(b)
a.25,75b.25,110
c.21,75d.21,110
6.ip地址是192.168.100.2,子网掩码是255.255.255.0,则其网段的广播地址是(c)
a.192.168.100.1b.192.168.100.0
c.192.168.100.255d.255.255.255.255
7.tcp的特点不包括如下哪一点(c)
a.面向连接b.全双工数据传送
c.传输速度快d.面向字节流
8.关于线程哪一点是对的。
(d)
a.任何一个c#程序都有一个默认的线程,该线程是后台线程;
b.每个进程都有一个线程池。
线程池默认大小有35个线程;
c.线程池中的线程都是前台线程;
9.在internet中用一个三元组可以在全局中唯一标识一个应用层进程,这不包括下列哪一种(a)
a.网络层协议b.ip地址
c.端口号d.传输层协议
10.tcp/ip协议簇中,哪一种是网络层协议(b)
a.tcpb.arp
c.smtpd.tftp
1.端口的分配地址是1-65535,全局分配是1-1023,本地分配是1024-65535(f)
2.线程池中既有后台线程也有前台线程,某进程的所有前台线程都终止了,后台进程也自
然终止。
(f)
3.在smtp中,电子邮件由信封、首部和正文3部分组成。
(t)
4.数字签名是私钥加密,公钥解密。
(t)
5.esmtp与smtp的区别是发送邮件时要求用户身份验证。
(t)
6.http的流水线方式是指客户在收到前一个响应后才能发出下一个请求。
(f)
7.http(hypertexttransferprotocol),超文本传输协议,目前的版本是1.0。
(f)
8.nat功能是只能用硬件来实现(f)
9.ip地址有a,b,c,d,e五类(f)
10.udp不需要连接,速度比tcp快;(t)
11.udp传输的数据无消息边界;(f)
12.socket类比位于底层tcpclient类提供了更高层次的抽象,它们封装tcp套接字的创建,
不需要处理连接的细节。
(f)
13.监听套接字与新创建的套接字所使用的端口不同。
(f)
14.本机回送地址是127.0.0.1(t)
15.socket套接字的accept()方法若检测到监听套接字的缓冲区是空的话,立刻返回(f)
1.什么是端口,网络通信中为什么要引入端口?
(6分)
答:
端口是tcp/ip协议簇中,应用层进程与传输层协议实体间的通信接口。
端口是操作系统可分配的一种资源;应用程序(进程)通过系统调用与某端口绑定(binding)后,传输层传给该端口的数据都被相应进程接收,相应进程发给传输层的数据都通过该端口输出。
1.在网络通信过程中,需要唯一识别通信两端的端点,即运行于某机器中的应用程序。
如
果没有引入端口,则只能通过进程号进行识别。
进程号是系统动态分配的,不同的系统会使用不同的进程标识符,应用程序在运行之前并不知道自己的进程号,如果需要运行后再广播进程号则很难保证通信的顺利进行。
而引入端口后,就可以利用端口号识别应用程序,同时通过固定端口号来识别和使用公共服务,如http和ftp等。
2.什么是套接字?
(5分)
答:
套接字是对网络中不同主机上应用进程之间进行双向通信的端点的抽象,一个套接字就是网络上进程通信的一端,提供了应用进程利用网络协议栈交换数据的机制。
3.套接字有哪些种类,分别有什么特点?
(6分)
答:
(1)流式套接字。
提供面向连接、可靠的数据传输服务,数据无差错、无重复的发送,且按发送顺序接收;内设流量限制,避免数据超流限;数据被看做是字节流,无长度限制;
(2)数据报式套接字。
提供无连接服务;数据包以独立包形式发送,不提供无差错保证,数据可能丢失或重复,并且接收顺序混乱。
(3)原始套接字。
原始套接字允许对较低层次的协议,如ip、icmp直接访问,用于检验新的协议的实现
4.消息无边界问题有哪几种解决方法,各有什么优缺点?
(6分)
答:
1)发送固定消息的长度。
程序设计起来容易,但长度的制定没有统一的标准。
2)将消息长度与消息一起发送。
长度可自由控制,但长度信息占有一定的比例,影响效率。
3)使用特殊标记分信息。
设计起来简单,但发送的信息中不能含有标记符。
5.什么是网络穿越,如何实现udp网络穿越?
(6分)
答:
网络穿越是指在网络通信过程中,通信的一端如果是内网地址时,需要利用nat进行地址转换。
由于nat不允许外部主机主动访问内部主机,因此通信的一端在发送消息前,必须解决如何不被另一端nat设备拦截的问题,即如何穿越对方nat的阻止。
基于server的udp网络穿越
(1)客户端a与客户端b分别登录服务器s;
(2)a发送命令给s,请求s向b发出打洞请求。
(3)s发送打洞命令给b;
(4)b收到消息后向a发送消息;
(5)a向b发送消息,实现网络穿越;
6.ftp协议的两种工作方式是什么,请简述。
(6分)
答:
(1)port方式,即客户主动式。
客户端向服务器的ftp端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。
当需要传送数据时,客户端使用并监听某临时端口,并在命令链路上用port方式告诉服务器采用主动传输方式。
于是服务器从20端口向客户端的临时端口发送连接请求,建立一条数据链路来传送数据。
(2)pasv方式,即客户被动式。
客户端向服务器的ftp端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。
当需要传送数据时,客户端告诉服务器采用被动传输方式。
于是服务器使用并监听某临时端口,并在命令链路上用pasv命令告诉客户端对应的端口号。
最后客户端向服务器发送连接请求,建立一条数据链路来传送数据。
7.http协议的内容有哪些?
(5分)
答:
1.http请求信息。
2.http方法。
3.http响应信息。
4.url
5.http流程
8.http无状态与持久连接分别是什么意思,请简述。
(5分)
答:
无状态的意思是,每一个请求与响应是互相独立的。
而持久连接是,服务器会在一定时间内保留该连接的相关信息。
9.在ie地址栏中输入域名后的http流程。
(5分)
1.url自动解析;
2.获取ip,建立tcp连接;
3.客户端浏览器向服务器发出http请求;
4.web服务器应答,并向浏览器发送数据;
5.web服务器关闭tcp连接。
10.pop3流程有哪几个阶段?
(5分)
答:
1)授权阶段,认证;
2)操作阶段,邮件接收;
3)更新阶段,更新邮件信箱;
【篇二:
2014大学windows网络程序设计期末复习试卷模拟习题5】
习题51tcp和udp连接的区别,分别适用于哪些应用场合?
2tcp连接建立的过程(三次握手)
tcp双方都可以发送数据给对方,所以它是全双工的协议
tcp建立连接的过程通常被称为三次握手
1)syn_sent(synsent)
发起方发送一个设置了syn标志的tcp数据包和初始化序列号(initialsequencenumber,isn)以及端口号给接收方,这常被叫做syn数据包或syn报文
连接的状态被称做syn_sent
2)syn_rcvd(synrecieved)
接收方收到请求,给发起方发送一个设置了syn与ack标志位的tcp数据包做为应答,另外设置一个比客户机发送来的isn大1个单位的isn值,这常被称为syn_ack数据包或syn_ack报文
这时连接的状态称做syn_rcvd
3)established
发起方然后发送一个带有ack应答和增1后的isn标志来确认syn_ack
至此,完成了三次握手,此时的连接状态为连结成功:
established
3sockaddr与sockaddr_in的区别,为什么要用两个数据结构?
如何赋值?
sockaddr包括sockaddr_in和sockaddr_un等,前者用于inet(网络)后者用于unix文件。
sockaddr是winsockapi中参数的基本形式,sockaddr_in是其ip地址结构。
sockaddr是通用的套接字地址,而sockaddr_in则是internet环境下套接字的地址形式,二者长度一样,都是16个字节。
二者是并列结构,指向sockaddr_in结构的指针也可以指向sockaddr。
一般情况下,需要把sockaddr_in结构强制转换成sockaddr结构再传入系统调用函数中。
4建立tcp连接客户端和服务端的过程。
为什么服务端要调用bind函数而客户端不用?
为什么服务端需要指定端口而客户端不用?
建立
基于udp的收发程序的过程
服务端则需用bind函数连接和接收数据报
因为服务程序必须调用bind函数来给其绑定一个ip地址和一个特定的端口号,而客户端不用。
服务端需要通过指定端口来接收客户的请求连接。
5简述ip协议的特点
tcp/ip协议的特点
①tcp/ip协议并不依赖于特定的网络传输硬件,所以tcpiip协议能够集成各种各样的网络。
用户能够使用以太网(ethernet)、令牌环网(tokenringnetwork)、拨号线路(dial-upline)、x.25网以及所有的网络传输硬件。
②tcp/ip协议不依赖于任何特定的计算机硬件或操作系统,提供开放的协议标准,即使不考虑internet,tcp/ip协议也获得了广泛的支持。
所以tcp/ip协议成为一种联合各中硬件和软件的实用系统。
③tcp/ip工作站和网络使用统一的全球范围寻址系统,在世界范围内给每个tcp/ip网络指定唯一的地址。
这样就使得无论用户的物理地址在哪儿,任何其他用户都能访问该用户。
6广播组播通信与点对点通信的区别
广播主机之间“一对所有”的通讯模式,网络对其中每一台主机发出的信号都进行无条件复制并转发,所有主机都可以接收到所有信息(不管你是否需要)。
组播主机之间“一对一组”的通讯模式,也就是加入了同一个组的主机可以接受到此组内的所有数据,网络中的交换机和路由器只向有需求者复制并转发其所需数据。
主机可以向路由器请求加入或退出某个组,网络中的路由器和交换机有选择的复制并传输数据,即只将组内数据传输给那些加入组的主机。
点对点主机之间“一对一”的通讯模式,网络中的交换机和路由器对数据只进行转发不进行复制。
至于区别嘛,从mac地址上来分,mac地址是6个字节的,如果全是1就是广播,如果第一个字节是01就是组播啦,其它的就是单播。
7阻塞与非阻塞通信的区别
以套接字为例,在阻塞模式下,利用tcp协议发送一个报文时,如果低层协议没有可用空间来存放用户数据,则应用进程将阻塞等待直到协议有可用的空间。
而在非阻塞模式下,调用将直接返回而不需等待。
在应用进程调用接收函数接收报文时,如果是在阻塞模式下,若没有到达的数据,则调用将一直阻塞直到有数据到达或出错;而在非阻塞模式下,将直接返回而不需等待。
对于udp协议而言,由于udp没有发送缓存,因此所有udp协议即使在阻塞模式下也不会发生阻塞。
对于面向连接的协议,在连接建立阶段,阻塞与非阻塞也表现不一。
在阻塞模式下,如果没有连接请求到达,则等待连接调用将阻塞直到有连接请求到达;但在非阻塞模式下,如果没有连接请求到达,等待连接调用将直接返回。
8select函数工作机制分析
select()的机制中提供一fd_set的数据结构,实际上是一long类型的数组,每一个数组元素都能与一打开的文件句柄(不管是socket句柄,还是其他文件或
命名管道或设备句柄)建立联系,建立联系的工作由程序员完成,当调用select()时,由内核根据io状态修改fd_set的内容,由此来通知执行了select()的进程哪一socket或文件可读
9使用事件通知模型实现异步传输的过程描述(自己的语言),wsaeventselect函数的作用说明
wsaasyncselect使用此模型,应用程序可在一个套接字上进行以windows消息为基础的网络事件通知,此模型提供了读写数据能力的异步通知,但不提供异步数据传送。
异步数据传送有“重叠及完成端口模型提供”。
过程:
(1)初始化套接字相关信息:
(2)开始启动一个事件通知。
wsaasyncselect(sock,hwnd,自定义消息,网络事件)
(3)响应窗口的自定义消息处理函数,其中lparam的高位字包含了可能出现的错误
代码,低字节表示发生的网络事件。
wparam表示发生网络事件的套接字。
10wsaasyncselect函数和windows消息机制的结合过程,一般来说,监听套接字需要处理哪些网络事件?
会话套接字需要处理哪些网络事件?
11windows消息处理过程
窗口消息处理程序与窗口类别相关,窗口类别是程序呼叫registerclass注册的。
依据该类别建立的窗口使用这个窗口消息处理程序来处理窗口的所有消息。
windows通过呼叫窗口消息处理程序对窗口发送消息。
在第一次建立窗口时,windows呼叫wndproc。
在窗口关闭时,windows也呼叫wndproc。
窗口改变大小、移动或者变成图示时,从菜单中选择某一项目、挪动滚动条、按下鼠标按钮或者从键盘输入字符时,以及窗口显示区域必须被更新时,windows都要呼叫wndproc。
12windows消息处理函数的四个参数分别是什么?
携带了什么信
息?
1、消息的组成:
一个消息由一个消息名称(uint),和两个参数(wparam,lparam)。
当用户进行了输入或是窗口的状态发生改变时系统都会发送消息到某一个窗口。
2、谁将收到消息:
一个消息必须由一个窗口接收。
在窗口的过程(wndproc)中可以对消息进行分析,对自己感兴趣的消息进行处理。
3、未处理的消息到那里去了:
m$为窗口编写了默认的窗口过程,这个窗口过程将负责处理那些你不处理消息。
正因为有了这个默认窗口过程我们才可以利用windows的窗口进行开发而不必过多关注窗口各种消息的处理。
4、窗口句柄:
说到消息就不能不说窗口句柄,系统通过窗口句柄来在整个系统中唯一标识一个窗口,发送一个消息时必须指定一个窗口句柄表明该消息由那个窗口接收。
而每个窗口都会有自己的窗口过程,所以用户的输入就会被正确的处理。
13windows的线程函数使用什么作为参数?
如果要从主线程(通常为界面线程)传递数据给工作线程,应如何传递?
如果要从工作线程传递数据给主线程(界面线程有窗口),应如何传递?
线程的创建和终止
windowsapi提供了createthread()函数来创建一个线程。
其原型如下所示:
handlecreatethread(lpsecurity_attributessecattr,
size_tstacksize,
lpthread_start_routinethreadfunc,
lpvoidparam,
dwordflags,
lpdwordthreadid);
在此,secattr是一个用来描述线程的安全属性的指针。
如果secattr是null,就会使用默认的安全描述符。
每个线程都具有自己的堆栈。
可以使用stacksize参数来按字节指定新线程堆栈的大小。
如果这个整数值为0,那么这个线程堆栈的大小与创建它的线程相同。
如果需要的话,这个堆栈可以扩展。
(通常使用0来指定线程堆栈的大小)。
每个线程都在创建它的进程中通过调用线程函数来开始执行。
线程的执行一直持续到线程函数返回。
这个函数的地址(也就是线程的入口点)在threadfunc中指定。
每个线程函数都必须具有这样的原型:
dwordwinapithreadfunc(lpvoidparam);
需要传递给新线程的任何参数都在createthread()的param中指定。
线程函数在它的参数中接收这个32位的值。
这个参数可以用作任何目的。
函数返回它的退出状态。
参数flags确定了线程的执行状态。
如果它是0,线程会立即执行。
如果是create_suspend,线程则以挂起状态创建并等待执行。
(可以通过调用resumethread()来开始执行,稍后讨论)。
与线程相关的标识符以threadid所指向的长整型返回。
如果成功,函数则向线程返回一个句柄。
如果失败,则返回null。
可以通过调用closehandle()来显式销毁这个线程。
否则,会在父进程结束时自动销毁它。
如前所述,当线程的入口函数返回时终止执行线程。
进程也可以使用
terminatethread()或者exitthread()来手动终止线程,这两个函数的原型如下:
boolterminatethread(handlethread,dwordstatus);
voidexitthread(dwordstatus);
对于terminatethread(),thread是将要终止的线程的句柄。
exitthread()只能用来终止调用了exitthread()的线程。
对于两个函数而言,status是终止状态。
terminatethread()如果成功,则会返回非0值,否则返回0。
调用exitthread()在功能上等价于允许线程函数正常返回。
这意味着堆栈会正确地重新设置。
当使用terminatethread()结束线程时,线程会立刻终止,而会执行任何特定的清理任务。
另外,terminatethread()可能会停止正在执行重要操作的线程。
为此,当入口函数返回时,通常最好(也是最容易的)让线程正常终止。
14windows的msg结构包括哪些内容?
在windows程序中,消息是由msg结构体来表示的。
msg结构体的定义如下(参见msdn):
typedefstructtagmsg{
hwndhwnd;
uintmessage;
wparamwparam;
lparamlparam;
【篇三:
2014大学windows网络编程(机械工业出版社)课后习题解答】
ass=txt>第一章网络应用程序设计基础
习题
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.面向少量客户持续请求的服务器和面向大量客户短期请求的服务器在设计中有哪些区
别?
解答:
面向少量客户持续请求的服务器在单位时间内处理的客户请求数量是有限的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- windows 网络 编程 答案