【网络编程】第2章(1) 客户-服务器模型与并发处理(更新)

简介: 【网络编程】第2章(1) 客户-服务器模型与并发处理

文章目录


客户-服务器模型与并发处理

了解分布式应用的基本概念

分布式计算的概率:提供一个透明的环境,隐藏计算机和服务的地理位置


分布式应用就是在分布式计算的基础之上完成的应用程序,软件设计人员必须掌握设计和实现分布式应用程序时相关的原则和技术


应用层协议

在TCP/IP的一些更底层协议基础上,设计的一些用于特定的应用协议。比如说,要开发一个新软件,我就自定义了一个协议用于该软件的信息通信


TCP/IP包含了许多标准应用协议,如:文件传送、远程登陆、电子邮件等


客户—服务器模型的术语和概念

该模型的设计之初就是为了解决**“会聚点问题”**:人工分别启动两台独立机器上的两个程序,并让其通信问题


客户—服务器模型,顾名思义就是网络中的端系统分为了客户和服务器两个角色,它要求服务器进行通信的应用进程中,必须在启动执行后(无期限地)等待客户与其联系


下面是一些比较重要的概念


1.服务器的设计与实现更加的困难,主要由于其 特权和复杂性

特权是因为服务器软件要访问受OS保护的对象,因此服务器软件的执行需要一些系统特权


鉴别-验证用户身份


授权-允许客户访问服务器提供的服务


数据安全-确保数据不被无意泄漏或损坏


保密-防止未经授权访问信息


保护-确保网络应用程序不滥用系统资源


2.标准和非标准客户软件

应用程序可以调用标准的TCP/IP服务,也可以调用自定义的服务,将服务器-客户模型下的程序分为了标准和非标准客户软件


3.服务的参数化

允许用户指明协议端口号的软件,将服务器的服务,区分到了端口上,比如说79端口提供时间服务等等


4.无连接和面向连接的服务器

网络层分为采用TCP面向连接的服务,还是UDP无连接的服务


5.有状态和无状态服务器

状态信息:服务器维护的与客户交互的活动信息

服务器如果有状态,就会记录之前的客户发来的信息,如果没有状态就不会记录。换言之,客户所有请求的报文都不依赖之前发送的报文,就是无状态的服务器,反之,服务器就是有状态的


6.标识客户(在有状态服务器的基础上)

有状态服务器记录(标识)客户信息,常用有两种方法,端点和句柄。


端点就是客户的ip和端口,这个有时会经常改变,所以作为客户表示不可靠


句柄,类似session,服务器内部用一个整数来标识客户


7.有限状态

有状态服务器不可能永远维持状态,有状态的应用协议需要终止


8.有状态服务器和无状态服务器设计的复杂性

有状态服务器在实际互联网中,机器可能崩溃或重启,而报文可能丢失、重复或乱序。采用有状态的设计会导致复杂的应用协议,而这种应用协议难于设计、理解和正确实现


只有当应用协议被设计成对操作是幂等的,服务器才能是无状态的,因为无状态的服务器不依赖客户之前发送的报文


服务器并发处理

服务器中的并发

服务器是怎么能够并发处理事件的呢?


服务器调用的是操作系统的方法,服务器之所以能够并发,是因为操作系统为支持并发处理而提供了接口(方法),比如说fork()等等,它能让服务器创建新的进程来同时处理多个不同的事务。


服务器创建并发进程

Fork函数:将运行的程序分为两个几乎完全一样的进程


用户执行该并行程序,OS创建一个含单线程的进程执行代码;当线程执行到fork调用时,OS复制进程,在新进程中创建一个线程,并让原来的线程和新创建的线程继续执行


fork()创建了两个进程来执行相同的副本没有任何意义,所有要对两个进程进行区分,称为进程分离,操作系统于是增加了fork()的返回值,如果是子进程,fork()返回是0,如果是父进程就返回新建进程标识符(非零),创建失败返回失败码


一个进程只能执行它最开始编译的程序,不能改变的话,对服务器来说意义非常小,所以操心系统提供了一个方法,可以用新程序的代码来代替当前正在执行的进程所运行的代码,该调用不影响其他进程,系统调用方法是execve


Execve对于需要处理不同服务的服务器而言特别重要,只要将不同服务的代码相互分开,就能将每种服务作为一个独立的程序进行构建、编写和编译,它和fork()地位差不多


并发的原理——时间分片

时间分片(timeslicing)机制试图在所有线程间平均分配可用的处理器资源,当多个并发线程共享可用的CPU时,系统采用时间分片机制实现并发


时间分片设计原则:在协议设计时,应将上下文切换次数降到最低程序设计人员应根据需要选择服务器软件的并发算法使得并发处理带来的好处大于上下文切换的开销


并发和异步I/O

关于异步这个概率就不详细解释了,就提一下,异步I/O能够实现并发


相关文章
|
24天前
|
机器学习/深度学习 人工智能 运维
企业内训|LLM大模型在服务器和IT网络运维中的应用-某日企IT运维部门
本课程是为某在华日资企业集团的IT运维部门专门定制开发的企业培训课程,本课程旨在深入探讨大型语言模型(LLM)在服务器及IT网络运维中的应用,结合当前技术趋势与行业需求,帮助学员掌握LLM如何为运维工作赋能。通过系统的理论讲解与实践操作,学员将了解LLM的基本知识、模型架构及其在实际运维场景中的应用,如日志分析、故障诊断、网络安全与性能优化等。
55 2
|
3天前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
13 2
|
4天前
|
运维 网络协议 算法
7 层 OSI 参考模型:详解网络通信的层次结构
7 层 OSI 参考模型:详解网络通信的层次结构
13 1
|
30天前
|
存储 安全 数据可视化
提升网络安全防御有效性,服务器DDoS防御软件解读
提升网络安全防御有效性,服务器DDoS防御软件解读
42 1
提升网络安全防御有效性,服务器DDoS防御软件解读
|
15天前
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
|
17天前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
191 2
|
20天前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
65 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
29天前
|
机器学习/深度学习 编解码 算法
【深度学习】经典的深度学习模型-01 开山之作:CNN卷积神经网络LeNet-5
【深度学习】经典的深度学习模型-01 开山之作:CNN卷积神经网络LeNet-5
39 0
|
5天前
|
机器学习/深度学习 人工智能 弹性计算
什么是阿里云GPU云服务器?GPU服务器优势、使用和租赁费用整理
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等多种场景。作为亚太领先的云服务提供商,阿里云的GPU云服务器具备灵活的资源配置、高安全性和易用性,支持多种计费模式,帮助企业高效应对计算密集型任务。
|
7天前
|
存储 分布式计算 固态存储
阿里云2核16G、4核32G、8核64G配置云服务器租用收费标准与活动价格参考
2核16G、8核64G、4核32G配置的云服务器处理器与内存比为1:8,这种配比的云服务器一般适用于数据分析与挖掘,Hadoop、Spark集群和数据库,缓存等内存密集型场景,因此,多为企业级用户选择。目前2核16G配置按量收费最低收费标准为0.54元/小时,按月租用标准收费标准为260.44元/1个月。4核32G配置的阿里云服务器按量收费标准最低为1.08元/小时,按月租用标准收费标准为520.88元/1个月。8核64G配置的阿里云服务器按量收费标准最低为2.17元/小时,按月租用标准收费标准为1041.77元/1个月。本文介绍这些配置的最新租用收费标准与活动价格情况,以供参考。