7服务器软件设计的算法与题_第1页
7服务器软件设计的算法与题_第2页
7服务器软件设计的算法与题_第3页
7服务器软件设计的算法与题_第4页
7服务器软件设计的算法与题_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《计算机通信与网络编程》第七讲服务器软件设计的算法和问题电子科技大学计算机学院赶洋巢衡父责驱焦仇墨阶挖槽谆为笋疲依初步天撼桥损蛊梆偏绍偷烟跟斋7服务器软件设计的算法与题7服务器软件设计的算法与题服务器软件设计概述循环和并发的服务器的实现无连接和面向连接的服务器访问无状态和有状态的服务器应用简单服务器的算法:创建套接字绑定到一个熟知端口期望在这个端口上接收请求进入无限循环,接受客户请求并应答只适用于最简单的服务…痞徽耽繁洗烙荚鞭原裁绸惶康球操崇爷裳喘潭格裁泰讲繁脓又扁晤饿谰巢7服务器软件设计的算法与题7服务器软件设计的算法与题并发服务器和循环服务器循环服务器:一个时刻只处理一个请求并发服务器:一个时刻可以处理多请求多数只提供表面并发:执行多个线程,每个线程处理一个请求使用线程的可能性:计算量小,主要是异步i/o,便于同时使用多个通信信道并发处理多个请求,而不是指下层是否使用了多个并发线程循环服务器容易构建,但是性能差;并发服务器难以构建和设计,但是性能好崔睡匝抨溜抖哮尉悠缩玻一代突朱絮悟亥辣贿辱丧理责柴雹沙穿掀柄喂雄7服务器软件设计的算法与题7服务器软件设计的算法与题面向连接和无连接的访问连接性问题是传输协议的中心,tcp/ip提供了两种协议:tcp,udp使用tcp的服务器是面向连接的服务器使用udp的服务器是无连接的服务器选择面向连接或者无连接的服务,依赖于应用协议

设计上使用面向连接的传输服务的应用协议时,如果实际中使用了无连接的传输协议时,将可能不能正确地运行或者不能有效运行。备瞒虽糟矗唤宽揖宾斧侮徽桶湖道勇闸氨近堵站再灶厅佩则扁腋嘱费脉脐7服务器软件设计的算法与题7服务器软件设计的算法与题传输协议的语义1.tcp的语义点到点通信建立可靠连接可靠交付具有流控的传输双工传输流模式2.udp的语义多队多通信不可靠服务缺乏流控制报文模式选择传输协议,需要考虑应用程序要求的语义调韭厢支万端余渗梁氯粒脊堕溉限婴维漫侣否晤当钠窘焊膊庐姜泉罚迷哗7服务器软件设计的算法与题7服务器软件设计的算法与题面向连接的服务器面向连接的服务的优点:

易于编程自动处理分组丢失,分组失序自动验证数据差错,处理连接状态面向连接的服务的缺点:对每个连接都有一个单独的套接字,耗费更多的资源在空闲的连接上不发送任何分组始终运行的服务器会因为客户的崩溃,导致无用套接字的过多而耗尽资源赚惕忿漏迟寿援丸栗对倾琴厦棵懂砍皮放速蹿宵绸面诽旧勺垮煤弄钻邯怔7服务器软件设计的算法与题7服务器软件设计的算法与题无连接的服务器优点:没有资源耗尽问题缺陷:需要自己完成可靠通信问题必要时,需要一种自适应重传的复杂技术,需要程序员具有相当的专业知识对于可靠通信的场合,尽量使用tcp是否需要组播或者广播是考虑选择何种传输方式的一个因素

支持组播或者广播的服务器必须是无连接的,今后会不断增加这样的应用。竿彬绽察嫌污孺丹恩揍撵项砒奄然解杯伞死模绢像最身助柿创寥识饥锰费7服务器软件设计的算法与题7服务器软件设计的算法与题故障、可靠性和无状态状态信息:服务器维护的,关于它和客户正进行的交互状态信息无状态服务器:没有保留任何状态信息状态服务器:维护状态信息的服务器无状态源于对确保可靠性的要求:无连接传输不可靠,要求无连接传输协议不能保证可靠,应用协议的设计必须保证可靠

实现服务器如果有状态依赖,必须慎重甫俏船斤利锯谤堰护蛇绳穷檀教靶碰晒树话甜软窄益垮哭退蜒哟妈硝象氧7服务器软件设计的算法与题7服务器软件设计的算法与题优化无状态服务器一个无连接服务器,允许客户从服务器机器磁盘上读出文件

要保持无状态,每个客户请求都必须指定文件名,文件中的位置,读取的字节数设计服务器的时候,我们注意到:文件打开和关闭的额外开销较高使用该服务器的客户请求可能只读十来字节客户通常按顺序读取文件数据服务器从内存缓冲区读取数据比磁盘快得多优化服务器性能维护一个小的文件信息表了查击楷诫岔彼贮匈陈唯抄臼烈宽辨驻唐塑镣黑搐篓盯享巢贤盗亏鲤埋鸵7服务器软件设计的算法与题7服务器软件设计的算法与题优化无状态服务器使用ip地址和端口号索引将没有发现的读取数据从磁盘读到内存文件名:x偏移量:512缓存指针:文件名:y偏移量:1024缓存指针:用于文件x的缓存从512字节开始用于文件y的缓存从1024字节开始hash(ipaddr,port)有关客户使用的文件的信息表途选椭徊囤嘲证驶簧椭婉昭月辫官着邑化汞旱捧辈葵坷含皮当萧究撑叛种7服务器软件设计的算法与题7服务器软件设计的算法与题优化无状态服务器上述的信息表格可以改善服务器性能需要程序员极其小心:检查文件名等如果客户出了故障重新启动,将会重新获得一个不同的端口号,先前的表项将会失去作用,最终会耗尽服务器资源服务器可以选择删除lru(最近最少使用)但是如果客户经常崩溃,可能让服务器删除一个合法的客户条目优化无状态服务器的时候,程序员必须小心如果客户经常崩溃或者重启,或者网络使报文重复或者迟延,管理少量状态信息也会消耗资源揉寄窝杯缎鳖谚碟邹墨柄会掀哮掺恕仗倾省擎成盂蝶糙樊礼梆呸口橇瞳埠7服务器软件设计的算法与题7服务器软件设计的算法与题四种基本类型的服务器循环的或者并发的使用面向连接的或者无连接的传输循环的无连接循环的面向连接并发的无连接并发的面向连接眩幽啡稽搓辟厕骑奖枉妙蔼曾讥蓝做聚汐翅灵疑味续擎茬罢刊稀瓣赂炊乞7服务器软件设计的算法与题7服务器软件设计的算法与题请求处理时间循环服务器是最简单的,客户按照顺序等待。是否能够满足要求取决于所需的反应时间观测响应时间:客户发送请求到服务器相应之间的全部时延。请求处理时间:服务器处理单个孤立的请求所花费的时间。循环服务器一次处理一个请求。如果n代表请求的平均长度,观测响应时间大约是n/2+1服务请求处理时间如果一个服务器设计处理k个客户,每个客户每秒发送r个请求,服务器请求处理时间必须小于每请求1/kr秒。否则请求队列将溢出。这时设计者必须考虑并发实现夕顾沂瓦忘播查箕街纵故堑央辰共售芋羚谁盂卓亚虫崭盟杂贵闪垄颧舅猎7服务器软件设计的算法与题7服务器软件设计的算法与题循环的面向连接的服务器算法

通过tcp的面向连接的循环服务器算法创建套接字并将其绑定到它所提供服务的熟知端口上;将该端口设置为被动模式,使其准备为服务器所用;从该套接字上接收下一个连接请求,获得该连接的新的套接字;重复地读取来自客户的请求,构造响应,按照应用协议向客户发回响应;当某个特定客户完成交互时,关闭连接,并返回步骤3以接受新的连接。忌恫接淮嗣唆炔穿绎虚含俊公秽捻涸院尺歧扎躲羊疯图右秆赊徊卑值痕蓑7服务器软件设计的算法与题7服务器软件设计的算法与题用inaddr_any绑定熟知端口

服务器需要创建套接字并将其绑定到所熟知的端口上getportbyname:服务名映射到熟知端口上bind为某个套接字指明某个端点,使用结构sockaddr_in,该结构含有ip地址和端口号对于多接口主机使用inaddr_any指明了一个通配地址,让该主机的任何一个ip地址都匹配。喘掷程莫择戎貉型魁晓如愿遵绕镶擞秉桅吓甘矮顷便砸疚押厌毫稿奖勋嫉7服务器软件设计的算法与题7服务器软件设计的算法与题将套接字置于被动模式调用listen:将套接字置于被动模式一个参数指明套接字内部的请求队列长度请求队列保存一组tcp传入连接请求,来自客户,都向这个服务器请求一个连接接收连接并使用这些连接调用accept:获得下一个传入连接请求返回新的连接的套接字的描述符服务器接收连接,使用read获得来自客户的应用协议,使用write发回应答。服务器结束连接,使用close释放套接字定偶顽她狭滋董富砖本胰死倘薛保弱心赛钝馅像孟剃珐摩风猖惧看强攒砧7服务器软件设计的算法与题7服务器软件设计的算法与题无连接循环服务器的算法循环服务器的设计,编程,排错,修改很容易。往往使用无连接的协议。循环服务器对于小的处理时间的服务工作很好。无连接服务器算法如下:创建套接字并将其绑定到所提供服务的熟知端口上;重复读取来自客户的请求,构造响应,按照应用协议向客户发回响应。通岁姆疵忌拧粘洒硅琵疡鸯棒躯彼摊藻诬橙腔猪凛侣媳沁疮雏蒸后污僧今7服务器软件设计的算法与题7服务器软件设计的算法与题无连接的服务器中构造应答connect函数限制了套接字的使用无连接服务器使用sendto:指明了发送的数据报和它将去的地址retcode=sendto(s,msg,len,flags,toaddr,toaddrlen);服务器从收到的请求中的源地址获得应答的地址。调用recvfrom得到数据和对方的地址retcode=recvfrom(s,buf,len,flags,from,fromlen);堂炒窿许饭雹啦竭橙柯秸产畜康竖伸米元贺拓鸭诛睁娄农哦锡陌辑恐荣刀7服务器软件设计的算法与题7服务器软件设计的算法与题并发服务器的算法给多个客户提供快速响应时间需要使用并发服务器构造要求有相当的i/o时间的响应可以部分重叠地使用处理器和外设各个请求所要求的处理时间变化很大时间分片允许单个处理处理那些只要求少量处理的请求尽快完成服务器运行在具有多个处理器的计算机上不同的处理器处理不同的请求并发服务器通过使处理和i/o部分重叠来达到高性能。榷棚憾老遂磨嵌滨谰手廊毕茶鞋钒址电搞拒暇摔披滤僻葱都兆胁顶窝粱谎7服务器软件设计的算法与题7服务器软件设计的算法与题主线程和从线程

尽管可以使用一个单线程实现并发服务器,但是大多数使用多线程:主线程最先开始执行在熟知的端口上打开一个套接字,等待一个请求,并为每个请求创建一个从线程(可能在一个新进程中)主线程不与客户直接通信,每个从线程处理一个客户的通信。从线程构成响应并发送给客户后,这个从线程便退出鸦责翱拈怕优萤壁峰扳班贾栅趴液悠停挡佩搽酌巫巳绩隘解嘿漠掷狱铣愿7服务器软件设计的算法与题7服务器软件设计的算法与题并发的无连接的服务器的算法最简单的算法:主1、创建套接字并将其绑定到所提供服务的熟知地址上。让该套接字保持为未连接的主2、反复调用recvfrom接收来自客户的下一个请求,创建一个新的从线程来处理响应从1、从来自主进程的特定请求以及到该套接字的访问开始从2、根据应用协议构造应答,并用sendto将该应答发回给客户从3、退出(即:从线程处理完一个请求后就终止)由于创建进程或者线程是昂贵的,因此只有很少的无连接服务器采用并发实现孪绅逐菜实腾凿右趟笺詹诞凝复雪诅卵床咸窗臭饱吁垢旅毫哟己拘近神戎7服务器软件设计的算法与题7服务器软件设计的算法与题并发的面向连接服务器算法

面向连接的服务器在多个连接之间实现并发(不是在各个请求之间)主1、创建套接字并将其绑定到所提供服务的熟知地址上。让该套接字保持为面向连接主2、将该端口设置为被动模式主3、反复调用accept以便接收来自客户的下一个连接请求,并创建新的从线程或者进程来处理响应从1、由主线程传递来的连接请求开始从2、用该连接与客户进行交互;读取请求并发回响应从3、关闭连接并退出各灯氢喂籍圈订观嘻瓮艳怨否押弹欧禾悬晤疏叁板裙春恒高串椭棒哥椅当7服务器软件设计的算法与题7服务器软件设计的算法与题服务器并发性的实现

两种形式的并发性:进程和线程服务器创建多个进程,每个进程都有一个执行线程服务器在一个进程中创建多个执行线程将在11章和12章说明主进程从进程主线程从线程饶镶夯银件茵刹戍驼叭镇淡透烛撒迎茵炊萌包鸦精霍诊构敖落规馆症肌计7服务器软件设计的算法与题7服务器软件设计的算法与题把单独的程序作为进程使用并发服务器为每个连接创建一个新从线程对于单线程的进程实现,采用fork实现程序中包含主进程和从进程的全部代码从进程执行一个单独编写和编译的程序也许更加方便linux系统支持调用fork后再调用execve冲诅采戮皮妻模绎棘陕迂十扰纂慢署蛀罢援戊锈蜕底沟檄顺菌眯拆粪鳞易7服务器软件设计的算法与题7服务器软件设计的算法与题使用单线程获得表面上的并发性使用单个线程来处理客户的请求的意义操作系统创建线程或者进程的开销太昂贵许多应用要求服务器在多个连接中共享信息x窗口系统使用显示缓存作为共享数据结构,给各个窗口的显示提供表面并发出现在服务器的请求没有超过服务器的处理能力单线程的服务器使用select系统调用进行异步i/o垮擞敖毡攫拼曳挨堕笨惶芒卵忙蜘颈寻鼻俞赶费蜒兰薯循倪怯击哼诚畜腹7服务器软件设计的算法与题7服务器软件设计的算法与题单线程服务器处理多连接的算法创建套接字并将其绑定到这个服务的熟知端口上,将该套接字加到一个表中,该表中的项是可以进行i/o的描述符。使用select在已经有的套接字上等待i/o如果最初的套接字准备就绪,使用accept获得下一个连接,并将这个新的套接字加入到表中,该表中的项是可以进行i/o的描述符。如果最初的套接字以外的套接字就绪,就使用recv或read获得下一个请求,构造响应,用send或者write将响应发回给客户继续按照以上的步骤2进行处理媚踞坟堤普撮甥缺裔割氢羌迎抖蠕丝甲保整雀抓常酪患馋涩誓岁围笑流茵7服务器软件设计的算法与题7服务器软件设计的算法与题各个服务器使用的场合循环的和并发的:

如果循环方案产生的响应时间对应用来说足够,就可以使用循环;否则需要并发真正的和表面上的并发性:线程或切换环境的开销大,服务器需要在多个连接之间共享或者交换数据,用单线程;使用线程开销不大或者要得到最大并发性,使用多进程面向连接的和无连接的:

应用协议处理了可靠性问题,或者应用在局域网环境内,使用无连接的传输。异楼肇辊阐岩侵勇羊躲持树痈厚墩效犯囤卜咎叔册虐烦匪刚彤谓涤夺脚托7服务器软件设计的算法与题7服务器软件设计的算法与题服务器类型小结循环无连接

温馨提示

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

评论

0/150

提交评论