• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >服务器运维 > 不可不知 Linux操作系统网络服务器模型

不可不知 Linux操作系统网络服务器模型

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含linux服务器操作系统,linux服务器操作,linux操作系统,linux操作系统基础,linux实时操作系统等服务器相关知识,网友希望可以进行参考

Linux系统网络服务器模型主要有两种:并发服务器和循环服务器。
 
所谓并发服务器就是在同一个时刻可以处理来自多个客户端的请求;循环服务器是指服务器在同一时刻指可以响应一个客户端的请求。而且对于TCP和UDP套接字,这两种服务器的实现方式也有不同的特点。
 
1、TCP循环服务器:
 
首先TCP服务器接受一个客户端的连接请求,处理连接请求,在完成这个客户端的所有请求后断开连接,然后再接受下一个客户端的请求。
 
创建TCP循环服务器的算法如下:socket(……); //创建一个TCP套接字bind(……); //邦定公认的端口号listen(……); //倾听客户端连接while(1) //开始循环接收客户端连接{ accept(……);//接收当前客户端的连接while(1)
 
{ //处理当前客户端的请求read(……);process(……);write(……);} close(……); //关闭当前客户端的连接,准备接收下一个客户端连接} TCP循环服务器一次只处理一个客户端的请求,如果有一个客户端占用服务器不放时,其它的客户机连接请求都得不到及时的响应。因此,TCP服务器一般很少用循环服务器模型的。
 
2、TCP并发服务器:
 
并发服务器的思想是每一个客户端的请求并不由服务器的主进程直接处理,而是服务器主进程创建一个子进程来处理。
 
创建TCP并发服务器的算法如下:socket(……); //创建一个TCP套接字bind(……); //邦定公认的端口号listen(……);//倾听客户端连接while(1) //开始循环接收客户端的接收{ accept(……);//接收一个客户端的连接if(fork(……)==0) //创建子进程{ while(1)
 
{ //子进程处理某个客户端的连接read(……);process(……);write(……);} close(……); //关闭子进程处理的客户端连接exit(……) ;//终止该子进程} close(……); //父进程关闭连接套接字描述符,准备接收下一个客户端连接} TCP并发服务器可以解决TCP循环服务器客户端独占服务器的情况。但同时也带来了一个不小的问题,即响应客户机的请求,服务器要创建子进程来处理,而创建子进程是一种非常消耗资源的操作。
 
3、UDP循环服务器:
 
UDP服务器每次从套接字上读取一个客户端的数据报请求,处理接收到的UDP数据报,然后将结果返回给客户机。
 
创建UDP循环服务器的算法如下:socket(……); //创建一个数据报类型的套接字bind(……); //邦定公认的短口号while(1) //开始接收客户端的连接{ //接收和处理客户端的UDP数据报recvfrom(……);process(……);sendto(……);//准备接收下一个客户机的数据报}因为UDP是非面向连接的,没有一个客户端可以独占服务器。只要处理过程不是死循环,服务器对于每一个客户机的请求总是能够处理的。
 
UDP循环服务器在数据报流量过大时由于处理任务繁重可能造成客户技数据报丢失,但是因为UDP协议本身不保证数据报可靠到达,所以UDP协议是允许丢失数据报的。
 
鉴于以上两点,一般的UDP服务器采用循环方式4、UDP并发服务器把并发的概念应用UDP就得到了并发UDP服务器,和并发TCP服务器模型一样是创建子进程来处理的。
 
创建UDP并发服务器的算法如下:socket(……); //创建一个数据报类型的套接字bind(……); //邦定公认的短口号while(1) //开始接收客户端的连接{ //接收和处理客户端的UDP数据报recvfrom(……);if(fork(……)==0) //创建子进程{ process(……);sendto(……);}除非服务器在处理客户端的请求所用的时间比较长以外,人们实际上很少用这种UDP并发服务器模型的。
 
  4、多路复用I/O并发服务器:
 
创建子进程会带来系统资源的大量消耗,为了解决这个问题,采用多路复用I/O模型的并发服务器。采用select函数创建多路复用I/O模型的并发服务器的算法如下:
 
初始化(socket,bind,listen);while(1)
 
{设置监听读写文件描述符(FD_*);调用select;如果是倾听套接字就绪,说明一个新的连接请求建立{建立连接(accept);加入到监听文件描述符中去;}否则说明是一个已经连接过的描述符{进行操作(read或者write);}多路复用I/O可以解决资源限制问题,此模型实际上是将UDP循环模型用在了TCP上面。这也会带了一些问题,如由于服务器依次处理客户的请求,所以可能导致友的客户会等待很久。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 不可不知 Linux操作系统网络服务器模型

相关文章

  • 排查DHCP服务器故障的经验
  • 如何确定服务器整合项目中的整合率?
  • 虚拟机下NFS服务器的配置遇到的问题
  • 迁移VMware需熟知八大Hyper-V管理功能(1)
  • TechEd 2009-微软推出新的Windows兼容性测试工具
  • 知识:大型UPS调试前准备工作内容及步骤(1)
  • 提升NFS服务器的安全
  • 大数据下的数据分析-Hadoop架构解析(1)
  • 微软SQL Azure 服务器端架构解析
  • 邮件服务器故障排除典型案例

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • 因转载热点新闻事件导致服务器卡死分析(1)
    • 网管员牢记 10种较为常见的服务器管理错误
    • Gartner:服务器温度升到华氏75度以上
    • 实现局域网内批量更新 WSUS架设全攻略
    • 密码破解不再神秘 教你搭建密码破解服务器(1)
    • 利用缓存服务器实现负载均衡
    • Linux下Squid代理服务器的架设与维护
    • 浅谈服务器对百度和谷歌SEO的影响
    • CPU制造过程大揭秘[图](1)
    • 六招处理服务器数据意外丢失

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有