(计算机软件与理论专业论文)专业邮件服务系统的设计与实现.pdf_第1页
(计算机软件与理论专业论文)专业邮件服务系统的设计与实现.pdf_第2页
(计算机软件与理论专业论文)专业邮件服务系统的设计与实现.pdf_第3页
(计算机软件与理论专业论文)专业邮件服务系统的设计与实现.pdf_第4页
(计算机软件与理论专业论文)专业邮件服务系统的设计与实现.pdf_第5页
已阅读5页,还剩87页未读 继续免费阅读

(计算机软件与理论专业论文)专业邮件服务系统的设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

专业邮件服务系统的设计与实现 摘要 “专业邮件服务系统的设计与实现”是信息产业部“电子发展基金”支持 的“网络多功能服务器”项目下的一个子课题。在i n t e r n e t 迅猛发展的今天, 电子邮件已经成为信息交换的重要载体,是目前i n t e r n e t 上最常用的功能,而 国内市场上缺少适合中小型企业应用的具有商性能、高可靠性和卓越的安全性 的具有自主知识产权的专业邮件系统,f s m a i l 正是这样的专业邮件系统。 在本论文中,首先讨论和总结了电子邮件系统的基本理论、工作原理和相 关协议。通过对五种网络服务器内部架构的分析和比较,最后提出:基于进程 池的s m t p 服务器、p o p 3 服务器、w m g 服务器,基于单进程并发服务( s i n g e p r o c e s sc o n c u r r e n ts e r v i c e - - s p c s ) 架构适合用于实现高性能的m t a ,同时 分析并给出了单进程并发服务器中关键的网络u o 实现技术。f s m a i l 采用并实 现了异步事件驱动机制,所有网络l o 的实现使用了非阻塞方式;以动态数组实 现了基于面向对象的堆队列,屏蔽了堆数据的非一致性;使用了基于有限状态 机的多队列邮件调度机制,为后续版本的扩展性提供了良好的接口机制;服务 器内部实现了非阻塞的域名解析机制,并实现域名,地址缓存;实现了非阻塞的 用户数据库管理模块,并实现用户数据缓存;使用了统一的内存池管理机制, 既防止了内存泄漏,又提高了服务器的性能;最后,还实现了基于c j s 模式的 同志管理服务器,屏蔽了日志数据元的非一致性。 , 通过对f s m a i l 系统的功能和性能测试,表明服务器实现了设计目标并具有 较高的性能。上 关键词: 电子邮件j 日志管理、非阻塞i ( k 进程池j 单进程并发服务? 域名解析? s m t p ,, p o p 3 、m t a , 7 t 。 i 专业邮件服务系统的设计与实现 t h ed e s i g n & i m p l e m e n t a t i o no ff s m a i li sac h i l d s u b j e c to f “n e t w o r k m u l t i f u n c t i o ns e r v e r ap r o j e c tf u n d e db ye l e c t r o n i cd e v e l o p m e n tf u n d so f m i n i s t r y o fi n f o r m a t i o n i n d u s t r y w i t h t h e e x p l o s i v e l yg r o w i n g o ft h e i n t e r n e ta t p r e s e n t , e m a i li sb e c o m i n ga m a i nc a r r i e ro ft h ei n f o r m a t i o n e x c h a n g e a n dt h em o s tc o m m o nf u n t i o n m e a n w h i l e , i nt h ed o m e s t i cm a r k e t t h e r ei sal a c ko ft h e p r o f e s s i o n a l e m a i ls y s t e mw i t hh j 【g h p e r f o r m a n c e , r d i a n c ea n ds e c u r i t y , w h i c hi ss u i t a b l et om i d d l eo rs m a l le n t e r p r i s e sa n do f o u ro w n k n o w l e d g er i g h t s t h u s , f s m a i l i sc o m i n gi n t o b e i n g i nt h i s t h e s i s , f i r s f l 弦i fd i s c u s s e sa n ds u m m a r i z e st h eb a s i c t h e o r i e s , w o r k i n gp r i n c i p l e s a n dc o r r e s p o n d i n gp r o t o c o l s t h r o u g ha n a l y s i n ga n d c o m p a r i n gd i f f e r e n ti n t e r n a l a r c h i t e c t u r e so fn e t w o r ks e r v e r , i tb r i n g su p p r o c e s s p o o l - b a s e ds m t p s e r v e r , p o p 3s e r v e ra n dw m gs e r v e r , a n dt h e m t as e r v e rb a s e do nt h e s i n g l e p r o c e s sc o n c u r r e n t s e r v i c e ( s p c s ) a r c h i t e c u r e a tt h es a m et i m e , t h er e s o l v e m e n to fc r i t i c a ln e t w o r ki 0i 锚u e s r e l a t e dt os p c si sa n a l y z e da n df i g u r e do u t f s m a l la d o p t sa n di m p l e m e n t s t h e a s y n c h r o n o u s e v e n td r i v e nm e c h a n i s m , w i t ha l lt h o s en e t w o r ki o o p e r a t i o n si nt h es e r v e rw o r k i n g u n d e rt h en o n - b l o c k i n gs t y l e ;a c c o m p l i s h e s o b l e c t o r i e n t e dh e a pw i t ht h ed y n a m i ca r r a y , a d a p t e dt oa n yt y p eo fd a t a ; a d o p t st h em u l t i q u e u es c h e d u l i n gm e c h a n i s mb a s e do na 粥乩e a s i l yt o f u l f i l lt h ee x t e n t i o n so f d e f i v e r yf u n t i o n s ;f u l f i l l st h en o n - b l o c k i n gd o m a i n n a m er e s o l v e m e n tm e c h a n i s ma n dt h e c a c h i n g o ft h er e s o l v e d r e s u l t s ; i m p l e m e n t st h en o n - b l o c k i n g u s e rd a t a b a s em a n a g e m e n ta n dt h ec a c h i n go f t h eu s e rd a t ar e c e n t l ya c c e s s e d ;r i s e st h eu n i f i e dm e m o r y p o o lm a n a g e m e n t , 专业邮件服务系统的设计与实现 a v o i d i n g t h em e m o r y l e a k a g ea n di m p r o v i n gt h ep e r f o r m a n c e o ft h ef s m a i l s e r v e r ;l a s t l y , i m p l e m e n t st h el o gm a n a g e m e n t s e r v e rb a s e do nt h ec sm o d e , e l i m i n a t i n gt h ei n c o n s i s t e n c yo ft h el o g g i n gm e t a d a t aa n db e i n ga d a p t e dt o a n y k i n do f a p p l i c a t i o nl o g g i n g t h e t e s t i n ga b o u t t h ef u n c t i o n sa n dt h ep e r f o r m a n c eo ff s m a i l a p p r o v e s t h a tf s m a i lr e a c h e so u r d e s i g n i n gg o a l s a n dh a s a c c o m p l i s h e dh i g h p e r f o r m a n c e k e y w o r d s : e m a i l , l o gm a n a g e m e n t , n o n - b l o c k i n gi q p r o c e s sp o o l , s p c s ,d n s r e s o l v i n g , s m t i ! , p o p 3 ,m t a m 附件三 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名:j 薹姿址日期:c 旧年月弓日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名采拯础导师繇鳖 i 、 日期:o 汹3 年,月占日 专业邮件服务系统的设计与实现 第一章引言 1 1 、背景 电子邮件是i n t e m e t 服务的重要组成部分。随着i n t e r n e t 技术日新月异的 发展,电子邮件以其方便、快速、廉价和可靠的特点越来越赢得人们的喜爱。 现在,电子邮件已经成为学术界、商业界最为流行的一种通信方式,和国外进 行学术交流更少不了电子邮件。 从实际应用上讲,目前全球网页访问量中有6 6 以上与电子邮件相关。通过 电子邮件,用户可以与远地用户进行迅速、方便的联系,而且费用低廉。同时, 电子邮件可以以嵌入方式传送多种类型的信心,如文本、图象、声音、视频等, 还可以利用数字签名与认证、p o p 加密等技术来保证电子邮件传递的安全性与可 靠性。正是由于电子邮件系统的这些良好特性,越来越多的用户采用基于电子 邮件系统的应用,诸如电子杂志订阅系统、客户订货系统、新产品发布系统等 等。在商务界,电子邮件已经或正在取代信件、文件以至电话而成为最常用的 通信联络方式。对企业而言,电子邮件在企业业务中所发挥的作用已经越来越 突出。 分析目前的市场状况,我国的企业邮箱应用有三种方式:使用免费或收费的 公用电子邮箱、使用工作流软件、使用免费软件和共享软件。其中,由于投资 少和免维护,使用免费或收费的公用电子邮箱最普遍,但是它的弱点也很突出, 速度受i n t e r n e t 接入速度的限制、经常需要处理大量垃圾邮件,因为是公用系 统,也因此无法保证安全性和服务质量,目前,有些免费邮箱开始走向收费。 以m se x c h a n g e 和l o t u sn o t e s 为代表的工作流软件是以e m a i l 为基础实现工 作流业务的系统软件,它们功能丰富,扩展能力强,但价格十分昂贵,管理和 维护的复杂度也相应较高。以s e n d m a i l 和q m a i l 为代表的免费软件和共享软件 应用可随时下载新版本安装,其缺点是功能少、安装维护困难、缺乏技术支持, 因而需要管理员具备非常丰富的专业知识;而且不能将源码修改后的版本用于 商业用途。 从这三种企业电子邮箱应用方式中可以看出,市场上缺少适合中小型企业 应用的功能完善性价比高、管理维护简单的专业邮件系统。作为企业信息的主 专业邮件服务系统的设计与实现 要组成部分,这些企业强烈需要高性价比、极易实施和低维护成本的邮件系统 解决方案,需要企业邮件系统具备高性能、高可靠性和卓越的安全性。企业邮 件系统核心部分是服务器,国内企业对邮件系统的需求也主要是对构建邮件系 统的核心服务器的需求。 正是基于目前服务器市场的切实需求,我们8 0 2 0 教研室着手开发具有自主 知识产权的专业邮件系统。本文将对专业邮件系统的实施中的关键要素进行讨 论,并且设计和实现了一个邮件系统。 1 2 、论文内容组织 本文从邮件系统的概念入手,分析了i n t e r n e t 邮件服务系统的基本原理、 相关的网络协议及其和邮件服务器的关系。文中还分析了服务器设计中的关键 问题服务器内部结构及不同结构的比较和选择。在以上研究的基础上,设 计并实现了一个基于进程池和s p c s 的邮件服务系统。后续章节的主要内容安排 如下: 第二章理论基础及相关协议 主要讲述了i n t e r n e t 邮件服务的概念和基本原理以及相关应用层协议原理。 第三章服务器结构的研究 研究了e m a i l 系统实现中的关键问题服务器的内部结构,分析并比较 了五种服务器结构,在此基础上提出了:s p c s 构架适合用于实现高性能的e m a f l 系统的m t a 。最后分析s p c s 服务器实现中的网络非阻塞i o 技术及其实现。 第四章f s m a i l 系统的概要设计 主要讲述了f s m a f l 系统的框架以及各个模块的设计和架构。 第五章f s m a i l 系统的详细设计 主要讲述f s m a i l 系统各个模块的详细设计思想和各模块间接口。 第六章f s m a i l 系统的实现 着重讲述了f s m a f l 系统的实现中的关键技术、相关算法和主要流程等。 第七章功能及性能铡试 从功能和性能两方面对f s m a i l 系统进行了测试,测试结果表明系统实现了 设计的功能并达到较高的性能。 2 。 专业邮件服务系统的设计与实现 第二章理论基础及相关协议 2 1 、i n t e r n e t 电子邮件简介 为了保证电子邮件系统的正常运行,t c p i p 定义了一组协议,s m t p ( 简单 邮件传输协议) 、p o p 3 ( 邮局协议) 和i m a p ( i n t e r n e t 消息访问协议) 是主要 的几个协议。它们的关系如图2 1 所示: 图2 - 1i n t e r n e t 邮件传送示意图 电子邮件从发送到接收的过程如下:发送者利用m u a 写一封新邮件,通过 s m t p 协议发送给m t a 。如果该邮件是发送给本地用户的,m t a 则将其交给m d a , m d a 将该邮件投递到本地用户的邮箱中供用户通过m u a 读取:如果该邮件是发 送给远程用户的,m t a 则通过s m t p 协议将其发送给另一s m r p 服务器的m t a , 远程m 1 a 判断该邮件接收者是本地或者远程的作上述同样的操作,直到该邮件 存储到最终接收者的用户邮箱中。而接收者则利用m u a 通过p o p 3 i m a p 协议 读取邮件。 s m t p 和p o p 3 i m a p 服务器是服务器软件,它们运行在邮件服务器上。s m t p 服务器功能包括m t a 和m d a ,也就是负责接收待发送的邮件,并发送至目标邮 件服务器的s m t p 服务器,由该s h r p 服务器写入用户邮箱。实际上,由于s m t p 一3 , 专业邮件服务系统的设计与实现 服务器具有中转( r e l a y ) 功能,它并不区分邮件是来自用户机( 如普通p c ) 还 是其他s m t p 服务器。如果用户想在普通客户机( 没有s m t p 服务器的普通主机) 上接收邮件的话,他需要通过p o p 3 协议或i m a p 协议从邮件服务器上获取。不 同的是,p o p 3 服务器要求用户将邮件取回本地的普通客户机进行维护,而i m a p 则可以在服务器上直接维护,例如建立不同的邮件夹等。 2 1 1 、几个概念 1 m u a ( m a i lu s e r a g e n t ) 称为邮件用户代理,用户利用m u a 读取邮件, 回复邮件以及写新邮件并发送。m u a 种类繁多,有f o x m a i l 和微软的o u t l o o k 系 列等客户端工具,还有专用的w e b m a i l 等。 2 m t a ( m a i l t r a n s p o r ta g e n t ) 称为邮件传输代理,m t a 负责将电子邮件 从一个s m t p 服务器发送到另一个s m t p 服务器。 3 m d a ( m a i ld e l i v e r ya g e n t ) 称为邮件投递代理,m d a 负责将电子邮件 投递到最终目的地,实现上可以是m t a 的一部分。 4 e n v e l o p 称为信封,指明邮件的发送者和接收者的名字和地址,用于在 m t a 之间传输,分别是s 阿r p 协议的m a i lf r o m 命令和r c p r r f d 命令的参数。 5 h e a d e r 称为邮件信头,指明邮件的发送者和接收者的名字和地址,以 及诸如主题、发送日期、关键字等邮件细节信息,还有该邮件所通过的m t a 加 上的邮件路由信息和m e s s a g e - i d 字段等。 6 b o d y 称为邮件正文,是发送给收件人的数据( 包括文本或文件) ,一个 空白行将正文同信头分开。 邮件信头和正文构成了一封完整的邮件,其格式由r f c 8 2 2 规定。 2 2 、i n t e r n e t 邮件发送和接收协议s m t p 协议 s m t p ( s i m p l em a i lt r a n s f e rp r o t o c o l ,r f c8 2 1 1 2 8 2 1 ) 是一个用7 - b i t 基本 a s c i i 字符传送简单信文的邮件协议。它是一个独立的用户级协议,它要求一个 可靠的数据通道。在t c p i p 协议中,这个通道是8 - b i t 的t c p 数据流,因此s m t p 的7 - b i t 字节一律按照最高位为零的8 b t 字节进行传输。如果要传送8 b i t 数据, 需要用特殊的调制算法( 例如m i m e ) 将其转为7 - b i t 数据,在接收端再用相反的 算法将其复原。 专业邮件服务系统的设计与实现 s m t p 设计基于以下通信模型:针对用户的邮件请求,发送方s m t p 建立与接 收方s m q l p 之间建立一个双向传送通道。接收方s m t p 可以是最终接收者也可以 是中间传送者。s m t p 命令由发送方s m t p 发出由接收方s m t p 接收,而应答则 反方面传送。 一旦传送通道建立,s m t p 发送者发送m a i l 命令指明邮件发送者。如果s m t p 接收者可以接收邮件则返回0 k 应答。s m t p 发送者再发出r c p t 命令确认邮件接 收者是否可以到达。如果s m t p 接收者接收,则返回o k 应答;如果不能接收到, 则发出拒绝接收应答( 但不中止整个邮件操作) ,双方将如此重复多次。当接收 者收到全部邮件后会接收到特别的序列,如果接收者成功处理了邮件,则返回 0 k 应答。 陌习如 【j 鼢 瓣 蒸嚣 蓥瞧罐鼍p 图2 - 2s m _ r p 使用模型 s m t p 提供传送邮件的机制,如果接收方与发送方连接在同一个传送服务下 时,邮件可以直接由发送方主机传送到接收方主机;或者,当两者不在同一个 传送服务下时,通过中继s m t p 服务器传送。为了能够对s m t p 服务器提供中继 能力,它必须拥有最终目的主机地址和邮箱名称。 m a i l 命令参数是回复路径,它指定邮件从何处来;而r c p t 命令的参数是转 发路径的,它指定邮件向何处去。向前路径是源路径,而回复路径是返回路径 ( 它用于发生错误时返回邮件) 。 5 一 专业邮件服务系统的设计与实现 当同一个消息要发往不同的接收者时,s m t p 遇到了向不同接收者发送同一 份数据的复制品的问题,邮件命令和应答有一个比较独特的语法,应答也有一 个数字代码。 命令与应答对大小写不敏感,也就是说,命令和应答可以是大写,小写或 两者的混合,但这一点对用户邮件名称却不一定是对的,因为有的主机对用户 名大小写是敏感的。这样s m t p 实现中就将用户邮箱名称保留成初始时的样子, 主机名称对大小写不敏感。 命令与应答由a s c i i 字母表组成,当传送服务提供8 位字节传送通道,每7 位字符正确传送,而最高位被填充为0 。当指定一般的命令或应答格式后,参数 会由一些类似于语言的字符串表示出来,如” ”或” ”, 这里尖括号表示这是一种类似于语言的变量。 s m t p 的一个重要特点是“中转”( r e l a y ) 。一般地,用户可以选择任意一台 s m t p 服务器( 如a ) 来发送邮件( 只要能与该服务器建立传输层连接) ,若该服 务器与目标s m t p 服务器b 可以建立直接连接,则邮件将被直接送至目标服务 器b ;若不能建立直接连接,该s m t p 服务器将向其他所知的s m t p 服务器询问 路由,假如有一台s m t p 服务器c 可以与目标建立直接连接,或知道通向目标 的路由,则邮件被转至服务器c ,由服务器c 向目标b 转发。不管是从客户机 到服务器的发送还是服务器间的中转,s m i p 使用同一套指令来进行连接和数据 的接收发送,从而使得整个过程清晰简捷。 2 3 、i n t e r n e t 邮件提取协议 i n t e m e t 文档r f c l 7 3 3 定义了分布式消息访问系统的3 种操作模式或者称消 息访问机制:脱机方式( o f f l i n e ) 、联机方式( o n l i n e ) 和断开方式 ( d i s c o n n e c t e d ) 。在脱机方式中,邮件客户程序,即邮件用户代理( m u a ) 从 服务器将消息取回到本地机,并在服务器上将该消息删除,以后对消息的处理 完全在本地机上进行。在联机方式中,邮件客户程序直接对服务器上的消息进 行远程操作,不必将消息下载到本地。在断开方式中,邮件客户程序将服务器 上的消息缓存到本地机后就与服务器断开连接,然后用户“脱机”地对已缓存 到本地机的消息进行处理,若需要则可以重新连接到服务器并与服务器保持同 步。但这个模型与纯粹的“脱机”方式是不同的,因为断开方式下原始消息是 留在服务器上的,并且客户程序随后重新连接到服务器并对服务器和客户机消 6 专业邮件服务系统的设计与实现 息缓存之间的消息状态进行同步。p o p 3 协议是为脱机方式消息访问机制设计 的;i m a p 协议最初是为支持联机方式而设计的,同时也支持脱机和断开访问, 并且i m a p 4 还为以后的功能扩展做好了准备。 2 3 1 、p o p 3 协议 p o p 3 ( p o s to f f i c ep r o t o c o lv e r s i o n3 ,r f c1 9 3 9 ) 定义了客户机从邮件服务 器上获取邮件的一个简单的方法,它通过一组简单指令和应答实现与用户的交 互操作。例如,用户通过u s e r 指令和p a s s 指令实现身份认证,认证成功后可以 通过r e t r 指令收取邮件等。 加州大学针对s m t p 服务器s e n d m a i l ,开发了一个共享的p o p 3 服务器软件 p o p p e r ,该软件具有与s e n d m a i l 相同的支持多平台和多种类型邮件的优点,并 且在设计上采用结构清晰的状态机模型,其模型如下图所示。 l i s t 、r e a r 、d e l e 命令 图2 - 3p o p p e r 状态机模型 如上图所示,系统初始状态为a u l - h ,身份认证通过后进入w 矾n s a c t 状态, 系统邮箱被拷贝至一个临时文件。这一状态中,用户可以通过l i s t 命令列出邮件 头的信息,通过r e t r 指令将指定邮件取回本地机,通过d e l e 命令将指定邮件标 识为删除,等等。接到q u i t 指令后,进入u p d a t e 状态,系统将没有被标识为 删除的邮件反拷贝回系统邮箱,然后进入h a l t 状态退出。 专业邮件服务系统的设计与实现 2 3 2 、i m a p 协议 i m a p 4 ( i n t e m e tm e s s a g ea c c e s sp r o t o c o lv e r s i o n4r e v1 ,r f c2 0 6 0 ) 最初 是为支持联机方式而设计的,同时也支持脱机和断开访问方式,并且i m a p 4 还 为以后的功能扩展做好了准备。它具有很多p o p 3 不支持的功能:支持多级文件 夹,远程文件夹操作,支持共享文件夹,新到邮件通知,不用下载整个消息就 可以确定消息的组成部分,有选择地取出邮件的m i m e 信体部分,支持基于服务 器的搜索与选择以减少数据传输,设置标准的或用户定义的消息状态标记,联 机性能优化等。基于i m a p 的这些良好特性,使得i m a p 4 协议比p o p 3 协议更 适合现在地分布式计算环境。近来越来越多的电子邮件服务器软件已开始支持 i m a p 4 ,相应的邮件客户程序也将都会增加对i m a p 4 的支持。 i m a p 4 提供了一种客户机朋艮务器模型,客户机通过向服务器发送一些命令 来完成相应的操作。客户机能够发送的命令与它所处的状态有关。i m a p 定义了 3 种状态:未确认( n o n - a u t h e n t i c a t e ds t a t e ) 、已确认状态( a u t h e n t i c a t e ds t a t e ) 和已选定状态( s e l e c t e ds t a t e ) 。在不同的状态下,客户机可以向服务器发送的 命令是有区别的,某些命令还会导致状态的转换,如图2 - 4 所示: 如同p o p 3 ,i m a p 客户机向服务器提出t c p 连接请求,如果允许建立连 接,服务器返回一个初始问候,表明连接已建立,然后服务器等待客户机向其 发送请求。与p o p 3 客户机发送完一个命令后必须等待服务器响应不同的是, i m a p 允许客户机在不等待服务器响应的情况下发送多个命令请求。这就引起怎 样来区分服务器返回的响应对应于哪个命令的问题。i m a p 规定客户机发送命令 的时候必须带上一个标识此命令的标签,即完整的i m a p 命令应该是一个唯一 的标签及命令本身和可能的参数。每个返回的响应也包含了一个标签,利用此 标签就可以将该响应与相应的命令对应起来。对某些命令,服务器还会返回一 类“无标签”响应,这类响应使用特殊的星号( + ) 作为标签。服务器返回的响 应包含“o k ”、“n o ”、“b a d ”、“b y e ”、“p r e a u t h ”等用于表明状态的内 容。 与p o p 3 相比,i m a p 的命令要多得多,服务器返回的响应格式种类更多也 更为复杂,因而实现起来更为困难。 专业邮件服务系统的设计与实现 图2 - 4 i m a p 状态机 2 4 、d n s d n s 即是域名系统( d o m a i nn a m es y s t e m ) ,e m a i l 服务和d n s 分不开, 因为邮件地址中的主机通常都是用域名表示的。通常来说,我们虽然用到它, 但并不必在意它是怎么工作的。但是,在e m a i l 服务中,会频繁地用到它,在 有的时候( 在后面会讨论) 还不得不做有关域名解析的有关工作。所以,我们 清楚d n s 的工作的机制和它的消息格式是必要的。 d n s 由下面三个部分组成: 域名空间和资源记录,域名空间是一个树状结构,资源记录是与名字相 关的一些数据。域名空间是以域名作索引的,每个域名是这棵大的倒置 9 专业邮件服务系统的设计与实现 的树上的一个路径,这棵树就叫域名空间。这棵树有一个根,在每个交 叉点( 叫“节点”) ,d n s 树可以有任意个枝。树的深度限制在1 2 7 层。 每个节点用一个文本标识。长度最长6 3 个字符,“根”由空字符标识。 任意节点的完整的域名是由这个节点开始到根的沿途的标识组成,它们 之间用“”联接。 名字服务器是服务器程序,它保留域名树结构和相应的信息,它可以缓 存各种数据,保存域名树中的任何部分,但是通常它保存域名空间的一 个子集,如果需要查询其它信息可以通过指向其它名字服务器的地址寻 找。一个名字服务器是它所管理的域的认证权威,所有的认证信息组成 一个单元称为区,这些区可以分布于不同的服务器上以保证数据的冗 余。 解析器( r e s o l v e r ) 是向名字服务器提出查询请求并将结果返回给客户 的程序,它必须可以访问至少一个名字服务器,并将结果直接返回给用 户或再向别的名字服务器查询。它通常是用户可以访问的系统方法,在 解析器和用户程序之间不需要协议。有时也仅仅是链接到一个可执行程 序的库例程。 域名服务器怎样工作的并不是这里的任务,这里要做的是客户如何向域名 服务器提出请求,并解析它返回的响应。所以,首先我们要清楚这两者之间的 通信方式和消息报文。 2 4 1 、d n s 消息格式 d n s 查询和响应大多用的是u d p 报文 来传递,每个完整的消息包含在一个u d p 报文内。如果是用t c p 来传递的话,用2 字节的前缀来标明查询或响应的消息长 度,除了这2 字节外,d n s 报文的格式和 内容和u d p 一样。 d n s 消息按内容分为5 个区( 有时有 些区是空的) ,如图2 5 : 图2 - 5 d n s 消息格式 - 1 0 一 专业邮件服务系统的设计与实现 消息头( h e a d e r ) 是总是有的。消息头中的域说明剩余还有哪些区,这个 消息是查询还是响应消息,是否标准的查询以及其它一些选项等等。 询问( q u e s t i o n ) 区包含了向域名服务器发的问题的描述。这个区有几个 域:查询类型( q t y p e ) ,查询类别( q c l a s s ) ,和查询的域名( q n a m e ) 。 后面三个区的格式是相同的:连接起来的资源记录( r e s o u r c er e c o d e - - r r ) 链表。回答( a n s w e r ) 区包含的r r 是对询问的回答;授权( a u t h o r i t y ) 区的 r r 是指向授权域名服务器的;附加( a d d i t i o n a l ) 区的r r 是和查询有关,但 又不限于询问的回答。 2 4 2 、d n s 消息头格式 消息头的格式如下( 图2 - 6 ) : 图2 - 6 d n s 消息头格式 其中: i d 查询程序标识消息的1 6 b i t 的标识符,响应中的i d 是直接拷贝对应的查 询消息的。 q r 说明消息是查询( o ) 或响应( 1 ) 。 o p c o d e 说明查询的类型:0 一标准查询( q u e r y ) ;1 一反向查询 ( i q u e r y ) ;2 一服务器状态查询( s t a t u s ) ;其它,保留以后用。 a a 授权回答( 在响应中有效) 。说明返回响应的域名服务器是询问区的域 名的授权域名服务器。 t c 说明消息由于传输信道的限制被截短。 1 1 专业邮件服务系统的设计与实现 r d 希望递归查询( 可能在查询消息中设置,而拷贝到响应消息中) 。设置 r d ,就指示域名服务器进行递归查询。 r a 可以递归( 在响应中设置或清除) ,说明域名服务器是否支持递归查询 z 为将来使用保留 r c o d e响应码( 响应中设置) :0 - 无错误;1 一格式错误;2 一服务器失 败;3 一名字失败( 不存在查询的域) ;4 一未实施( 域名服务器不支持此查询) ; 5 一拒绝;6 1 5 ,为将来使用保留 q d c o u n t 询问区中的记录条数 a n c o u n t 回答区的记录条数 n s c o u n t 授权区的记录条数 a r c o u n t 附加记录区的记录条数 2 4 3 、d n s 请求与响应消息 询问区格式 询问区包含查询的“问题”,通常包含一条记录,包含以下域: 图2 - 7 询问区格式 其中: q n a m e 要查询的域名的标识,每个标识由长度和紧跟的内容组成。 q t y p e 说明查询的类型,它是t y p e 值的超集 q c l a s s 说明查询的种类,它是c l a s s 值的超集 回答区,授权区和附加区格式 一1 2 - 专业邮件服务系统的设计与实现 回答区,授权区和附加区都是相同的格式:有可变数量的资源记录,记录 的条数在消息头中说明,每个资源记录的格式如下: 图2 - 8 回答区、授权区和附加区格式 其中: n a m e 资源记录所属的域名 t y p e 资源记录类型,说明r d a t a 域的数据的含义 c a l s s 说明r d a t a 域的数据的类型 t r l 说明资源记录的有效时间( 秒) r d l e n g t hr d a t a 域的数据的长度 r d a t a 一个变长的字符串,格式由t y p e 和c l a s s 来决定 2 4 。4 、资源记录数据 资源数据包括两个和四个的8 位组的值,域名或者字符串。 域名 域名由标识系列来表示。每个标识有一个8 位组长的长度域,再跟它指示 长度的8 位组。每个域名的结尾值为0 ( 1 b y t e s 长) 。长度域的最高两位必须为 0 ,剩余位用于指示长度( 限制了标识最长为6 3 字节) 。 消息压缩 为了减少消息的长度,对一个消息中重复的域名采用压缩方式。这时,整 个域名或标识链的结尾由一个指向先前出现过的相同名字的指针代替。 指针的格式为: 1 3 专业邮件服务系统的设计与实现 11 i o f f s e t + 一- 4 - 一斗一一+ 一- - 4 - 一一+ 4 - - + 一一b 斗一一- 一斗一一+ 一- + - 一十一- - 4 - 一- 4 - 头两位均为1 。这样就把指针和一个标识区别开来。偏移量( o f f s e t ) 域 指示从消息开始( 如,消息头的i d 域的第一字节) 的偏移量。 字符串 字符串有一个字节的长度域,再紧跟此长度的字符,字符串长度的上限为 2 5 6 个字符( 包括长度域) 。 1 4 专业邮件服务系统的设计与实现 第三章服务器结构的研究 下面要讨论的是e m a i l 服务系统设计中的一个关键的问题服务器选择 怎样的内部结构。不同的选择将会影响到整个设计和实施阶段,而且不同的设 计结构对服务器的性能的影响也是相当大的。 3 1 、i o 模型 在u n i x 环境中有4 种i o 模型:阻塞i o ,非阻塞i o ,信号驱动i o , 异步i o 。后两者中,信号驱动i o 作为复杂的服务器的i o 驱动机制还不是很 成熟;又因为我们选择的运行平台为l i n u x ,l i n u x 下的异步i o ( p o s i x 1 的 a i ox x 系列) 的实现也还没完成,所以就暂不考虑这两种机制。 在计算量较少的服务器中,影响服务器性能的最大因素之一就是i o 的效 率,c p u 速率与外设速率的不匹配、以及与网络速率差异,导致了i o 问题是 实现高性能服务器的关键。 u n i x 中的i o 都是通过文件( 或文件描述符) 来操作的。我们可以把这些 文件分为两类:快速和慢速。这与文件的读写的速度并没有关系。如果对文件 的读写的请求的结果在可预测的时间内可以返回,那么这类文件就叫快速的。 反之对慢速文件的操作可能导致无限的等待。下表是文件的类型和它的i o 的分 类: 表3 - 1 文件类型与i o 分类 文件类型分类 块设备快速 管道慢速 套接字慢速 常规文件快速 目录快速 字符设备不定 一1 5 专业邮件服务系统的设计与实现 字符设备要根据情况而定,如d e v m e m 是快速文件,而终端( 通常 s t d i n ,s t d o u t , s t d e r r 与它相连) 就是慢速文件。 对快速文件进行读写操作总是能完成并迅速返回。对慢速文件的操作,可能 会阻塞,而且在返回时并一定完全完成了操作( 可能只读写了部分数据) 。在服 务器中要注意的也就是这些慢速文件。 阻塞i o 阻塞i o 调用要一直等到请求的操作完成。当调用i o 请求的系统调用时, 如不能马上完成( 读时缓冲区无数据,或写时缓冲区无空间) ,则进程会睡眠直 到条件满足时,继续有关操作后再返回。 非阻塞i o 当i 0 调用在非阻塞方式工作时,如遇到i o 操作不能马上完成,此时不会 让进程睡眠而是返回一个错误,程序就可以在此时继续做其它事,到适当的时 候再继续未完成的i o 操作。 3 2 、几种服务器结构 这里讨论的服务器结构并不限于e m a i l 服务器,在其它的网络服务器和单 机服务器中同样也可以应用。 最简单的服务器是单个进程顺序接受请求,处理完一个请求后再接受下一 个请求。在实际中,这是不可行的,网络服务器会同时接受到大量的请求,顺 序处理会导致客户响应时间过长,所以服务器必须能并发的处理这些请求。 大多数的i n t e r n e t 应用都遵循以下几步: a ,接受外来的t c p f l p 连接或创建一个与其它机器的连接。 b ,连接建立,通过t c p i p 双方交换命令( 通常是基于文本的) 。 c ,这些命令引起服务器上的多种行为的发生,如磁盘读写,调用外部程序 等。 通常,这些网络应用的性能体现在几个方面: a ,能尽快的完成并发任务 b ,有效的处理大量的等待( 由t c p f l p 引起,或者等待通信的另一方发下 一条命令) 1 6 专业邮件服务系统的设计与实现 要实现一个高性能的网络服务器,必须选择一个能够正确处理以上标准的 构架。f 面将讨论几种典型的服务器构架和它们各自的特点。 3 2 1 、多进程并发服务器 3 2 1 1 、1 个请求进程 最简单的能并发的为多个请求服务的服务器就是用f o r k 模式。由一个主进 程在简单循环中接受新的连接,然后对每个请求f o r k 一个新的进程来处理这个 请求。当请求处理完后,进程退出。 这个结构的好处在于主程序可以很简单,因此也就很稳定。另外一个好处 就是子进程不用担心内存泄漏,因为每个进程结束时退出,它占有的内存会由 操作系统清除。因为每个子进程都是独立的并且处理不同的网络连接,它们之 间就不需要同步机制。 这个结构在负载低的时候能达到比较好的性能。中等负载时在以下情形下 也能应付:在进程映象小的情况下,或者用了针对应用的高效措施,或者应用 本身不会有太多的并发任务。如果进程使用的缓存和总的进程数不是太多,那 么在多c p u 的环境中也是性能较高的。 由于f o r k 系统调用有相当大的开销,而且进程是一个系统中最大的实体, 通常系统中能同时存在的进程数也是有限的,而f o r k 服务器处理一定数量的连 接就要有同等数量的进程来服务,这样不仅消耗的资源客观,还存在上下文切 换的较大开销。所以这种结构的处理能力不高,通常在几个十几个请求秒。 3 2 1 2 、进程池 这种服务器不是对每个请求都创建一个新的进程,而是预先创建( p r e f o r k ) 一定数量的进程等待处理请求。这些进程直驻留,可以并行的处理请求。当 一个进程处理完一个请求后,再接受下一个请求。 与前者相比,预创建进程的服务器消除了f o r k 系统调用的开销。它的性能 是相当高的,每秒能处理的连接数是简单的f o r k 服务器的2 1 0 倍。 这种预创建进程的并发服务器思想如下: 父进程首先预创建若干个子进程,保存在进程池中,当没有客户连接时,父 进程将进程池中每个子进程的状态标志为空闲。当客户连接到达后,父进程可 一1 7 专业邮件服务系统的设计与实现 以从进程池中选择一个空闲的子进程为该客户服务,然后将这个子进程的状态 标志为忙。当子进程服务结束后,向父进程发送一个完成消息,接着继续等待 父进程分配给它的下一个新任务:父进程接收到这个子进程的完成消息后,将 这个子进程标志为空闲,以后又可能选择这个子进程,这样子进程将可以实现 重用。 父进程可以根据负载的轻重情况在一定范围动

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论