第06讲 服务器软件设计的算法和问题
本文由Richard007_lin贡献
ppt1。
《计算机通信与网络编程》 计算机通信与网络编程》
第六讲 服务器软件设计的算法和问题
电子科技大学计算机学院
服务器软件设计概述
循环和并发的服务器的实现 无连接和面向连接的服务器访问 无状态和有状态的服务器应用 简单服务器的算法:
创建套接字 绑定到一个熟知端口 期望在这个端口上接收请求 进入无限循环,接受客户请求并应答 只适用于最简单的服务… 只适用于最简单的服务…
计算机通信与网络编程 电子科大计算机学院
并发服务器和循环服务器
循环服务器:一个时刻只处理一个请求 并发服务器:一个时刻可以处理多请求 多数只提供表面并发:执行多个线程,每个线程 处理一个请求 使用线程的可能性:计算量小,主要是异步I/O, 使用线程的可能性:计算量小,主要是异步I/O, 便于同时使用多个通信信道 并发处理多个请求,而不是指下层是否使用了多 个并发线程
循环服务器容易构建,但是性能差;并发 服务器难以构建和设计,但是性能好 计算机通信与网络编程 电子科大计算机学院
面向连接和无连接的访问
连接性问题是传输协议的中心,TCP/IP提 供了两种协议:TCP, UDP
使用TCP的服务器是面向连接的服务器 使用TCP的服务器是面向连接的服务器 使用UDP的服务器是无连接的服务器 使用UDP的服务器是无连接的服务器
选择面向连接或者无连接的服务,依赖于 应用协议
设计上使用面向连接的传输服务的应用协议时, 如果实际中使用了无连接的传输协议时,将可能 不能正确地运行或者不能有效运行。
计算机通信与网络编程 电子科大计算机学院
传输协议的语义
TCP的语义
点到点通信 建立可靠连接 可靠交付 具有流控的传输 双工传输 流模式 UDP的语义 UDP的语义
多队多通信 不可靠服务 缺乏流控制 报文模式
选择传输协议, 选择传输协议,需要考虑应用程 序要求的语义
计算机通信与网络编程 电子科大计算机学院
面向连接的服务器
面向连接的服务的优点:
易于编程
自动处理分组丢失,分组失序 自动验证数据差错,处理连接状态
面向连接的服务的缺点:
对每个连接都有一个单独的套接字,耗费更多的 资源 在空闲的连接上不发送任何分组 始终运行的服务器会因为客户的崩溃,导致无用 套接字的过多而耗尽资源 计算机通信与网络编程 电子科大计算机学院
无连接的服务器
优点:没有资源耗尽问题 缺陷:需要自己完成可靠通信问题
必要时,需要一种自适应重传的复杂技术,需要 程序员具有相当的专业知识 对于可靠通信的场合,尽量使用tcp 对于可靠通信的场合,尽量使用tcp
是否需要组播或者广播是考虑选择何种传输 方式的一个因素
支持组播或者广播的服务器必须是无连接的,今 后会不断增加这样的应用。 计算机通信与网络编程 电子科大计算机学院
故障、可靠性和无状态