【网络编程】第2章(4)服务器软件设计概论

简介: 【网络编程】第2章(4)服务器软件设计概论

服务器软件设计概论

服务器的设计主要有以下三个方面:


传输协议:无连接和面向连接的访问


状态信息:无状态的和有状态的服务器


并发性:循环和并发服务器的实现


我们首先要有一个服务器设计算法,才能设计出服务器软件


概念性的服务器算法(最简单的)

1.创建一个套接字,将它绑定到一个熟知的端口上,并期望在这个端口上接受请求


2.进入无限循环,在该循环中,服务器接受来自客户的请求


3.处理这一请求,构造应答,然后将这个应答发回给客户


四种基本类型的服务器


一种循环的、面向连接的服务器的算法


1.创建套接字并将其绑定到他所提供服务的熟知端口上


2.将该端口设置为被动模式,使其准备为服务器所用


3.从该套接字上接受下一个连接请求,获得该连接的套接字


4.重复地读取来自客户的需求,构造响应,按照应用协议向客户发回响应;


5.当与某个特定客户完成交互时,关闭连接,并返回步骤3以接受新的连接。


循环的、无连接的服务器的算法


创建套接字并将其绑定到所提供服务的熟知端口上


重复地读取来自客户的请求,构造响应,按照应用协议向客户发回响应


并发的、无连接的服务器的算法


1.主1 创建套接字并将其绑定到所提供服务的熟知地址上。让该套接字保持为未连接的


2.主2 反复调用recvfrom接受来自客户的下一个请求,创建一个新的从进程(可能在一个新进程中)来处理响应


3.从1 从来自主进程的特定请求以及到该套接字的访问开始


4.从2 根据应用协议构造应答,并用sendto将该应答发回客户


5.从3 退出


并发的、面向连接服务器的算法


1.主1 创建套接字并将其绑定到所提供服务的熟知地址上。让该套接字保持非连接


2.主2 将该端口设置为被动模式,使其准备为服务器所用


3.主3 反复调用accept以便接受来自客户的下一个连接请求,并创建新的从线程或进程来处理响应


4.从1 由主进程传递来的连接请求(即针对连接的套接字)开始


5.从2 用该连接与客户进行交互:读取请求并发回响应


6.从3 关闭连接并退出。在处理完来自客户的所有请求后,从线程就退出


另外,单线程异步IO也能实现表面上的并发


1.创建套接字S并将其绑定到所提供服务的熟知端口上。将该套接字加到一个表中,该表中的项是可以进行I/O的描述符


2.使用select在已有的套接字上等待I/O


3.如果S准备就绪,使用accept获得下一个连接,并将这个新的套接字NSi加入到表中,该表中的项是可以进行I/O的描述符


4.如果是S以外的某些套接字准备就绪,就使用recv或read获得下一个请求,构造响应,用send或write将响应发回给客户


5.继续按照以上的步骤2进行处理


服务器设计算法选择要根据具体的应用和环境,但是服务器都会出现死锁的困扰,为什么会出现死锁?


如果服务器与客户通信使用了可能会阻塞的系统调用,一个不能正常工作的客户可能会引起单线程服务器死锁。在服务器中,死锁是一个严重的问题,因为它意味着一个客户的行为会使服务器不能处理其他客户的请求


相关文章
|
5月前
|
机器学习/深度学习 人工智能 运维
企业内训|LLM大模型在服务器和IT网络运维中的应用-某日企IT运维部门
本课程是为某在华日资企业集团的IT运维部门专门定制开发的企业培训课程,本课程旨在深入探讨大型语言模型(LLM)在服务器及IT网络运维中的应用,结合当前技术趋势与行业需求,帮助学员掌握LLM如何为运维工作赋能。通过系统的理论讲解与实践操作,学员将了解LLM的基本知识、模型架构及其在实际运维场景中的应用,如日志分析、故障诊断、网络安全与性能优化等。
148 2
|
3月前
|
缓存 负载均衡 监控
HTTP代理服务器在网络安全中的重要性
随着科技和互联网的发展,HTTP代理IP中的代理服务器在企业业务中扮演重要角色。其主要作用包括:保护用户信息、访问控制、缓存内容、负载均衡、日志记录和协议转换,从而在网络管理、性能优化和安全性方面发挥关键作用。
113 2
|
4月前
|
弹性计算 监控 数据库
制造企业ERP系统迁移至阿里云ECS的实例,详细介绍了从需求分析、数据迁移、应用部署、网络配置到性能优化的全过程
本文通过一个制造企业ERP系统迁移至阿里云ECS的实例,详细介绍了从需求分析、数据迁移、应用部署、网络配置到性能优化的全过程,展示了企业级应用上云的实践方法与显著优势,包括弹性计算资源、高可靠性、数据安全及降低维护成本等,为企业数字化转型提供参考。
108 5
|
5月前
|
存储 安全 数据可视化
提升网络安全防御有效性,服务器DDoS防御软件解读
提升网络安全防御有效性,服务器DDoS防御软件解读
131 1
提升网络安全防御有效性,服务器DDoS防御软件解读
|
4月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
1667 2
|
5月前
|
Kubernetes 应用服务中间件 nginx
搭建Kubernetes v1.31.1服务器集群,采用Calico网络技术
在阿里云服务器上部署k8s集群,一、3台k8s服务器,1个Master节点,2个工作节点,采用Calico网络技术。二、部署nginx服务到k8s集群,并验证nginx服务运行状态。
1634 1
|
5月前
|
存储 网络协议 Java
【网络】UDP回显服务器和客户端的构造,以及连接流程
【网络】UDP回显服务器和客户端的构造,以及连接流程
97 3
|
5月前
|
网络协议 Java API
【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
99 2
|
5月前
|
存储 网络协议 Java
【网络】UDP和TCP之间的差别和回显服务器
【网络】UDP和TCP之间的差别和回显服务器
111 1
|
5月前
|
安全 区块链 数据库

热门文章

最新文章