资源描述:
《网络编程与分层协议设计》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
自从人类进入商品经济社会以来,贸易即已成为人们日常活动的主要部分,并成为一国经济增长的主动力。国际分工的深化、大量国际统一标准规则的建立网络编程与分层协议设计 篇一:网络编程与分层协议设计部分习题答案 第2章Linux下C编程环境 习题4 信号忽略是指不对该信号做出任何响应,就犹如该信号没有发生过一样,进程不对其做任何处理. 信号阻塞是指若在某一时刻该信号发生了,此时内核不会将该信号发送给进程,而是将该信号保存起来,待到该函数解除对该信号的阻塞之后,再发送给该进程进行处理. 在信号受到阻塞和进程解除对该信号的阻塞,但信号还未到达进程之间的时间段,进程可以任意改变对该信号的处理.当然如果到该进程结束之时如果还没有解除阻塞的话对则该信号的处理和忽略差不多 习题5 参见程序2_ 习题6 参见程序2_ 习题7 参见程序2_和程序2_7_ 习题8随着信息化和全球化的发展,国家及地区之间的贸易也已成为拉动一国经济的三驾马车之一,甚至是三驾马车之首,奥巴马政府成立之日起 自从人类进入商品经济社会以来,贸易即已成为人们日常活动的主要部分,并成为一国经济增长的主动力。国际分工的深化、大量国际统一标准规则的建立 此处第8行和第10行是可以交换的.当将其交换以后,首先执行pthread_cond_signal(&mqlock_ready),此时对于另一个之前因条件不满足的线程thread2_run感知到条件变量的变化,开始获取锁.类似于调用pthread_mutex_lock(&mqlock),而此时线程thread1_run尚未解除锁,因此前一个线程thread2_run因无法获取锁而阻塞.随后线程thread1_run调用thread_mutex_unlock(&mqlock)释放锁.此时线程thread2_run得到锁,继续执行.当然对于其他的程序环境是否能够交换视具体环境而定.总得来说都对,不过都有缺陷(参看《Unix环境高级编程》)。 习题9 参见程序2_ 第3章网络编程中常用的典型知识 习题2 参见程序3_ 习题4 structlen_and_flag { unsignedshortreserved:4, };hlen:4,fin:1,syn:1,rst:1,psh:1,ack:1,urg:1,ece:1,cwr:1; 习题5随着信息化和全球化的发展,国家及地区之间的贸易也已成为拉动一国经济的三驾马车之一,甚至是三驾马车之首,奥巴马政府成立之日起 自从人类进入商品经济社会以来,贸易即已成为人们日常活动的主要部分,并成为一国经济增长的主动力。国际分工的深化、大量国际统一标准规则的建立 可以将链表节点置于宿主的固定位置,例如宿主的首个元素位置,然后通过将指向链表节点的指针强制类型转换为宿主节点的地址。 习题6 参见程序3_ 习题7 先分析为什么要使用双向链表,而不使用单链表: 考虑普通的单链表,如下: structnode { } 假定a是某个单链表中的节点(structnodea),而b是刚定义的节点(structnodeb) structnode*next; 对于这样的链表,在指定的节点a后插入b很容易:=;=&b; 然而在指定的节点a前插入b却很麻烦; structnodehead;设head为头结点 structnode*temp; temp=&head; while(temp->next!=&a)temp=temp-&(转载于:小龙文档网:网络编程与分层协议设计)gt;next;得到a的前一个节点 temp->next=&b;=&a;将b插入temp与a之间随着信息化和全球化的发展,国家及地区之间的贸易也已成为拉动一国经济的三驾马车之一,甚至是三驾马车之首,奥巴马政府成立之日起 自从人类进入商品经济社会以来,贸易即已成为人们日常活动的主要部分,并成为一国经济增长的主动力。国际分工的深化、大量国际统一标准规则的建立 这就花费了一定的时间来搜索a的前一个节点,而linux要节省这部分时间.因此使用 双向链表,这就决定一个节点应该含有两个指针(一个向前,一个向后) 然后分析为什么prev要是用二级指针,而不使用一级指针: Linux内核中,除了有通用了双向链表,还有通用的哈希链表。后者定义与前者有些 不同。因为通常一个哈希表的表头要占用很大空间,而如果每个表头都用一个双向链表来做 的话,就显得太浪费了。只用一个指针可以实现相同的功能,并且可以节省一半的表头存储 空间.因此这就决定表头只含有一个指针(向前) 哈希链表定义如下: structhlist_head{ structhlist_node*first; } structhlist_node{ structhlist_node*next,**pprev; } 由于表头结构体hlist_head与节点结构体hlist_node的定义不一样,将使得我们随着信息化和全球化的发展,国家及地区之间的贸易也已成为拉动一国经济的三驾马车之一,甚至是三驾马车之首,奥巴马政府成立之日起 自从人类进入商品经济社会以来,贸易即已成为人们日常活动的主要部分,并成为一国经济增长的主动力。国际分工的深化、大量国际统一标准规则的建立 的pprev指针无法直接指向hlist_head,那我们可以让其指向first。而要指向first 则pprev必定为二级指针. 习题8 参见程序3_ 习题9 为了让notifier_chain_register函数的实参能够向主程序返回该函数的处理后 结果,该函数在设计上使用了2级指针。如果使用1级指针则无法通过实参带回改变后的 结果。 习题10 在中的程序可以按8比特进行加运算,这两种运算在逻辑上都是可行的,但是按 8bit进行加运算,其加的次数差不多是按16bit的2倍,浪费了时间 第4章基础套接字 习题1 参见程序4_ 习题2 参见程序4_ 习题3随着信息化和全球化的发展,国家及地区之间的贸易也已成为拉动一国经济的三驾马车之一,甚至是三驾马车之首,奥巴马政府成立之日起 自从人类进入商品经济社会以来,贸易即已成为人们日常活动的主要部分,并成为一国经济增长的主动力。国际分工的深化、大量国际统一标准规则的建立 参见程序4_ 习题4 参见程序4_ 习题5 参见程序4_ 习题6 fprintf(stdout,"Servergotconnectionfrom%sportnumber%u ",inet_ntoa(client__addr), ntohs(client__port)); 习题7 第二个客户端可以连接到服务器,但是客户端程序将阻塞于read函数,直到第一个客 户端请求结束,因为服务器程序为迭代的,而并非并行的,accept函数接收第一个连接请 求后,没有fork出子进程来处理客户端请求,因此套接口一直被占用,直到客户端关闭连 接,服务器才执行close关闭连接,这是服务器端才能接收第二个新的连接。所以,若第 二个客户端也发出请求,则必须等到第一个客户端请求处理完成,才能够获得服务器的应答。 习题8随着信息化和全球化的发展,国家及地区之间的贸易也已成为拉动一国经济的三驾马车之一,甚至是三驾马车之首,奥巴马政府成立之日起 自从人类进入商品经济社会以来,贸易即已成为人们日常活动的主要部分,并成为一国经济增长的主动力。国际分工的深化、大量国际统一标准规则的建立 注释掉程序第65~66行后,3次使用节的客户端访问此服务器后,退出客户端, 执行ps-a命令后会出现如下现象; 3912pts/000:00:00 3926pts/000:00:00 4006pts/000:00:00 这表明三个子进程仍作为僵死进程存在着。其所占的内存空间和其他资源没有被回收。这是由于注释掉65~66行后,程序将不在捕捉SIGCHLD信号,而内核对此信号的默认动作是忽略。由此可以看出,对并发服务器进行SIGCHLD信号捕捉是必要的,因为我们不愿看到僵死进程的出现。 习题9 用setfollow-fork-modechild进入gdb调试工具后,在160行处设置断点后,如题所述,启动第一个客户端无法立刻得到回答,当启动第二个客户端时,可以看到,发出的请求立刻就得到了服务器的应答。这是由于,fork后,父进程关闭套接口描述符后,又返回到主循环执行,并阻塞于accept函数,等待接收新的连接请求。当第二个客户端发来连接请求后,服务器接收,并fork一个新的子进程来处理客户端的请求。这个子进程不会阻塞于write。因此,第二个客户端可以立刻得到服务器的应答。 习题10随着信息化和全球化的发展,国家及地区之间的贸易也已成为拉动一国经济的三驾马车之一,甚至是三驾马车之首,奥巴马政府成立之日起 自从人类进入商品经济社会以来,贸易即已成为人们日常活动的主要部分,并成为一国经济增长的主动力。国际分工的深化、大量国际统一标准规则的建立 不启动服务器,而单独执行客户端程序时,会发现客户端程序永远阻塞于它的recvfrom调用。即键入格式化要求后不会收到任何应答。程序也不会退出。该错误由sendto引起,但是sendto本身却成功返回,该ICMP错误直到后来才返回,因此称其为异步错误。要使客户端能够发现该错误而退出,有两个方法。第一个方法是为recvfrom设置一个超时,调用函数alarm就可实现超时的设置。第二个方法是为UDP使用connect函数,使其成为连接的UDP套接口,但是使用connect后的UDP套接口,不能给输出操作指定目的ip和端口号,也就是说,我们不再使用sendto,而改用write或send。写到已连接的UDP套接口上的内容都会自动发送到由connect函数指定的协议地址。同时,我们也不必使用recvfrom函数,而是改用read或recv。此时由内核为输入操作返回的数据报仅仅是那些来自connect所指定的协议地址的数据报。 因此我们可以将的客户端程序作如下修改。首先注释掉86~91行和107~113行。然后在第85行后添加以下代码 if(connect(s,(structsockaddr*)&adr_srvr,len_inet)==-1){printf("connecterror "); exit(1);} 然后再在114行前添加 z=read(s,dgram,sizeofdgram);随着信息化和全球化的发展,国家及地区之间的贸易也已成为拉动一国经济的三驾马车之一,甚至是三驾马车之首,奥巴马政府成立之日起 自从人类进入商品经济社会以来,贸易即已成为人们日常活动的主要部分,并成为一国经济增长的主动力。国际分工的深化、大量国际统一标准规则的建立 最后重新编译,运行(仍然不启动服务器)程序就不会永远阻塞于recvfrom调用,而是返回一个“Connectionrefused:recvfrom()”错误后退出。 篇二:网络编程设计 网络编程设计 一、选择题(1小题1分,共30分) 1.关于HTML文件说法错误的是:(C) AHTML文件是一个包含标记的文本文件。 B这些标记告诉浏览器怎样显示这个页面。 CHTML文件必须以.htm为扩展名。 DHTML文件可以用一个简单的文本编辑器创建。 2、关于HTML文件说法正确的是:(C) AHTML标记都必须配对使用。 B在和标签之间的是头信息。 CHTML标签是大小写无关的,跟表示的意思是一样的。 D在和标签之间的文本会以加粗字体显示。 3、想要在HTML中显示一个小于号“ A> B C D" 4、HTML使用锚标签()来创建一个连接到其他文件的链接,链接的资源(D)。 A只能是HTML页面和图像随着信息化和全球化的发展,国家及地区之间的贸易也已成为拉动一国经济的三驾马车之一,甚至是三驾马车之首,奥巴马政府成立之日起 自从人类进入商品经济社会以来,贸易即已成为人们日常活动的主要部分,并成为一国经济增长的主动力。国际分工的深化、大量国际统一标准规则的建立 B不可以是声音 C不可以是影片 D可以是网络上的任何资源 5、锚标签()的target属性,可以定义从什么地方打开链接地址,下列哪一个是target属性的默认值(A)。 A_self B_blank C_parent D_top 6.数据库支持是必须的,目前应用领域的数据库系统全部采用(A)。 A关系型数据库B网状型数据库 C对象型数据库D层次型数据库 8.以下哪个不是J2EE的13中核心技术(D) AJTABJTS BJAFDJFC 9.关于public类,下面说法正确的是(A) AJava程序中最多只能有一个public类BJava程序中必须有public类 CJava程序中可以有2个以上public类D以上说法全部错误 10、关于锚标签()说法错误的是:(D)随着信息化和全球化的发展,国家及地区之间的贸易也已成为拉动一国经济的三驾马车之一,甚至是三驾马车之首,奥巴马政府成立之日起 自从人类进入商品经济社会以来,贸易即已成为人们日常活动的主要部分,并成为一国经济增长的主动力。国际分工的深化、大量国际统一标准规则的建立 A用name属性创建一个命名锚点,可以让链接直接跳转到一个页面的某一章节,而不用用户打开那一页,再从上到下慢慢找。 B想要访问本页的锚点,在URL地址的后面加一个“#”和这个锚点的名字。 Chref属性用来指定连接到的URL。 Dhref属性不能用来指定到一个邮箱地址。 11、关于HTML框架说法错误的是:(A) A标签定义了如何将窗口拆分成框架。 B可以给不支持框架的浏览器写上标签。 CHTML框架中的各个页面是相互独立的。 DHTML框架的使用让打印整个页面变得困难。 13、关于HTML表格说法错误的是:(C) A表格的width属性可以设置为像素值或百分比。 B表格的height属性可以设置为像素值或百分比。 C如果不指定border属性,表格默认宽度为1。 D表格和单元格的背景色可以同时设置。 14、下列哪一种设置能使单元格显示边框(A) A在中添加border属性 B在中添加border属性 C在中添加border属性 D以上全都可以随着信息化和全球化的发展,国家及地区之间的贸易也已成为拉动一国经济的三驾马车之一,甚至是三驾马车之首,奥巴马政府成立之日起 自从人类进入商品经济社会以来,贸易即已成为人们日常活动的主要部分,并成为一国经济增长的主动力。国际分工的深化、大量国际统一标准规则的建立 15、关于网页中的图像,下列说法正确的是(C) A图像是由标签开始,由结束。 B图像标签的href属性用于指定图像链接到的URL。 Csrc属性的值是所要显示图像的URL。 D以上全都是错的。 16、配置IIS时,设置站点的主目录的位置,下面说法正确的是(D)。 A只能在本机的c:inetpubwwwroot文件夹。 B只能在本机操作系统所在磁盘的文件夹。 C只能在本机非操作系统所在磁盘的文件夹。 D以上全都是错的。 17、VBScript中,下列说法正确的是(B) A没有计算数的指数次方的运算符,但可以通过*运算符实现。 B&运算符可以强制将任意两个表达式进行字符串链接。 C表达式16/5的结果是1。 D以上都正确 18、VBScript中,下列运算符优先级最高的是(B) A求余运算(Mod) B负数(-) C乘法和除法(*,/)随着信息化和全球化的发展,国家及地区之间的贸易也已成为拉动一国经济的三驾马车之一,甚至是三驾马车之首,奥巴马政府成立之日起 自从人类进入商品经济社会以来,贸易即已成为人们日常活动的主要部分,并成为一国经济增长的主动力。国际分工的深化、大量国际统一标准规则的建立 D字符串连接(&) 19、如果a=Int(10*Rnd()),则a的值不可能是(D) A0 B1 C9 D10 20、如果v=FormatNumber(,3),则v等于(C)。 A B C D以上都不对 21、下列表达式的值为-10的是(D) AInt(-) B-Abs(-) CFix(-) DInt(-) 22、关于日期和时间函数,下列说法正确的是(D)。 Anow函数可以返回客户端计算机当前的日期和时间值。 B表达式Weekday(Date)将得到表示当前日期是星期几的英文字符,如星期日为“Friday”。 CTimer函数返回午夜12时以后已经过去的小时数。随着信息化和全球化的发展,国家及地区之间的贸易也已成为拉动一国经济的三驾马车之一,甚至是三驾马车之首,奥巴马政府成立之日起 自从人类进入商品经济社会以来,贸易即已成为人们日常活动的主要部分,并成为一国经济增长的主动力。国际分工的深化、大量国际统一标准规则的建立 D表达式DateAdd("d",10,Date)是表示当前日期的十天后。 23、赋值V=”6”并执行a=IsNumeric(V)语句后,a是(D)。 A字符串型 B日期型 C数值型 D布尔型 24、下列哪一个函数可以将日期转换为字符串?(C) ACdate BCInt CCStr DCDbl 25、请问Mid(“Iamastudent.”,9,2)的返回值是什么?(A) A“tu” B“st” C“en” D“nt” 26、下列说法正确的是(A) A执行UCase("HelloWorld")后,返回"HELLOWORLD"。随着信息化和全球化的发展,国家及地区之间的贸易也已成为拉动一国经济的三驾马车之一,甚至是三驾马车之首,奥巴马政府成立之日起 自从人类进入商品经济社会以来,贸易即已成为人们日常活动的主要部分,并成为一国经济增长的主动力。国际分工的深化、大量国际统一标准规则的建立 B执行LCase("VBScript")后,返回"vbsCRIPT"。 C执行RTrim("vbscript")后,返回"vbscript"。 D执行Split("VBScriptXisxfun!","x")后,返回包含“VBScriptXis”和“fun”的一维数组。 27、下列语句中,不能正常显示的是(B) Atime Bday Cnow Ddate 28、关于Session对象的属性,下列说法正确的是(C) ASession的有效期时长默认为90秒,且不能修改。 BSession的有效期时长默认为20分钟,且不能修改。 CSessionI D可以存储每个用户Session的代号,是一个不重复的长整型数字。 29、QueryString获取方法、Form获取方法获取的数据子类型分别是:(C) A数字、字符串 B字符串、数字 C字符串、字符串 D必须根据具体值而定D以上全都错随着信息化和全球化的发展,国家及地区之间的贸易也已成为拉动一国经济的三驾马车之一,甚至是三驾马车之首,奥巴马政府成立之日起 自从人类进入商品经济社会以来,贸易即已成为人们日常活动的主要部分,并成为一国经济增长的主动力。国际分工的深化、大量国际统一标准规则的建立 35、Response对象的属性(D)可以用于表明页输出是否被缓冲。 ATotalBytes BContentType Cstatus DBuffer 二、填空题(1小题1分,共10分) 1.编译器将处理.java源文件生成类文件,类文件可通过名称为java的加载实用程序解释执行,将Java字节码转换为机器可执行代码。 2. 3.Java语言包含三种核心机制:Java。 4.为实现跨平台性,Java引进的技术是针对不同的平台上,完全由软件模拟或由软件和硬件共同模拟,实现一台虚拟的计算机。 5.表示一个型常量,占位内存空间。 篇三:实验报告-IP分段与重组 实验四 课程名称:TCP/IP协议栈分析与实现 实验项目名称:IP报文分段与重组模拟 学生姓名:专业:学号:同组学生姓名:实验地点:实验日期:年月日随着信息化和全球化的发展,国家及地区之间的贸易也已成为拉动一国经济的三驾马车之一,甚至是三驾马车之首,奥巴马政府成立之日起 自从人类进入商品经济社会以来,贸易即已成为人们日常活动的主要部分,并成为一国经济增长的主动力。国际分工的深化、大量国际统一标准规则的建立 一、实验目的 学习Linux内核IP报文分段和重组的原理,掌握IP报文分段重组模拟程序的关键实现方法。 二、实验内容 1、联调Forward而和Host程序,观察基于消息分段和重组的文件传输过程。 2、完成IP报文分段和重组程序中用户退出登录的功能实现。 三、实验要求 1、选定4台PC工作站,其中一台作为转发服务器Forwarder,两台作为文件传输的发送方Host,另外一台作为接收方Host。 2、每3人一组,参考教材《网络编程与分层协议设计—基于Linux平台实现》第一节的说明,完成IP报文分段与重组模拟程序的编译,并将Forwarder和Host正确部署在上述4台工作站上,以实现不同Host之间的文件传输。 3、仔细阅读和源文件中关于消息分段、再分段和分段重组函数的实现代码。 4、完成中app_do_exit函数的实现,要求当某个已登录Host退出后,其他仍在线用户的的在线用户列表中能去除该退出登录的用户名。 四、实现原理随着信息化和全球化的发展,国家及地区之间的贸易也已成为拉动一国经济的三驾马车之一,甚至是三驾马车之首,奥巴马政府成立之日起 自从人类进入商品经济社会以来,贸易即已成为人们日常活动的主要部分,并成为一国经济增长的主动力。国际分工的深化、大量国际统一标准规则的建立 1.IP报文分段和重组模拟程序功能描述 IP报文分段和重组模拟程序的核心功能是通过UDP编程,完成基于应用层消息分段和重组下的文件传输。整个模拟程序主要由两个独立的角色构成,即Forwarder和Host,如下图所示: 其中Forwarder主要作为数据传输的中间转发单元,其主要功能是模拟IP网络中的路由器对IP分组进行再分段处理,此外Forwarder还兼作业务服务器,完成各个用户(Host)的登陆处理。Host的主要作用是作为文件传输的源用户和目标用户,并且可以按照一对一或多对一方式,从源Host向目标Host发起文件传输活动。 2.协议分层 在IP报文分段和重组模拟程序中,工作于Forwarder和Host中的分层协议分为三层,一是业务逻辑层,负责应用的业务处理,如登陆Forwarder和文件传输;二是分段重组层,其功能是根据当前程序设定的UDP消息长度阈值的大小,对来自上层的业务逻辑消息进行必要的分段后,将消息分段交给消息发送与接收层进行发送,或者将从网络上收到的消息分段进行重组后,再交给业务逻辑层进行业务处理。协议分层如下所示: HostAHostC Forwarder随着信息化和全球化的发展,国家及地区之间的贸易也已成为拉动一国经济的三驾马车之一,甚至是三驾马车之首,奥巴马政府成立之日起 自从人类进入商品经济社会以来,贸易即已成为人们日常活动的主要部分,并成为一国经济增长的主动力。国际分工的深化、大量国际统一标准规则的建立 ostBHostD 源Host Forwarder目的Host 3.协议设计 请仔细阅读教材《网络编程与分层协议设计—基于Linux平台实现》第一节的内容,准确掌握IP报文分段与重组模拟程序的分层协议定义。 五、实验任务 1、实现退出登录业务功能 请完成某个登录用户退出的功能实现,要求所有其他在线用户通过刷新用户登录列表,可以看到该退出登录用户已经下线。 2、程序运行截图 随着信息化和全球化的发展,国家及地区之间的贸易也已成为拉动一国经济的三驾马车之一,甚至是三驾马车之首,奥巴马政府成立之日起