版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《网络程序设计》复习题21、什么叫套接字?套接字按通信性质可以分为哪两类?多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接口。套接字按通信性质分:会话套接字和数据报套接字。2、理解线程的创建与使用方法,并能应用到程序设计中。P663、异构环境下的网络程序设计需要考虑哪些问题?1)字节顺序:不同的平台以不同的方式存放一个二进制数。最常见的有两种格式:大数在前的字节顺序和小数在前的字节顺序。大数在前的字节顺序是指将一个多字节数的高序字节存储在内存的起始地址;而小数在前的字节顺序则相反,将低序字节存储在内存的起始地址。2)字的长度:不同的实现对于相同的数据类型可能有不同的表示长度。3)字节定界问题:不同的平台上为结构体(struct)或共同体(union)打包的方式也是不同的,这取决于所有数据类型的位数及机器的定界限制。4、为什么在数据结构structsockaddr_in中,成员变量sin_addr和sin_port需要转换为网络字节顺序,而sin_family不需要呢?Sin_addr和sin_port分别封装在包的IP和UDP层,必须要是网络字节顺序。Sin_family域只是被内核使用来决定在数据结构中包含什么类型的地址,没有发送到网络上,所以它必须是本机字节顺序5、从网络编程的角度来简述和比较IP地址和端口的作用。端口:是一种抽象的软件结构。应用程序通过系统调用与某端口建立连接(binding)后,传输层传给该端口的数据都被相应进程所接受,相应进程发给传输层的数据都通过该端口输出。在TCP/IP协议的实现中,端口操作类似一般的I/O操作,进程获取一个端口,相当于获取本地唯一的I/O文件。地址:网络通信中通信的两个进程在不同的机器上。这两个机器可能位于不同的网络,这些网络通过网络互联设备连接。因此需要三级寻址:某一主机与多个网络相连,必须指定一特定网络地址;网络上每一主机应有唯一的地址;每一主机上的每一进程有在主机上的唯一标识符。6、为什么网络编程时需要考虑字节顺序问题?7、WinSock编程中需要哪些文件?8、UDP程序的工作模型隐含着通信标识五元组的建立过程。这五元组在UDP的客户与服务端是由哪些函数分别确定的?9、什么是阻塞与非阻塞通信?请解释两者的区别。通信包括阻塞和非阻塞两种模式。阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果之后才会返回。非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。区别:对于不同的协议,阻塞通信和非阻塞通信有不同的表现。以插口为例,在阻塞模式下,利用TCP协议发送一个报文时,如果低层协议没有可用空间来存放用户数据,则应用进程将阻塞等待直到协议有可用的空间。而在非阻塞模式下,调用将直接返回而不需等待。在应用进程调用接收函数接收报文时,如果是在阻塞模式下,若没有到达的数据,则调用将一直阻塞直到有数据到达或出错;而在非阻塞模式下,将直接返回而不需等待。对于UDP协议而言,由于UDP没有发送缓存,因此所有UDP协议即使在阻塞模式下也不会发生阻塞。对于面向连接的协议,在连接建立阶段,阻塞与非阻塞也表现不一。在阻塞模式下,如果没有连接请求到达,则等待连接调用将阻塞直到有连接请求到达;但在非阻塞模式下,如果没有连接请求到达,等待连接调用将直接返回。10、简述各种类型数据的发送与接收处理的方法。11、简述基于UDP的客户机/服务器端socket编程流程。12、什么是通信三元组和五元组?三元组和五元组每个元素在网络连接中起到什么作用?三元组:(协议,本地地址,本地端口号);(在网络中用一个三元组可以在全局唯一标志一个进程:(协议,本地地址,本地端口号)这样一个三元组,叫做一个半相关(half-association),它指定连接的每半部分。)五元组:(协议,本地地址,本地端口号,远地地址,远地端口号)(即两个协议相同的半相关才能组合成一个合适的相关,或完全指定组成一连接。)13、为什么服务端在TCP通信过程中需要调用bind()函数而客户端不需要?为什么客户机通常不需要绑定自己的端口号?14、简述套接字Select模型原理,以及select模型的优势和不足。15、简述阻塞模式服务器和客户端工作流程,以及阻塞模式套接字的优势和不足。16、在实际应用中,很多TCP服务器程序在非正常退出时,如果立即重启服务器进程则会发生绑定服务器端口失败的错误,从而无法启动服务器进程,但等待一段时间后就可以了。为什么会发生这种情况呢?如何解决这个问题(或采取什么措施可以立即重启服务器进程)?(要求掌握setsockopt()函数的用法)17、TCP程序的工作模型隐含着通信标识五元组的建立过程。这五元组在TCP的客户与服务端是由哪些函数分别确定的?18、accept()为什么要返回一个套接口?或者说,为什么要为每一个连接创建一个套接口来处理?UDP服务器端为什么不需要多个套接口?19、理解生产者-消费者模型,理解线程的同步与互斥方法(event和critical-section),并能应用到程序设计中。20、采用阻塞式I/O模型时,套接字函数recv()的返回值有哪几种?分别对应什么情况?21、closesocket()函数和shutdown()函数有何差别?shutdown()与closesocket()的区别shutdown()与closesocket()的区别。1)如果关闭读,则接受缓冲区的未读出的所有数据都将丢失,以后不会再接受任何数据2)如果关闭写,如果输出缓冲区内有数据,则所有的数据将发送出去后将发送一个FIN信号而close则是关闭该socket,马上发送FIN信号,所有的未完成发送或者接受的数据都将被丢失对于慢速网络,应该先进行shutdown,然后一定的时间延迟,再close该socket.22、什么是TCP的三次握手机制?为什么要使用TCP的三次握手机制?含义:所谓的“三次握手”即对每次发送的数据量是怎样跟踪进行协商使数据段的发送和接收同步,根据所接收到的数据量而确定的数据确认数及数据发送、接收完毕后何时撤消联系,并建立虚连接。为了提供可靠的传送,TCP在发送新的数据之前,以特定的顺序将数据包的序号,并需要这些包传送给目标机之后的确认消息。TCP总是用来发送大批量的数据。当应用程序在收到数据后要做出确认时也要用到TCP。原因:在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。三次握手时在存在包丢失、重复和延迟的情况下,确保通信双方信息交换确定性的充分必要条件。1.请求端(通常称为客户)发送一个SYN段,指明客户打算连接的服务器的端口以及初始序号(SEQ)。这个SYN段为报文段1。2.服务器发回包含服务器的初始序号的SYN报文段(报文段2)作为应答。同时,将确认序号设置为客户的ISN加1,用以对客户的SYN报文段进行确认。一个SYN占用一个序号。3.客户必须将确认序号设置为服务器的ISN加1,用以对服务器的SYN报文段进行确认23、服务器端并发的两种模型及编程实现。考试形式:闭卷考试时间:120分钟考试题型:选择题(2’×10=20’)、简答题(10’×6=60’)、程序设计题(20’)函数参考:structsockaddr{unsignedshortsa_family,charsa_data[14]};structsockaddr_in{shortsin_family,unsignedshortsin_port,structin_addrsin_addr,charsin_zero[8]};u_shorthtons(u_shorthostshort);u_longhtonl(u_longhostlong);u_shortntohs(u_shorthostshort);u_longntohl(u_longhostlong);unsignedlonginet_addr(constchar*cp);char*FARinet_ntoa(structin_addrin);intWSAStartup(WORDwVersionRequested,LPWSADATAlpWSAData);#defineWINSOK_VERSIONMAKEWORD(2,2)intWSACleanup(void);intWSAGetLastError(void);SOCKETsocket(intaf,inttype,intprotocol);intclosesocket(SOCKETs);intbind(SOCKETs;conststructsockaddr*name,intnamelen);intrecvfrom(SOCKETs,char*buf,intlen,intflags,structsockaddr*from,int*fromlen);intsendto(SOCKETs,constchar*buf,intlen,intflags,conststructsockaddr*to,inttolen);intlisten(SOCKETs,intbacklog);SOCKETaccept(SOCKETs,structsockaddr*addr,int*addrlen);intconnect(SOCKETs,conststructsockaddr*name,intnamelen);intsend(SOCKETs,constchar*buf,intlen,intflags);intrecv(SOCKETs,char*buf,intlen,intflags);intshutdown(SOCKETs,inthow);intsetsockopt(SOCKETs,intlevel,intoptname,constcharFAR*optval,intoptlen);intselect(intntfs,fd_set*readthis,fd_set*writefds,fd_set*excepitids,conststructtimeval*timeout);FD_ZERO(*set);FD_SET(s,*set);FD_CLR(s,*set);FD_ISSET(s,*set);unsignedlong_beginthread(void(__cdecl*start_address)(void*),unsignedstack_size,void*arglist);HANDLECreateEvent(LPSECURITY_ATTRIBUTESlpEventAttributes,BOOLbManualReset,BOOLbInitialState,LPCTSTRlpName);BOOLSetEvent(HANDLEhEvent);DWORDWaitForSingleObject(HANDLEhHandle,DWORDdwMilliseconds);BOOLCloseHandle(HANDLEhObject);voidInitializ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人与企业间知识产权许可协议(2024版)5篇
- 2025年度智能硬件产品独家代理销售合同协议4篇
- 2025年厂区突发事件应急预案服务合同范本4篇
- 临时工作人员雇佣协议示例(2024年度)版B版
- 个人循环贷款最高限额合同书2024年版一
- 2025年度国际贸易代理产品认证合同范本4篇
- 2024年05月上海/北京中国工商银行数据中心星令营暑期实习项目笔试历年参考题库附带答案详解
- 《合成抗菌材料》课件
- 2025年度区块链技术应用与维护服务合同3篇
- 专用配件销售协议(2024年度)版A版
- 春节文化常识单选题100道及答案
- 12123交管学法减分考试题及答案
- 2024年杭州师范大学附属医院招聘高层次紧缺专业人才笔试真题
- 制造业BCM业务连续性管理培训
- 24年追觅在线测评28题及答案
- TGDNAS 043-2024 成人静脉中等长度导管置管技术
- 《陆上风电场工程概算定额》NBT 31010-2019
- 招投标法考试试题及答案
- 皮带输送机工程施工电气安装措施要点
- 药房(冰柜)温湿度表
- QJ903.9A-1995航天产品工艺文件管理制度管理用工艺文件编制规则
评论
0/150
提交评论