七服务器软件设计算法和问题.pptxVIP

  • 2
  • 0
  • 约6.49千字
  • 约 38页
  • 2018-06-03 发布于上海
  • 举报
七服务器软件设计算法和问题

本讲概要无连接和面向连接的服务器访问无状态和有状态的服务器应用循环和并发的服务器的实现电子科大计算机学院计算机通信与网络编程服务器端socketbindlistenacceptrecvsendclose服务器算法简单服务器的算法:创建套接字绑定到一个熟知端口期望在这个端口上接收请求进入无限循环,接受客户请求并应答只适用于最简单的服务…电子科大计算机学院计算机通信与网络编程这样情况: 联系这个简单服务器的第1个客户要求传送1个巨大的文件(200兆B),而联系到这个服务器的第2个客户要求传送1个小的文件(20B) 如果服务器一直等到第1个文件传送完毕才考虑传送第2个文件,那第2个客户就将为了1个小文件的传送而等待一段不合理的时间 因为请求很小,第2个用户期望可以得到立即的处理。但如果按照简单服务器算法来处理这样情况可能不合理。 要考虑现在使用的服务器是如何处理的?简单服务器的算法有时候并不合理并发服务器和循环服务器循环服务器:一个时刻只处理一个请求 并发服务器:一个时刻可以处理多请求常见的并发技术:多线程并发技术:(多数只提供表面并发)执行多个线程,每个线程处理一个请求单线程异步I/O技术:计算量小,主要是异步I/O管理多个连接多进程并发技术:并发处理多个请求,而不是指下层是否使用了多个并发线程电子科大计算机学院计算机通信与网络编程并发服务器和循环服务器循环服务器 (1)特点:容易构建,但是性能差(因这样的服务器要使客户等待服务) (2)应用场合:如果服务器的访问量不大,而且客户的每个请求所需要的处理时间短并发服务器 (1)特点:难以构建和设计,但是性能好 (2)应用场合:如果服务器的客户访问量较大,而且每个请求可能需要较长的I/O处理时间,各个请求所要求的处理时间变化很大,服务器运行在具有多个处理器的计算机电子科大计算机学院计算机通信与网络编程面向连接和无连接的访问连接性是问题是传输协议的中心,TCP/IP提供了两种协议:TCP, UDP使用TCP的服务器是面向连接的服务器使用UDP的服务器是无连接的服务器选择面向连接或者无连接的服务,依赖于应用协议设计上使用面向连接的传输服务的应用协议时,如果实际中使用了无连接的传输协议时,将可能不能正确地运行或者不能有效运行。电子科大计算机学院计算机通信与网络编程传输协议的语义UDP的语义多对多通信不可靠服务缺乏流控制报文模式TCP的语义点到点通信建立可靠连接可靠交付(按序)具有流控的传输双工传输流模式选择传输协议,需要考虑应用程序要求的语义电子科大计算机学院计算机通信与网络编程面向连接的服务器面向连接的服务的优点:易于编程传输协议会自动处理分组丢失,分组失序,服务器不需考虑自动验证数据差错,处理连接状态面向连接的服务的缺点:对每个连接都有一个单独的套接字,耗费更多的资源(而os必须永远运行而不能耗尽资源)在空闲的连接上不发送任何分组始终运行的服务器会因为客户的崩溃,导致无用套接字的过多而耗尽资源,导致服务器终止运行电子科大计算机学院计算机通信与网络编程无连接的服务器优点:没有资源耗尽问题缺陷:需要自己完成可靠通信问题必要时,需要一种自适应重传的复杂技术,需要程序员具有相当的专业知识对于可靠通信的场合,尽量使用tcp是否需要组播或者广播是考虑选择何种传输方式的一个因素tcp只提供点到点通信,不允许应用访问广播或组播支持组播或者广播的服务器必须是无连接的udp电子科大计算机学院计算机通信与网络编程四种基本类型的服务器循环的或者并发的使用面向连接的或者无连接的传输循环的无连接循环的面向连接并发的无连接并发的面向连接电子科大计算机学院计算机通信与网络编程请求处理时间循环服务器是最简单的,客户按照顺序等待。是否能够满足要求取决于所需的反应时间观测响应时间:客户发送请求到服务器响应之间的全部时延。请求处理时间:服务器处理单个孤立的请求所花费的时间。当服务器正处理一个已经存在的请求时,另一个请求到达了,系统将这个新的请求排队电子科大计算机学院计算机通信与网络编程请求处理时间当服务器有一个队列的请求需要处理时,观测响应时间请求处理时间当服务器有一个队列的请求需要处理时,观测响应时间如何变化?电子科大计算机学院计算机通信与网络编程循环的面向连接的服务器算法通过TCP的面向连接的循环服务器算法1、创建套接字并将其绑定到它所提供服务的熟知端口上;2、将该端口设置为被动模式,使其准备为服务器所用;3、从该套接字上接收下一个连接请求,获得该连接的新的套接字;4、重复地读取来自客户的请求,构造响应,按照应用协议向客户发回响应;5、当某个特定客户完成交互时,关闭连接,并返回步骤3以接受新的连接。电子科大计算机学院计算机通信与网络编程用INADDR_ANY绑定熟知端口服务器需要创建套接字并将其绑定到所熟知的端口上getp

文档评论(0)

1亿VIP精品文档

相关文档