




已阅读5页,还剩56页未读, 继续免费阅读
(通信与信息系统专业论文)pop3电子邮件客户端及服务器的设计与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大连理工大学硕士学位论文 摘要 随着互联网技术及网络办公化的发展,电子邮件已经成为人们主要的通信方式之 一。电子邮件系统包括客户端和服务器两部分,在当前流行的两大操作系统中,w i n d o w s 操作系统以其界面友好、操作方便著称,但基于w i n d o w s 平台的邮件系统一般不公开 源码,人们无法根据具体需求完善或裁减其功能;虽然u n i x 操作系统网络服务功能强 大,但它要求管理员懂得邮件系统结构并具备丰富的u n i x 平台开发经验,更适合安装 大型的邮件服务器。目前,许多企业或高校希望拥有自主研发的邮件服务系统,这样不 仅便于内部管理,也可以根据实际需要不断改进其功能。因此,我们自主研发了小型邮 件系统d s p m a i l 。 本文设计并实现了d s p m a i l 电子邮件系统接收邮件的功能,包括p o p 3 客户端和 p o p 3 服务器,完成了从服务器到客户端的邮件传输过程。本文的主要工作如下: ( 1 ) 研究学习了网络应用程序及套接口编程的基本理论和方法,使用w i n d o w s s o c k e t s 设计完成了p o p 3 客户端和服务器通信的流程: ( 2 ) 深入研究、分析了电子邮件的常用协议,并在邮件客户端和服务器实现了p o p 3 电子邮件协议。 ( 3 ) 在深入剖析r f c 8 2 2 协议和m i m e 电子邮件格式的基础上,基于v i s u a lc + + 平 台开发了电子邮件客户端接收程序。该程序不仅实现了与局域网内的服务器进行通信, 而且可以接收广域网常用邮件服务器上的邮件,对不同的邮件格式具有自适应接收的能 力; ( 4 ) 研究实现了邮件头和邮件正文中常用的各种编解码方式,成功降低了乱码的出 现频率,支持g b 2 3 1 2 中文字符集; ( 5 ) 采用多线程编程方法,实现了多用户同时收取邮件的功能,并设置了管理员权 限,可以远程管理服务器邮箱,进行添加或删除用户帐户等操作; ( 6 ) 实现服务器后台服务功能。将服务器程序设置为操作系统后台服务程序,可以 随操作系统同时启动,也可以在操作系统启动后手动开启邮件服务器功能; 最后,对d s p m a i l 邮件系统的兼容性和p o p 3 服务器性能进行测试。实验结果表明, 该p o p 3 邮件系统实现了客户端和服务器的基本收发功能。p o p 3 服务器在占用较小资 源的情况下,能够快速、稳定地处理多个客户端连接请求。 关键词:电子邮件;网络应用程序;p o p 3 邮件协议;m i m e :后台服务 p o p 3 电子邮件客户端及服务器的设计与实现 d e s i g na n di m p l e m e n t a t i o no fp o p 3e - m a i ls e r v e ra n dc l i e n t a b s t r a c t w i t ht h ed e v e l o p m e n to fi n t e r a c tt e c h n o l o g y e m a i lh a sb e c o m ea ni m p o r t a n t c o m m u n i c a t i o nm e a n si nd a i l yl i f e t h ee m a i ls y s t e mi n c l u d e se m a i lc l i e n ta n ds e r v e r e m a i l c l i e n ti so f t e ni n s t a l l e do nw i n d o w so p e r a t i n gs y s t e m ( 0 s ) a n de m a i ls e r v e ri so f t e ni n s t a l l e d o f fu n i xo s 。h o w e r v e r ,i ti sd i f f i c u l tt oe n h a n c et h e s ee m a l ls y s t e m sf o rc o m m e r c i a lr e a s o n s o rf o rt h ec o m p l e xo p e r a t i o nm e t h o d s n o w a d a y s ,m a n ye n t e r p r i s e sa n du n i v e r s i t i e sw i s ht o h a v et h e i ro w ne m a i ls y s t e m ,s ot h a tt h e yc a l lm a n a g ec o n v e n i e n t l ya n di m p r o v et h es y s t e m c o n t i n u o u s l y s ow ed e v e l o pd s p m a i l w h i c hc a ns a t i s f yt h e s ed e m a n d s n i st h e s i sd e s i g n sa n di m p l e m e n t sd s p m a i ls y s t e m i n c l u d i n gp o p 3c l i e n ta n dp o p 3 s e r v e r t h ed s p m a i ls y s t e mc a l lt r a n s p o r te m a i lf r o mp o p 3s e r v e rt op o p 3c l i e n t t h et h e s i s c o n t a i n st h ef o l l o w i n gs e v e n p a r t s : ( 1 ) s t u d yt h eb a s i ct h e o r ya n dm e t h o do fn e t w o r ka p p l i c a t i o na n ds o c k e tp r o g r a m m i n g , a n di m p l e m e n tt h ec o m m u n i c a t i o nf l o wb e t w e e np o p 3c l i e n ta n ds e r v e ru s i n gw i n d o w s s o c k e t s ; ( 2 ) a n a l y z et h em a i ne m a i lp r o t o c o l st h o r o u g h l y ,a n dr e a l i z ep o p 3p r o t o c o lo ne m a i l c l i e n ta n ds e r v e r ; ( 3 ) d e v e l o pe m a i lc l i e n tp r o g r a mf o rr e c e i v i n ge m a l lo nv i s u a lc + + p l a t f o r mo nt h e b a s eo f a n a l y z i n gr f c 8 2 2a n dm i m ep r o t o c o lf o re m a i lf o r m a t n ec l i e n tc a nc o m m u n i c a t e w i t he m a i ls e r v e ri nl a na n dw a n , a n di ti sa l s oa d a p t i v et od i f f e r e n te m a i lf o r m a t s ; ( r e s e a r c hk i n d so fe n c o d e ra n dd e c o d e rm e t h o d sf o re m a i lh e a d e ra n db o d y ,a n d r e d u c et h ee r r o rp r o b a b i l i t ys u c c e s s f u l l y ; ( 5 ) e n s u r em a n yu s e r st or e c e i v em a i l ss i m u l t a n e o u s l yu s i n gm u l t i t h r e a d m a i l b o xc a n b eo p e r a t e dr e m o t e l y ,s u c ha sa d d i n go rd e l e t i n gm a i l b o x ; ( 6 ) i m p l e m e n ta p o pa u t h e n t i c a t i o nc o m m a n da n da n a l y z et h es e c u r i t y o fm d 5 a r i t h m e t i c ; ( 7 ) i n s t a l lb a c k g r o u n ds e r v i c e t h es e r v e rc a nb es p e c i f i e dt ob es t a r t e da u t o m a t i c a l l y d u r i n gs y s t e ms t a r t u po rs t a r t e db yd e m a n d s a f t e rs y s t e ms t a r t u p ; t e s t i n gr e s u l t ss h o wt h a tt h ep o p 3e m a i ls y s t e ma c h i e v e st h ep l a n n e df u n c t i o n , a n di t c a na l s oc o o p e r a t ew i t hs m t pe m a i ls y s t e m 。 k e yw o r d s :e m a i l ;n e t w o r ka p p l i c a t i o np r o g r a m ;m i m e ;b a c k g r o u n d s e r v i c e 独创性说明 作者郑重声明:本硕士学位论文是我个人在导师指导下进行的研究工 作及取得研究成果。尽我所知,除了文中特别加以标注和致谢的地方外, 论文中不包含其他人已经发表或撰写的研究成果,也不包含为获得大连理 工大学或者其他单位的学位或证书所使用过的材料。与我一同工作的同志 对本研究所做的贡献均已在论文中做了明确的说明并表示了谢意。 作者签名:筮垒焦日期:立: :生 大连理工大学硕士学位论文 大连理工大学学位论文版权使用授权书 本学位论文作者及指导教师完全了解“大连理工大学硕士、博士学位论文版权使用 规定”,同意大连理工大学保留并向国家有关部门或机构送交学位论文的复印件和电子 版,允许论文被查阅和借阅。本人授权大连理工大学可以将本学位论文的全部或部分内 容编入有关数据库进行检索,也可采用影印、缩印或扫描等复制手段保存和汇编学位论 文。 作者签名:垒垒缝 导师签名: 笸! ! 年l 月生日 大连理工大学硕士学位论文 致谢 在本论文即将完成之际,我的硕士研究生生活也将结束。在此,我非常荣幸的能有 机会表达我的感激之情。 本论文是在导师殷福亮教授的悉心指导下完成的。从研究方向、论文的选题到论文 的完成,殷老师都给予了我精心的指导和孜孜不倦的教诲。导师渊博的知识、严谨的治 学作风、敏捷的思维、乐观豁达的人生态度都给我留下深深的印象,促使我不断进步。 从我申请硕博连读到后来决定参加工作,殷老师自始至终都给予了我极大的支持和鼓 励,帮我逐步实现梦想。谨此向殷老师表示最真挚的感谢,感谢您不仅教予我学识,还 培养了我积极向上、百折不挠的意志。 在我学习、科研、生活中,陈老师也给予了我极大的指导和帮助。陈老师为人正直 谦和,对学术理论一丝不苟,对教研室事务认真负责,这些品质都潜移默化的影响着我, 成为我学习的楷模。每当遇到问题,都能得到陈老师细致而不厌其烦的讲解与开导,使 我在学习方面不断进步,在思想方面不断成熟。感谢陈老师,感谢您在这近三年的时间 里所给予我的无形及有形的帮助与指导。 还要感谢传授我专业知识的郭成安老师、邱天爽老师、马晓红老师和魏东兴老师, 从你们那里,我学到了通信与信息处理方面的研究生专业知识。 感谢钱诚慎同学,此论文的完成离不开他的合作,他为我整个论文的完成提供了必 要的帮助;感谢教研室全体同学,他们牺牲自己的时间帮助我们测试,验证了本系统的 功能性及性能指标问题;感谢曹颖鸿师姐,金乃高师兄和景源博士在百忙之中帮我修改 论文并提出宝贵意见,指正了论文中多处不足之处,并感谢陈里铭博士为本论文的写作 提出了很多建设性意见。 感谢舍友陈瑞清、马辉同学,你们在生活上的帮助与友谊,使我不断成长并通过向 你们的学习,发现自己很多的不足,感谢你们的优秀深深感染了我。 感谢我的父母和在大连理工大学读博的叔叔,一直以来他们都以长辈的身份教给我 看问题的方法和角度,使我在学习、生活中少走了很多弯路。 再一次对所有教育过我的师长,帮助、关心过我的同学和朋友们表示深深的感谢! 大连理工大学硕士学位论文 第一章引言 1 1 电子邮件的发展历程 电子邮件由英文e l e c t r o n i cm a i l 或e m a i l 翻译而来,它表示通过电子通讯系统进行 信件的书写、发送和接收。作为互联网上最受欢迎的功能之一,电子邮件系统可以为世 界上任何一个网络用户传递信息,内容包括文字、图像、声音、视频等。同时,如果用 户愿意,通过电子邮件可以得到大量免费的新闻、专题邮件,并实现轻松的信息搜索, 这是传统邮件无法比拟的。 电子邮件发明于1 9 7 1 年,当时已经存在可传输文件的电脑程序以及一种原始的信 息程序。但这两个程序存在局限性,发信方只能给接收方发送公报,且接收方的电脑必 须与发送方一致。雷饧姆林森( r a yt o m l i n s o n ) 在已有的传输文件程序以及信息程序的基 础上,研制出一套全新的文件信息传输程序,可以通过电脑网络发送和接收文件信息。 为让人们都拥有容易识别的电子邮箱地址,汤姆林森采用了 符号,符号前面加用户名, 后面是用户邮箱所在的地址,即u s e r a d d r e s s 的形式表示用户邮箱地址,这标志着电子 邮件的诞生。当时,汤姆林森所在的企业受聘于美国军方,参与a r p a n e t 网络的建设和 维护工作。 虽然电子邮件在1 9 7 0 年代发明,却是在1 9 8 0 年代兴起。由于1 9 7 0 年代使用a r p a n e t 网络的人较少,网速较慢,用户只能发送简短的信息,这限制了电子邮件的使用;到1 9 8 0 年代中期,个人电脑及i n t e r n e t 的兴起,电子邮件开始传播开来;1 9 9 0 年代中期,互联 网浏览器诞生,全球网民人数激增,电子邮件开始被广泛使用。 电子邮件系统经过三十多年的发展,目前主要有三种系统类型l l j : ( 1 ) 免费邮箱 大多数网民都有电子邮箱,这种方式投资少,免维护,但每天需要处理大量的邮件, 导致邮件的收发速度受到限制,且无法保证邮箱的安全性和服务质量。因此免费邮箱只 能作为简单应用,不适合用于交流重要的、需要保密的信息。 ( 2 ) 收费邮箱 收费电子邮箱一般比免费邮箱安全、稳定、收发速度快,而且具有邮件杀毒、邮件 到达通知、手机收发邮件等功能。但对于企业来说,每个员工可能使用不同的邮箱域名, 影响企业形象且不能对邮箱服务器进行管理,无法根据企业实际需要对邮件系统进行改 进及扩展。 ( 3 ) 自建邮箱系统 p o p 3 电子自p 件客户端及服务器的设计与实现 随着网络化进程的进一步发展,大多企业或高校建立了自己的电子邮件系统。单位 将企业名作为服务器域名。这样,每个企业员工具有使用相同的邮箱服务器,有利于宣 传企业形象并可以对邮件服务器进行管理,并提供较好的安全性。目前邮箱服务器主要 基于w i n d o w s 操作系统或u n i x 操作系统,虽然w i n d o w s 平台界面友好,操作方便,但 基于w i n d o w s 平台的邮件系统一般为商业性软件,源码保密,不便于对其进行二次开 发;u n i x 平台下虽然有开放的邮件系统源码,但管理复杂,要求管理员深入了解电子邮 件系统原理,并具备丰富的u n i x 平台开发经验。 因此,本文自主开发了d s p m a i l 电子邮件系统,它属于自建邮箱系统但自主研发。 此邮件系统不仅可以实现以局域网为基础的单位内部电子邮件传递,也能通过i n t e m e t 和外部进行信息交流。同时,还可根据互联网的发展,随时对邮件系统进行升级与改造, 使之更符合单位内部的发展需要。 1 2 电子邮件的基本知识 1 2 1 电子邮件的地址表示 r f c 8 2 2 规定i n t e r n e l 上站点采用u s e r h o s t d o m a i n 表示法1 2 , 3 1 ,( 萄符号在英文中曾 表示“在”和“单价”的意思。它的前一种意思是因其发音类似于a t ,于是常被作为 “在”的代名词使用。h o s t d o m a i n 表示主机的完整域名,它是网络用来区分主机地址的 标识。网络上,每一台主机都对应一个由一串数字组成的口地址。为方便记忆,可以 使用域名标识主机位置,每一个域名与口地址一一对应。主机之间通信时,通过域名 服务器( d n s ) 将目标主机域名解析为网络可识别的i p 地址,从而将邮件发送到正确的主 机( 服务器) 上。u s e r 表示邮箱帐户名,用来区分同一网络上的用户。如果服务器域名相 同,则在此服务器域名下不能有重复的帐户,否则邮件的分发将发生混乱;如果服务器 域名不同,用户帐户可以相同。 由于u s e r h o s t d o m a i n 地址表示法只给出主机名,而不涉及目标主机的路由信息, 所以称作绝对地址表示,这时目前互联网上主要使用的地址表示法。 1 2 2 电子邮件常用的编码字符集 计算机内部只能表示0 、1 两个数值,因此对于文本信息需要将其编码成计算机能 表示的方式。对于同一文本信息,由于历史原因,不同国家、不同操作系统甚至不同的 开发平台所支持的编码字符集不同,因此编码结果也不一定相同。由于电子邮件需要在 世界范围内的网络用户之间传输,因此,了解字符编码方式对于正确解码邮件信息至关 重要。下面简要介绍几种常用的字符编码方式1 4 ,”。 一2 一 大连理工大学硕士学位论文 ( 1 ) a s c i i 编码字符集 a s c i i 编码全称是美国标准信息交换码( a m e r i c a ns t a n d a r dc o d ef o ri n f o r m a t i o n i n t e r c h a n g e ) ,又称为u s a s c i i 码。它是目前计算机中,特别是微型计算机中使用最普 遍的字符编码集。 a s c i i 码由7 比特组成,占一个字节,最高位恒为0 ,只能表示0 1 2 7 之间的字符。 由于a s c i i 码最早开始应用,因此以后的各种编码实际上都受到它的影响,并需要尽量 与其兼容。 ( 2 ) 扩展a s c i i 编码和i s 0 8 8 5 9 编码 在一些非英语国家中。由于大多存在着英语中没有的字符,因此,产生了“扩展 a s c i i 码”,也就是通常意义上的a s c i i 码。扩展a s c i i 码也用一个字节存储,最高 位可以为l ,因此能表示0 2 5 5 之间的字符,其中,0 1 2 7 之间的字符与u s a s c i i 码兼容;由于不同的国家有不同的字符,在1 2 8 2 5 5 之间定义的编码字符也各不相同, 这限制了不同国家之间的信息交换,因此制定了i s o8 8 5 9 标准并得到广泛的使用。i s o 8 8 5 9 标准实际包含多个编码标准,即不同国家的编码集合,如i s o8 8 5 9 一l 表示西欧语 言,i s o8 8 5 9 - 1 6 表示东南欧语言等。 ( 3 ) u n i c o d e 编码 i s o8 8 5 9 编码虽然扩展了字符编码范围,但对于其它更加复杂的文字,如中文、日 文等,2 5 6 个字符仍不能满足需要。因此。一些国家也建立了各自的文字编码规范。其 中,中文的文字编码规范称作“g b 2 3 1 2 8 0 ”,它只收录常用汉字,但与s o8 8 5 9 编码 冲突。另外,虽然i s o8 8 5 9 是不同国家之间的编码标准集合,但集合中的各个标准之 间并不兼容,这就造成了使用不同编码方式的计算机容易出现乱码信息。这种情况促使 了u n i c o d e 编码的出现。在u n i c o d e 编码方式中,规定所有的字符使用两个字节表示, 但这与现行的许多编码方式不兼容,如a s c i i 码。 ( 4 ) u r f 一8 编码 虽然u n i c o d e 编码理论上可以统一编码,但实际中却难以实行。这样,产生另外一 种编码一u t f 编码,它将u n i c o d e 编码规则和计算机实际编码对应起来。流行的u r f 编码方式有2 种:u t f 8 和u t f 1 6 。其中u t f 1 6 编码在u n i c o d e 基础上进行一些细节 上的扩充,增加u n i c o d e 编码没有包括的那些字符的表示方式。 在u t f - 8 编码中,可以用1 弱3 个字节对应字符编码,使之可以与a s c i i 码兼容。 对于其它国家的字符,u t f 8 使用2 个或3 个字节表示。u t f - 8 便于不同计算机之间使 用网络传输不同的语言和编码文字,使得双字节的u n i c o d e 能够在现存处理单字节的系 统上正确传输。 p o p 3 电子邮件客户端及服务器的设计与实现 1 3 电子邮件工作原理 电子邮件的传送方式与传统邮件类似。电子邮件经客户端编辑完成后,并不能直接 将信件发送到收件人所在的邮件服务器上,而是通过邮件传输代理( m a i l t r a n s p o r t a g e n t , m t a ) 将邮件传送过去。m t a 收到邮件后,跟据邮件目标地址寻找下一条传输路径,如 果下一个服务器暂不可用,m t a 将邮件暂存在缓冲队列中,一段时间后重新发送;如 果尝试几次后仍不成功,则将邮件退回,并返回错误信息。经一个或多个m t a 传送的 邮件到达收件人所在的服务器后,服务器将邮件存放在收件人邮箱中,由收件人定期查 看新邮件。这个过程可由图1 1 【6 】表示; 图1 1 邮件传输示意图 r i g 1 1f i g u r eo f m a i lt r a n s f e r r i n g 在图l 1 中,m u a 表示邮件用户代理( m a i lu s e ra g e n t ) ,即用户用于编辑或处理邮 件的客户端软件,包括邮件的发送和接收客户端;m t a 表示邮件传输代理,即在互联 网上传送邮件的s m t p 服务器或转发服务器;m d a 表示邮件投递代理( m a i ld e l i v e r y a g e n t ) ,即将邮件放入用户邮箱内的程序。 s m t p 、p o p 3 和i m a p 4 协议是当前主要的电子邮件协议。其中,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 0 1 ) ;而p o p 3 是邮局协议( p o s t o f f i c ep r o t o c 0 1 ) 的第三版,i m a p 4 是互联网报文访问协议( i n t e m e tm e s s a g ea c c e s s p r o t o c 0 1 ) 的第四版,它们属于电子邮件接收端协议。i m a p 4 是对p o p 3 协议的改进。关 于电子邮件的常用协议将在第三章详细介绍。 1 4 本论文的组织结构 本文主要实现邮件接收端系统的功能和后台服务功能。基于p o p 3 协议,开发了 p o p 3 电子邮件客户端和p o p 3 服务器;根据系统实际运行需要,设计完成了邮箱远程 管理及服务器后台服务功能,并对邮件系统进行了全面测试。 大连理工大学硕士学位论文 本论文按章节内容可以分为三部分第二章和第三章为第一部分,主要介绍开发电 子邮件系统所必需的基本知识,包括网络应用程序及主要的w m d o w sa p i 函数的介绍和 电子邮件常用协议的具体分析;第四章和第五章为第二部分,重点阐述p o p 3 电子邮件 系统的实现过程及技术纽节。包括p o p 3 客户端、p o p 3 服务器、管理员线程和后台服 务程序的设计与实现;第三部分包括第六章和第七章,此部分对本系统功能实现情况进 行测试,然后对测试结果进行分析,并给出全文的总结与展望。 p o p 3 电子邮件客户端及服务器的设计与实现 第二章电子邮件编程基础 应用程序可以分为两类【_ 7 】:一类是和其它应用程序之间不需要数据交换而独立完成 其功能;另一类是需要与其它应用程序进行数据交换共同完成其功能,即应用程序进程 之间通信。进程间通信也可以分为两种:一种是同一个操作系统中不同应用程序进程间 的通信,可以通过消息传递、信号量、共享存储区等方式实现:另一种一般是在不同系 统的进程之间,基于网络通信协议通信。不同系统进程之间进行数据交换的程序称为网 络应用程序,电子邮件即为网络应用程序。 在t c p i p 体系结构网络中,t c p i p 协议核心内容在层次结构的低三层,即网络接 口层、网络层和传输层,这三层的功能一般封装在操作系统内核中。通过使用操作系统 向上层提供的编程接口函数,可以直接调用t c p i p 网络底层的功能。 w i n d o w s 下的网络编程接口中,w i n d o w ss o c k e t s ( 简称w i n s o c k ) 已经成为网络编程 事实上的标准。任何能够与w i n s o c k 兼容,共同实现某种工作的应用程序都被认为具有 w i n s o c k 接口,并称之为w i n s o e k 应用程序。 2 1w i n s o c k 编程基本知识 w i n s o c k 通过调用w s a s t a r t u p 函数启动,实现w i n d o w ss o c k e t sd l l 的初始化, 分配必要的资源。在应用程序关闭套接字后,调用w s a c l e a n u p 函数终止使用w i n d o w s s o c k e t sd l l ,释放系统资源。 w i n d o w ss o c k e t sa p i 依靠套接e l ( s o c k e 0 进行通信。套接口本质上是通信过程中使 用的一些缓冲区及一些相关数据结构,由系统内核管理。s o c k e t 可以看成两个程序通讯 连接中的一个端点,程序将信息写入s o c k e t 中,该s o c k e t 将这段信息发送到另一个s o c k e t 中,并传送到另一个程序。 同一系统中,通过系统分配的进程号就可以唯一标识一个进程。而不同操作系统支 持的网络协议众多,不同协议工作方式、地址格式可能不同,因此网络应用程序间通信 不仅要解决网络之间进程标识问题,也要解决多重协议标识问题。网络之间迸程标识可 以用主机m 地址和进程端口号确定;互联网中两台主机通信时,在网络层使用口协议, 但在传输层可以选择t c p 协议或u d p 协议,如果通信两端协议不同,通信时双方不能 相互识别对方发来的数据,也就不能进行正常通信,因此通信进程之间通信必须基于同 一种协议。因此,个完整网络进程之间的通信,可以用一个五元组( 或称五元相关) 表 示协议、本地p 地址、本地端口号、远程m 地址和远程端口号。 大连理工大学硕士学位论文 2 1 1t c p 协议和u d p 协议 t c p 和u d p 协议是t c p i p 体系中主要的两种传输层协议。其中,t c p 是面向连接 的,可以提供两台计算机之间可靠数据传输。基于t c p 协议的应用程序通信时,发送 端和目标端之间首先建立一个虚拟连接,通信双方可以把数据当作一个双向字节流进行 交换,主要用于一次传输要交换大量数据的情况。u d p 协议面向非连接,在传送数据之 前不需要建立虚拟连接,因此u d p 协议不能保证数据可靠传输,但能够提供高效服务。 进行网络程序设计时选用t c p 协议或u d p 协议视情况而定。其中,基于t c p 协议的套 接口称为流式套接d ( s o c k _ s t e a m ) ;基于u d p 协议的应用程序套接口称为数据报 套接i z i ( s o c kd g r a m ) ,这时目前主要使用的两类套接口类型。 电子邮件传输是基于t c p 协议的应用层程序,面向连接并采用客户端月臣务器( c s ) 工作模式。客户端和服务器每次通信之前首先建立虚连接,通信结束后释放连接,而这 些工作可以由操作系统内核功能完成,应用程序中需要调用w i n g o c k a p i 函数告知操作 系统何时建立和释放一个连接。 2 1 2 主机地址 在i n t 翻m e t 上,现在使用的口协议主要是i p v 4 ,它是使用3 2 位二进制数表示一个 i p 地址。在互联网发展初期,用口地址的前8 位表示网络号,后面2 4 位表示主机号, 由于这种方案可以表示的网络号只有2 5 6 个,于是新的讲地址编码方案把i p 地址分为 a 、b 、c 、d 、e 五类,以适应大、中、小型网络对婵地址的需求。各类i p 地址的特 点 7 1 见表2 1 所示。 表2 1 各类m 地址的特点 仉l b 2 1c h a r a c t e ro f i pa d d r e s s 随着计算机网络技术不断普及,有大量个人用户和小型局域网接入互联网,在这种 情况下,主机地址进一步被分为两部分,即子网地址和主机地址。这样,口地址为三级 结构f f ,如图2 1 所示。 p o p 3 电子邮件客户端及服务器的设计与实现 普通i p 地址一两级结构 l 堕堕垄些i圭塑丝些 普通z p 地址一三级结构 叵亘亘堑 二五亟亟至 j 夏! i i 垂 图2 ,l 主机i p 地址结构 f i g 2 1s t r u c t u r eo f h o s tc o m p u t e ri pa d d r e s s 对于上图所示的三极i p 地址结构,子网地址是由原两级地址中主机地址的若干位 组成的。为表示子网的位数,网络中引入子网掩码的概念。子网掩码也用3 2 位二进制 数表示,掩码中用于标识网络号和予网号的位置为1 ,标识主机号的位置为0 。这样, 给定一个p 地址和子网掩码,两者逻辑与后的值即为主机在网络中的地址,其余位为 主机地址。 2 1 3 应用程序端口介绍 为识别应用层不同的网络通信程序,传输层引入端口的概念。在一台主机上,进行 网络通信的进程首先向系统申请一个唯一端口号,应用程序( 进程) 通过系统调用与此端 口联系在一起,以此区分不同进程。 客户端通常并不关心它所使用的端口号,只要保证该端口号在本地上唯- - u p 可。因 此客户端端口号又称为临时端1 :3 号,它只是在用户运行该程序时存在。而服务器端端口 号一般是众所周知的,以使任何客户端均可以向该服务器提出服务请求。在电子邮件服 务器中,s m t p 服务器端口号为2 5 ,p o p 3 服务器端口号为l l o 。 t c p i p 协议中,传输层使用的端1 :3 号用一个1 6 位二进制数表示婵j 。因此,使用t c p 或u d p 协议的进程可用2 m 个不同的端口号,关于端口号的分配见表2 2 所示。 表2 2 端口号的分配 t a b 2 2d i s t r i b u t i o no f c o m p u t e rp o r t 端口号描述 不使用,如果端口号为0 ,则分配1 0 2 4 5 0 0 0 之间没有使用的端1 :3 号 保留给特定的服务,如f 1 甲、t e l n e t 等 保留给别的一般的服务,如路由函数 可以被任意的客户端使用,客户端套接字通常使甩这个范盈段的端口 为用户定义的服务器端口所使用。 5 脚蟛泌 。罴一 2 均如 大连理工大学硕士学位论文 2 2w i n s o c k 编程主要的a p i 函数 2 2 1c s 建立五元相关所需的a p i 函数 套接口系统调用s o c k e “) 、b i n d ( ) 、c o n n e c t ( ) 、a c c e p t ( ) 这4 个函数,就可以完成 一个五元相关的建立 7 。s o c k e ( ) 函数指定五元组中的协议元,它的用法与客户端、服务 器端进程、是否面向连接无关。b i n d ( ) 指定五元组中的本地m 地址、本地端口号,其用 法与是否面向连接有关。在服务器方,无论是否面向连接,均要调用b i n d ( ) ;在客户端, 若采用面向连接,可以不调用b i n d ( ) ,而通过c o 衄c c “) 自动完成。若采用无连接,客户 端必须调用b i n d ( ) 以获得一个唯一的地址。远程i p 地址和远程端口号在服务器方由 a e c e p “) 调用获得,在客户端由c o n n e c t ( ) 调用确定。 ( 1 ) 创建套接字:i n ts o c k e t o n t d o m a i n ,i n t t y p e ,i n t p r o t o c 0 1 ) ;i 弱数返回s o c k e t 描述符。 ( 2 ) 绑定套接口与本地主机的地址和端口号:h a t b i n d ( i n ts o c k f d ,c o n s ts t n a c ts o c k a d d r + n r n l e ,i n tn a m e l e n ) ; ( 3 ) 请求连接服务器:i n tc o n n e c t ( i r as o c k f d ,c o t t s ts t r u c ts o c k a d d r + n a m e ,i mn a m e ) ; ( 4 ) 服务器接受客户端连接请求:i ma c c e p t ( i r as o c k f 乱s l r u c ts o c k a d d r + a d d r ,h a t + a d d r l e n ) ; 2 2 2 字节转换函数 不同的主机对字节值的存储顺序不同,如图2 2 所示。存储由多个字节组成的二进 制数时,有的计算机在低地址处存储低字节,这种存储格式叫“小模式”;而有的计算 机在低地址处存放高字节,这种存储格式叫“大模式”。如w i n d o w s 系列的操作系统 使用“小模式”方式存储,而s u n 和s o l a r i s 等采用“大模式”方式存储。 小模式( 1 i t t l e e n d i a n ) 叵巫丑五 m s bl s b 大模式( b i g - e n d i a n ) 臣正羽 m s bl s b 图2 2 大小模式下的主机字节顺序 f i g 2 2h o s t - b y t eo r d e ro f b i g l i t t l ee n d i a n 在计算机中,t c p i p 协议使用的1 6 位整数( 如端口号) 和3 2 位整数( 如i p 地址) 按 “主机字节”表示;网络中,为保证数据正确传输,“互联网联网标准”要求多字节的 数值必须用“大模式”形式表示,称之为“网络字节”顺序。w i n s o c k 中用于主机字节 p o p 3 电子邮件客户端及服务器的设计与实现 顺序和两络字节顺序转换的函数有: ( 1 ) u _ l o n gh t o n l ( u _ l o n gh o s f l o n g ) ;l o n g 型主机字节顺序转换为网络字节顺序 ( 2 ) u _ s h o r th t o n s ( u _ s h o r th o s t s h o r t ) ;s h o r t 型主机字节顺序转换为网络字节顺序 ( 3 ) u j o n gn t o h l ( u _ l o n gn e t l o n g ) ;l o n g 型网络字节顺序转换为主机字节顺序 ( 4 ) u s h o r tn t o h s ( u _ s h o r tn e t s h o r t ) ;s h o r t 型网络字节顺序转换为主机字节顺序 另外,在网络编程中,不同平台规定的数据类型可能有不同的表示长度,且不同平 台上为结构体或共同体打包方式可能不同,这取决于数据类型的位数及机器定界限制, 编程时需要注意。 2 2 3 网络信息获取函数 网络应用程序有时需要获取主机上与网络有关的信息,主要包括4 类,即主机信息、 网络信息、协议信息和服务信息。下面介绍邮件开发中常用的主枫信息函数。 ( 1 ) i mg e t h o s t n a m e ( c h a t n a m e ,i n tn a m e l e n ) ; 将本地主机名存入n a m e 参数指定的缓冲区中 ( 2 ) s 仃c u th o s t e n t + g e t h o s t b y n a m e ( c o m tc h a r + n a m e ) ; ,从主杌数据库中取回与指定主机名对应的主机信息,存入h o s t e n t 结构体中,调 用此函数可以得到主机的口地址 2 2 4i p 地址转换函数 网络中,点分十进制i p 地址用一个长整数表示,通过调用下面两个函数,可以进 行点分十进制i p 地址和网络字节顺序的i p 地址的转换。 ( 1 ) u n s i g n e dl o n gi n e t _ a d d r ( c h a r + c p ) ; ,将点分十进制数表示的口地址转换为网络字节顺序的p 地址 ( 2 ) c h a r + i n e t _ n t o a ( s t r u c ti n _ a d d ri n ) ; 将网络字节顺序的口地址转换为点分十进制数表示的m 地址 2 2 5w i n s o c k 套接口i o 处理函数 网络通信包括阻塞和非阻塞两种模式。在阻塞模式下进行f o 操作时,函数要等到 相关操作完成后才能返回。如果执行条件不能满足,则函数就会一直阻塞等待,直到条 件满足才能执行下一步操作:而在非阻塞模式下,无论操作是否成功,函数调用都会立 即返回,无需等待。但是如果操作没有成功,将返回一个“错误”信息,然后需要对错 误信息进行处理。通过调用i o c t l s o c k e t ( ) 函数可以设置套接口的工作模式。 创建一个套接口后,默认i o 操作为阻塞模式,而将套接口设置为非阻塞模式时, 如果操作没有完成,则返回错误信息,因此程序中需要对操作失败时进行相应处理。使 大连理工大学硕士学位论文 用套接口f o 状态查询函数s e l e c t ( ) 可以在进行i o 操作之前,首先判断能否向一个套接 口写入数据或套接口是否存在可读数据。这样就可以防止阻塞模式下的等待状态,也可 以防止非阻塞模式下产生错误。 i n ts e l e c t ( i n tn f d s ,f d _ s e t + r e a d f d s ,f d _ s e t + w r i t e f d s , f d _ s e t + e x c e p t f d s ,c o n s ts t r u c tt i m e v a l t i m e , o u t ) ; 参数说明: ( i ) n f d s :传入参数,此参数被忽略,仅起到与b e r k e l e ya p i 套接口兼容的作用; ( 2 ) r e a d f d s 、w r i t e f d s 和e x c e p t f d s :这三个参数分别用于检查可读性、可写性和意外 数据。既可以是传入参数,也可以是传出参数; ( 3 ) t i m e o u t :表示本次s e l e c t ( ) 调用最长等待时间,通过设置此参数,也可以将套接 口设置为阻塞模式或非阻塞模式。 2 2 6 数据传输函数 流式套接口中数据发送函数为s e n d ( ) ,数据接收函数为r e c v ( ) :数据报套接口的数 据发送函数为s e n d t o ( ) ,数据接收函数为r e c v f r o m ( ) 。下面给出s e n d ( ) 和r e e v ( ) 函数原 型: ( 1 ) i n ts e n d o n ts ,c h a r b u f , i n tl e n , i n tf l a g s ) ;返回实际发送的数据字节数 ( 2 ) i n tr e c v ( i n ts ,c h a r 铀u f , i ml e n , i n tf l a g s ) ;,返回实际读入缓冲的数据字节数 2 2 7 套接口关闭函数 流式套接口中,与一个套接口相关的读写操作完成后,应首先使用s h u t d o w n ( ) 函数 关闭套接口读写通道,以防止数据丢失,但此函数并不关闭套接口。当套接口不再使用 时,调用c l o s e s o c k e t ( ) 函数关闭,释放与该套接口相关的所有资源。 ( 1 ) ms h u t d o w n ( i n ts ,i n th o w )
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电玩城绩效管理办法
- 营销管理部管理办法
- 装备领域采购管理办法
- 电影院食品管理办法
- 人防工程平时管理办法
- 螯合剂结算管理办法
- 管理办法与工作规定
- 质量部培训管理办法
- 规范社保福利管理办法
- 专利集中审查管理办法
- DBJ51-T 188-2022 预拌流态固化土工程应用技术标准
- 体育产业经营管理课件第一章导论
- 临床医学晕厥课件
- 2023门球竞赛规则电子版图文并茂
- 部编人教版七年级上册初中语文 第3课 雨的四季 课前预习单
- 部编版四年级语文上册第5课《一个豆荚里的五粒豆》优秀PPT课件
- 大班社会《班级规则我遵守》课件
- DBJ51 014-2021 四川省建筑地基基础检测技术规程
- 能源概论__第一章能源概述PPT课件
- 小学一年级体育下册教案全册
- PTB220串行数字气压计用户手册
评论
0/150
提交评论