## 作业信息
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP |
---|---|
这个作业要求在哪里 | https://www.cnblogs.com/rocedu/p/9577842.html#WEEK11 |
这个作业的目标 | 自学教材《计算机科学概论》,自学教材《C语言程序设计》 |
作业正文 | https://www.cnblogs.com/zhu0307/p/16930742.html |
《C语言程序设计》
Q:对两种服务器模型的理解
A:C/S(客户端/服务器)模型:所有客户端都通过访问服务器来获取所需的资源。
C/S模型的逻辑很简单。服务器启动后,首先创建一个(或多个)监听socket,并调用bind函数将其绑定到服务器感兴趣的端口上,然后调用listen函数等待客户连接。服务器稳定运行后,客户端就可以调用connect函数向服务器发起连接 了。由于客户连接请求是随机到达的异步事件,服务器需要使用某种I/O模型来监听这一事件。I/O模型有多种,下图服务器使用的是I/O复用技术之一的select系统调用。当监听到连接请求后,服务器就调用accept函数接收它,并分配一个逻辑单元为新的连接服务。逻辑单元可以是新创建的子进程、子线程或者其它。下图中,服务器给客户端分配的逻辑单元是fork系统调用创建的子进程。逻辑单元读取客户请求,处理该请求,然后将处理结果返回给客户端。客户端接收到服务器反馈的结果之后,可以继续向服务器发送请求,也可以立即主动关闭连接。如果客户端主动关闭连接,则服务器执行被动关闭连接。至此,双方的通信结束。需要注意的是,服务器在处理一个客户请求的同时还会继续监听其他客户请求,否则就变成了效率低下的串行服务器了(必须先处理完前一个客户的请求,才能继续处理下一个客户请求)。下图中,服务器同时监听多个客户请求是通过select系统调用实现的。
C/S模型非常适合资源相对集中的场合,并且它的实现也很简单,但其缺点也很明显:服务器是通信的中心,当访问量过大时,可能所有客户都将得到很慢的响应。
P2P(点对点)模型
P2P(点对点)模型比C/S模型更符合网络通信的实际情况。它摒弃了以服务器为中心的格局,让网络上所有的主机重新回归对等的地位。
P2P模型使得每台机器在消耗服务的同时也给别人提供服务,这样资源能够充分、自由地共享。云计算机群可以看做P2P模型的一个典范。但P2P模型的缺点也很明显:当用户之间传输的请求过多时,网络的负载将加重。
下图中的P2P模型存在一个显著的问题,即主机之间很难互相发现。所以实际使用的P2P模型通常带有一个专门的发现服务器。这个发现服务器通常还提供查找服务(甚至还可以提供内容服务),使每个客户都能尽快地找到自己需要的资源。
##上周考试错题总结
## 学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 2/2 | 20/20 | |
第二周 | 200/200 | 2/4 | 18/38 | |
第三周 | 101/301 | 2/6 | 22/60 | |
第四周 | 200/501 | 2/8 | 30/90 | |
第五周 | 250/751 | 2/10 | 35/125 | |
第六周 | 250/1000 | 2/12 | 20/145 | |
第七周 | 250/1250 | 1/13 | 20/165 | |
第八周 | 250/1500 | 1/14 | 20/185 | |
第九周 | 250/1750 | 1/15 | 15/200 | |
第十周 | 250/2000 | 1/16 | 20/220 | |
第十一周 | 200/2200 | 1/17 | 20/240 | |
第十二周 | 200/2400 | 1/18 | 20/260 |