单元五:网络服务管理_第1页
单元五:网络服务管理_第2页
单元五:网络服务管理_第3页
单元五:网络服务管理_第4页
单元五:网络服务管理_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、单元五网络服务管理一、DNS服务DNS服务概述域名管理系统DNS(Domain Name System)是域名解析服务器的意思,它在互联网的作用是:把域名转换成为网络可以识别的ip地址。首先,要知道互联网的网站都是一台一台服务器的形式存在的,但是我们怎么去到要访问的网站服务器呢?这就需要给每台服务器分配IP地址,互联网上的网站无穷多,我们不可能记住每个网站的IP地址,这就产生了方便记忆的域名管理系统DNS,他可以把我们输入的好记的域名转换为要访问的服务器的IP地址,比如:我们在浏览器输入会自动转换成为54。DNS的工作原理DNS分为Client和Server,Client扮演发问的角色,也就是

2、问Server一个DomainName,而Server必须要回答此DomainName的真正IP地址。而当地的DNS先会查自己的资料库。如果自己的资料库没有,则会往该DNS上所设的的DNS询问,依此得到答案之后,将收到的答案存起来,并回答客户。DNS服务器会根据不同的授权区(Zone),记录所属该网域下的各名称资料,这个资料包括网域下的次网域名称及主机名称。在每一个名称服务器中都有一个快取缓存区(Cache),这个快取缓存区的主要目的是将该名称服务器所查询出来的名称及相对的IP地址记录在快取缓存区中,这样当下一次还有另外一个客户端到次服务器上去查询相同的名称时,服务器就不用在到别台主机上去寻找

3、,而直接可以从缓存区中找到该笔名称记录资料,传回给客户端,加速客户端对名称查询的速度。例如:当DNS客户端向指定的DNS服务器查询网际网路上的某一台主机名称 DNS服务器会在该资料库中找寻用户所指定的名称如果没有,该服务器会先在自己的快取缓存区中查询有无该笔纪录,如果找到该笔名称记录后,会从DNS服务器直接将所对应到的IP地址传回给客户端,如果名称服务器在资料记录查不到且快取缓存区中也没有时,服务器首先会才会向别的名称服务器查询所要的名称。例如:DNS客户端向指定的DNS服务器查询网际网路上某台主机名称,当DNS服务器在该资料记录找不到用户所指定的名称时,会转向该服务器的快取缓存区找寻是否有该

4、资料,当快取缓存区也找不到时,会向最接近的名称服务器去要求帮忙找寻该名称的IP地址,在另一台服务器上也有相同的动作的查询,当查询到后会回复原本要求查询的服务器,该DNS服务器在接收到另一台DNS服务器查询的结果后,先将所查询到的主机名称及对应IP地址记录到快取缓存区中,最后在将所查询到的结果回复给客户端 。我们举例说明,假设我们要查询网际网路上的一个名称为 HYPERLINK ,从此名称我们知道此部主机在中国CN,而且要找的组织名称此网域下的www主机,以下为名称解析过程的每一步骤。Step 1在DNS的客户端(Reslover)键入查询主机的指令,如:c:ping HYPERLINK pin

5、ging HYPERLINK 【6】with 32bytes of datareply from 6 bytes time 10ms ttl 253 Step2而被指定的DNS服务器先行查询是否属于该网域下的主机名称,如果查出改主机名称并不属于该网域范围,之后会再查询快取缓存区的纪录资料,查是否有此机名称。Step 3查询后发现缓存区中没有此纪录资料,会取得一台根网域的其中一台服务器,发出说要找 HYPERLINK 的Request。Step 4在根网域中,向Root Name Server询问,Root Name Server记录了各TopDomain分别是由哪些DNS Server负责,所

6、以他会响应最接近的Name Server为控制CN网域的DNS伺服主机。Step5Root Name Server已告诉Local DNS Server哪部Name Server负责.cn这个Domain,然后LocalDNS再向负责发出找寻 HYPERLINK 的名称Request。Step6在.cn这个网域中,被指定的DNS服务器在本机上没有找到此名称的的纪录,所以会响应原本发出查询要求的DNS服务器说最近的服务器在哪里?他会回应最近的主机为控制网域的DNS伺服主机。Step 7原本被查询的DNS服务器主机,收到继续查询的IP位置后,会再向的网域的DNS Server发出寻找 HYPERL

7、INK 名称搜寻的要求。Step 8的网域中,被指定的DNS Server在本机上没有找到此名称的记录,所以会回复查询要求的DNSServer告诉他最接近的服务器在哪里?他就回应最接近为控制的网域的DNS主机。Step 9原本被查询的DNSServer,在接收到应继续查询的位置,在向网域的DNS Server发出寻找 HYPERLINK 的要求,最后会在的网域的DNS Server找到 HYPERLINK 此主机的IP。Step 10所以原本发出查询要求的DNS服务器,再接收到查询结果的IP位置后,响应回给原查询名称的DNS客户端。两种真正DNS的查询模式有两种询问原理,分为Recursive

8、和Interactive两种。前者是由DNS代理去问,问的方法是用Interactive方式,后者是由本机直接做Interactive式的询问。由上例可以看出,我们一般查询名称的过程中,实际上这两种查询模式都是交互存在着的。递归式(Recursive):DNS客户端向DNSServer的查询模式,这种方式是将要查询的封包送出去问,就等待正确名称的正确响应,这种方式只处理响应回来的封包是否是正确响应或是说是找不到该名称的错误讯息。交谈式(Interactive):DNS Server间的查询模式,由Client端或是DNSServer上所发出去问,这种方式送封包出去问,所响应回来的资料不一定是最

9、后正确的名称位置,但也不是如上所说的响应回来是错误讯息,他响应回来告诉你最接近的IP位置,然后再到此最接近的IP上去寻找所要解析的名称,反复动作直到找到正确位置。DNS安装与配置dns服务的安装以linux系统下dns服务软件bind-9.3.1. tar.gz安装为例由其官方网站中下载其源码软件包bind-9.3.1. tar.gz。接下来我将对安装过程的一些重要步骤,给出其解释:rootlocalhost root#tar xzvf bind-9.3.1. tar.gzrootlocalhost root#cd bind-9.3.1rootlocalhost bind-9.3.1#./co

10、nfigurerootlocalhost bind-9.3.1#makerootlocalhost bind-9.3.1#make installtar xzvf bind-9.3.1.tar.gz 解压缩软件包。./configure 针对机器作安装的检查和设置,大部分的工作是由机器自动完成的,但是用户可以通过一些参数来完成一定的设置,其常用选项有:./configure -help 察看参数设置帮助。-prefix= 指定软件安装目录(默认/usr/local/)。-enable-ipv6 支持ipv6。可以设置的参数很多,可以通过 -help察看需要的,一般情况下,默认设置就可以了。默认

11、情况下,安装过程是不会建立配置文件和一些默认的域名解析的,不过并不妨碍,可以从下载一些标准的配置文件(/bind.html),也可以使用本文所提供的样例文件。 CHINAZ 字串9默认情况下,安装的deamon为/usr/local/sbin/named默认的主配置文件,/etc/named.conf(须手动建立)。2.启动:rootlocalhost root# /usr/local/sbin/named -g/usr/local/sbin/named默认情况是一个后台deamon ,-g选项表示前台运行,并将调试信息打印到标准输出,这在我们安装调试阶段是非常有帮助的。如果建立了配置文件和域

12、名解析文件(关于怎样建立将在下面的部分讲到),ps aux 应该可以查到named 的进程,或netstat -an 也可以看到53端口的服务已经起来了。(DNS默认端口为53)如果要设置开机自启动DNS server,只需在/etc/rc.d/rc.local中加入一行/usr/local/sbin/named#!/bin/sh# This script will be executed *after* all the other init scripts.# You can put your own initialization stuff in here if you dont# wan

13、t to do the full Sys V style init stuff.touch /var/lock/subsys/local CHINAZ /usr/local/sbin/named restart二、DHCP服务DHCP服务概述DHCP 是 Dynamic Host Configuration Protocol(动态主机分配协议)缩写它的前身是 BOOTP。BOOTP 原本是用于无磁盘主机连接的网络上面的网络主机使用 BOOT ROM 而不是磁盘起动并连接上网络BOOTP 则可以自动地为那些主机设定 TCP/IP 环境。但 BOOTP 有一个缺点:您在设定前须事先获得客户端的硬件

14、地址,而且,与 IP 的对应是静态的。换而言之,BOOTP 非常缺乏 动态性 ,若在有限的 IP 资源环境中,BOOTP 的一对一对应会造成非常可观的浪费。DHCP 可以说是 BOOTP 的增强版本它分为两个部份一个是服务器端而另一个是客户端。所有的 IP 网络设定数据都由 DHCP 服务器集中管理并负责处理客户端的 DHCP 要求而客户端则会使用从服务器分配下来的IP环境数据。比较起 BOOTP ,DHCP 透过 租约 的概念,有效且动态的分配客户端的 TCP/IP 设定,而且,作为兼容考虑,DHCP 也完全照顾了 BOOTP Client 的需求。 DHCP 的工作原理 根据客户端是否第一

15、次登录网络DHCP 的工作形式会有所不同。 第一次登录的时候寻找 Server。当 DHCP 客户端第一次登录网络的时候也就是客户发现本机上没有任何 IP 数据设定它会向网络发出一个 DHCP DISCOVER 封包。因为客户端还不知道自己属于哪一个网络所以封包的来源地址会为 而目的地址则为 55 然后再附上 DHCP discover 的信息向网络进行广播。 在 Windows 的预设情形下,DHCP discover 的等待时间预设为 1 秒也就是当客户端将第一个 DHCP discover 封包送出去之后,在 1 秒之内没有得到响应的话就会进行第二次 DHCP discover 广播。若

16、一直得不到响应的情况下客户端一共会有四次 DHCP discover 广播(包括第一次在内)除了第一次会等待 1 秒之外,其余三次的等待时间分别是 91316 秒。如果都没有得到 DHCP 服务器的响应客户端则会显示错误信息宣告 DHCP discover 的失败。之后,基于使用者的选择系统会继续在 5 分钟之后再重复一次 DHCP discover 的过程。 提供 IP 租用地址。当 DHCP 服务器监听到客户端发出的 DHCP discover 广播后它会从那些还没有租出的地址范围内选择最前面的空置 IP ,连同其它 TCP/IP 设定,响应给客户端一个 DHCP OFFER 封包。 由于

17、客户端在开始的时候还没有 IP 地址所以在其 DHCP discover 封包内会带有其 MAC 地址信息并且有一个 XID 编号来辨别该封包DHCP 服务器响应的 DHCP offer 封包则会根据这些资料传递给要求租约的客户。根据服务器端的设定DHCP offer 封包会包含一个租约期限的信息。 接受 IP 租约。如果客户端收到网络上多台 DHCP 服务器的响应只会挑选其中一个 DHCP offer 而已(通常是最先抵达的那个)并且会向网络发送一个DHCP request广播封包告诉所有 DHCP 服务器它将指定接受哪一台服务器提供的 IP 地址。 同时客户端还会向网络发送一个 ARP 封

18、包查询网络上面有没有其它机器使用该 IP 地址如果发现该 IP 已经被占用客户端则会送出一个 DHCPDECLINE 封包给 DHCP 服务器拒绝接受其 DHCP offer 并重新发送 DHCP discover 信息。 事实上并不是所有 DHCP 客户端都会无条件接受 DHCP 服务器的 offer 尤其这些主机安装有其它 TCP/IP 相关的客户软件。客户端也可以用 DHCP request 向服务器提出 DHCP 选择而这些选择会以不同的号码填写在 DHCP Option Field 里面换一句话说在 DHCP 服务器上面的设定未必是客户端全都接受客户端可以保留自己的一些 TCP/IP

19、 设定。而主动权永远在客户端这边。 租约确认。当 DHCP 服务器接收到客户端的 DHCP request 之后会向客户端发出一个 DHCPACK 响应以确认 IP 租约的正式生效也就结束了一个完整的 DHCP 工作过程。DHCP服务的安装与配置Red Hat Enterprise Linux安装程序默认没有安装DHCP服务,使用下面的命令可以检查系统是否已经安装了DHCP服务或查看已经安装了何种版本。rpm -q dhcp如果系统还没有安装DHCP服务。如果现在需要安装,可将Red Hat Enterprise Linux 5的第3张安装盘放入光驱,加载光驱后在光盘的Server目录下找到D

20、HCP服务的RPM安装包文件dhcp-3.0.5-3.el5.i386.rpm,然后使用下面的命令安装DHCP服务。rpm -ivh /mnt/Server/dhcp-3.0.5-3.el5.i386.rpmDHCP配置文件dhcpd.conf的格式如下:选项/参数 # 这些选项/参数全局有效声明选项/参数 # 这些选项/参数局部有效 重新启动DHCP服务/etc/init.d/dhcpd restart三、WEB服务WEB服务概述WWW 是 World Wide Web (环球信息网)的缩写,也可以简称为Web,中文名字为“万维网”。它起源于1989年3月,由欧洲量子物理实验室 CERN(t

21、he European Laboratory for ParticlePhysics)所发展出来的主从结构分布式超媒体系统。通过万维网,人们只要通过使用简单的方法,就可以很迅速方便地取得丰富的信息资料。 由于用户在通过 Web浏览器访问信息资源的过程中,无需再关心一些技术性的细节,而且界面非常友好,因而 Web 在Internet上一推出就受到了热烈的欢迎,走红全球,并迅速得到了爆炸性的发展。长期以来,人们只是通过传统的媒体(如电视、报纸、杂志和广播等)获得信息。但随着计算机网络的发展,人们想要获取信息,已不再满足于传统媒体那种单方面传输和获取的方式,而希望有一种主观的选择性。现在,网络上提供

22、各种类别的数据库系统,如文献期刊、产业信息、气象信息、论文检索等等。由于计算机网络的发展,信息的获取变得非常及时、迅速和便捷。到了1993年,WWW 的技术有了突破性的进展,它解决了远程信息服务中的文字显示、数据连接以及图像传递的问题,使得 WWW 成为Internet 上最为流行的信息传播方式。 现在,Web 服务器成为 Internet 上最大的计算机群,Web文档之多、链接的网络之广,令人难以想象。可以说,Web 为 Internet 的普及迈出了开创性的一步,是近年来 Internet 上取得的最激动人心的成就。WWW 采用的是客户/服务器结构,其作用是整理和储存各种WWW资源,并响应

23、客户端软件的请求,把客户所需的资源传送到 Windows95(或Windows98)、Windows NT、UNIX 或 Linux 等平台上。WEB服务工作原理 WEB服务使用超文本传输协议(HTTP),该协议是一个在TCP/IP协议基础上的应用程序级协议,它的具体过程如下:WEB浏览器使用HTTP命令向一个特定的服务器发出WEB页面请求。若该服务器在特定端口(通常是TCP 80 端口)处接收到WEB页面请求,就发送一个应答,并在客户和服务器之间建立连接。WEB服务器查找客户端所需文档。若WEB服务器查找到所需文档。若WEB服务查找到所请求的文档,就会将所请求的文档传送给WEB浏览器。若文档

24、不存在,则服务器会发送一个相应的错误提示文档给客户端。WEB浏览器接收到文档后,就将它显示出来 。当客户端浏览完成后,断开与服务器的连接。WEB服务的安装与配置一般说来,所有Linux版本应该包含有此软件包的安装,如果你在安装Linux系统没有安装此软件包,可以从安装光盘或是/网站上找到其安装文件(注意网上有两种版本:一种是下载后需重新编译的源代码,一种是只需解压就可使用的可执行文件),然后执行安装即可。如果你下载的是可执行文件包如:apache_1.2.4.e.tar.gz(当中的数字视你下载的版本而定,此为举例),那这就相对简单,比较适合对Linux编译不熟悉的初级用户,只需执行:tar

25、xvzf apache_.tar.gz即可完成安装。如果下载的是源代码如:apache_1.2.4.rpm,则先用rpm ivh apache_1.2.4.rpm安装,然后在src目录下执行“./configure”;接着执行“make”命令编译Apache;接着将编译好的可执行文件复制到/etc/httpd/bin目录下;再将Apache的配置文件:httpd.conf、access.conf 、srm.conf和mime.types复制到/etc/httpd/conf目录下,才算完成安装。其实,到现在你的Linux已经开始WEB服务了,你要做的只需将Linux系统连入互联网,然后将主页存放

26、于“/home/httpd”目录下即可。但为了让此WEB服务器更有效率的工作,我们还需对其作些设置,具体需要配置的其实就是刚才复制的那4个文件。以下对其主要的两个配置文件httpd.conf和access.conf作些说明:httpd.conf.此文件是主配置文件,主要用来设置服务器启动的基本环境,也就是说它负责安排WEB服务器怎样运行。其相关设置参数为:ServerTypestandalone/inetd:此选项作用就是指定以何种方式运行WEB服务器。其中standalone参数表示WEB服务进程以一个单独的守候进程的方式在后台侦听是否有客户端的请求,如果有就生成一个子进程来为其服务;其效率

27、更高。主要是设置主服务器进程侦听的特定端口地址,方法为:Portnumber (缺省为80)。而inetd模式相对standalone来说它更安全,此模式也是RedHat Linux运行Apache的默认方式。如果你的版本不是RedHat,则需在/etc/inetd.conf文件里加入以下一新行:httpd stream tcp nowait httpd /etc/httpd/bin/httpd f /etc/httpd/conf/httpd.conf;然后在/etc/services文件里同样添加一新行:httpd 80/tcp httpd即可。ErrorLog:用来指定错误记录的文件名称和

28、路径。格式如:ErrorLog /var/httpd/error.log。ServerRoot:用来指定将服务器的配置及日志文件存于何处。格式如:ServerRoot /etc/httpd。Server Admin: 设置WEB管理员的E-Mail地址.格式如:Server AdminXXXXXXX.com。2. srm.conf这是Apache的资源配置文件,作用为告诉服务器你想在WWW站点上提供的资源及如何提供,其主要参数为:DocumentRoot: 用来指定主文档的地址。格式如:DocumentRoot /home/httpd/html。DirectoryIndex:跟windows平

29、台的IIS设置一样,用来指定首页文件的名称。大家都知道,首页一般都以“index.html”或“index.htm”作为文件名。当设置为这两种文件名之后,只要用户发出WEB请求,即将调入以“index.html”或“index.htm”命名的主页。格式如:DirecotryIndex index.html index.htm。经过以上简单的配置后,你的WEB服务器已经具备基本的功能了。接下来要做的就是重启WEB服务,使刚才的配置生效,我们可以用以下命令来完成:/etc/rc.d/init.d/httpd restart四、FTP服务FTP服务的概述一般来说,用户联网的首要目的就是实现信息共享,

30、文件传输是信息共享非常重要的一个内容之一。Internet上早期实现传输文件,并不是一件容易的事,我们知道Internet是一个非常复杂的计算机环境,有PC,有工作站,有MAC,有大型机,据统计连接在Internet上的计算机已有上千万台,而这些计算机可能运行不同的操作系统,有运行Unix的服务器,也有运行Dos、Windows的PC机和运行MacOS的苹果机等等,而各种操作系统之间的文件交流问题,需要建立一个统一的文件传输协议,这就是所谓的FTP。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议,这样用户就可以把自己的文件传送给别人,或者从其它的用户环境中获得文件

31、。与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。在FTP的使用当中,用户经常遇到两个概念:下载(Download)和上载(Upload)。下载文件就是从远程主机拷贝文件至自己的计算机上;上载文件就是将文件从自己的计算机中拷贝至

32、远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上载(下载)文件。FTP 服务的工作原理FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接

33、受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。FTP 服务的安装与配置用VSFTP来架设FTP服务器,VSFTP服务器是目前最好的FTP服务器软件,优点是体积小,可定制强,效率高查看是否安装了vsftpd软件rpm -qa | grep vsftpd如果没有任何显示,说明没有把vsftpd安装上,安装方法如下:我以Redhat9.0,以其自带的vsftpd包vsftpd-1.1.3-8版本来为本帖约定。rpm -ivh vsftpd*.rp

34、m直接启动VSFTP服务 这个范例是套用RedHat的预设范例,直接启动vsftp。 /sbin/servicevsftpd restart五、EMAIL服务1、EMAIL服务概述电子邮件是因特网上最为流行的应用之一。如同邮递员分发投递传统邮件一样,电子邮件也是异步的,也就是说人们是在方便的时候发送和阅读邮件的,无须预先与别人协同。与传统邮件不同的是,电子邮件既迅速,又易于分发,而且成本低廉。另外,现代的电子邮件消息可以包含超链接、HTML格式文本、图像、声音甚至视频数据。我们将在本文中查看处于因特网电子邮件核心地位的应用层协议。但在深入讨论这些协议之前,让我们先概览一下因特网邮件系统及其重要

35、部件。 下图展示了因特网邮件系统的高层概貌。我们看到,该系统由三类主要部件构成:用户代理、邮件服务器利简单邮件传送协议(simple Mail Transfer Protocol,简称SMTP)。我们将在这样的上下文中说明每类部件:发信人A1ice给收传人Bob发送一个电于邮件消息。用户代理允许用户阅读、回复、转寄、保存和编写邮件消息(电子邮件的用户代理有时称为邮件阅读器,不过我们在本文中避免使用这个说法)。Alice写完电子邮件消息后,她的用户代理把这个消息发送给邮件服务器,再由该邮件服务器把这个消息排入外出消息队列中。当Bob想阅读电子邮件消息时,他的用户代理将从他在其邮件服务器上的邮箱中

36、取得邮件。20世纪90年代后期,图形用户界面(GUI)的电子邮件用户代理变得流行起来,它们允许用户阅读和编写多媒体消息。当前流行的用户代理包括Ootlook,foxmail等。公共域中还有许多基于文本的电于邮件用户代理,包括mail、pine和elm。图1 因特网电子邮件系统概貌邮件服务器构成了电子邮件系统的核心。每个收信人都有一个位于某个邮件服务器上的邮箱(mailbox)。Bob的邮箱用于管理和维护已经发送给他的邮件消息。一个邮件消息的典型旅程是从发信人的用户代理开始,游经发信人的邮件服务器,中转到收信人的邮件服务器,然后投递到收信人的邮箱中。当Bob想查看自己的邮箱中的邮件消息时,存放该

37、邮箱的邮件服务器将以他提供的用户名和口令认证他。Alice的邮件服务器还得处理Bob的邮件服务器出故障酌情况。如果Alice的邮件服务器无法把邮件消息立即递送到Bob的邮件服务器,A1ice的服务器就把它们存放在消息队列(message queue)中,以后再尝试递送。这种尝试通常每30分钟左右执行一次:要是过了若干天仍未尝试成功,该服务器就把这个消息从消息队列中去除掉,同时以另一个邮件消息通知发信人(即Alice)。简单邮件传送协议(SMTP)是因特网电子邮件系统首要的应用层协议。它使用由TCP提供的可靠的数据传输服务把邮件消息从发信人的邮件服务器传送到收信人的邮件服务器。跟大多数应用层协议

38、一样,SMTP也存在两个端:在发信人的邮件服务器上执行的客户端和在收信人的邮件服务器上执行的服务器端。SMlP的客户端和服务器端同时运行在每个邮件服务器上。当一个邮件服务器在向其他邮件服务器发送邮件消息时,它是作为SMTP客户在运行。当一个邮件服务器从其他邮件服务器接收邮件消息时,它是作为SMTP服务器在运行。SMTPSMTP在RFC 821中定义,它的作用是把邮件消息从发信人的邮件服务器传送到收信人的邮件服务器。SMIP的历史比HTTP早得多,其RFC是在1982年编写的,而SMTP的现实使用又在此前多年就有了。尽管SMTP有许多奇妙的品质(它在因特网上的无所不在就是见证),但却是一种拥有某

39、些“古老”特征的传统战术。例如,它限制所有邮件消息的信体(而不仅仅是信头)必须是简单的7位ASCII字符格式。这个限制在20世纪80年代早期是有意义的,当时因特网传输能力不足,没有人在电子邮件巾附带大数据量酌图像、音频或视频文件。然而到了多媒体时代的今天,这个限制就多少显得局促了它迫使二进制多媒体数据在文由SMTP传送之前首先编码成7位ASCII文本;SMTP传送完毕之后,再把相应的7位ASCII文本邮件消息解码成二进制数据。HTTP不需要对多媒体数据进行这样的编码解码操作。下面我们通过查看一个常见的情形来说明SMTP的基本操作。假设Alice给Bob发送一个简单的ASCII文本邮件消息:Al

40、ice调用自己的电子邮件用户代理,给出Bob的电子邮件地址(譬如说bob),写好邮件内容,然后让用户代理发送本邮件消息。Alice的用户代理把该邮件消息发送到她的邮件服务器中,由邮件服务器把该消息排人某个消息队列中。运行在A1ice的邮什服务器上的SMTP客户端看到消息队列中的这个邮件消息后,打开一个到运行在Bob的邮件服务器主机上的SMTP服务器端的TCP连接。经过最初的一些SMTP握手之后,SMTP客户把A1ice的邮件消息发送到TCP连接上。在Bob的邮件服务器主机上,SMTP服务器收到这个邮件消息后,把这个消息投递到Bob的邮箱中。Bob在方便的时候调用自己的电子邮件用户代理阅读该邮件

41、消息。图2展示了上述情形图2 alice的邮件服务器把邮件消息传送到Bob的邮件服务器需注意的是,SMTP通常不使用中间的邮件服务器主机中转邮件,即便源端和目的端邮件服务器主机位于地球上相反的位置也一样。假设Aiice的邮件服务器主机在香港,Bob的邮件服务器主机在阿拉巴马州,那么所建立的TCP连接将是这两台服务器主机之间的连接。具体地说,如果Bob的邮件服务器不工作了,那么A1ice发给Bob的邮件消息将存留在Alice的邮件服务器中等待新的尝试,而不会存放到某个中间的邮件服务器中。下面查看SMTP把邮件消息从发送端邮件服务器传送到接收端邮件服务器的具体过程。我们将看到,SMTP协议与人们用

42、于面对面交互的礼仪之间有许多相似之处。首先,运行在发送端邮件服务器主机上的SMTP客户,发起建立一个到运行在接收端邮件服务器主机上的SMTP服务器端口号25之间的TCP连接。如果接收邮件服务器当前不在工作,SMTP客户就等待一段时间后再尝试建立该连接。这个连接建立之后,SMTP客户和服务器先执行一些应用层握手操作。就像人们在转手东西之前往往先自我介绍那样,SMTP客户和服务器也在传送信息之前先自我介绍一下。在这个SMTP握手阶段,SMTP客户向服务器分别指出发信人和收信人的电子邮件地址。彼此自我介绍完毕之后,客户发出邮件消息。SMTP可以指望由TCP提供的可靠数据传输服务把该消息无错地传送到服

43、务器。如果客户还有其他邮件消息需发送到同一个服务器,它就在同一个TCP连接上重复上述过程;否则,它就指示TCP关闭该连接。让我们看一个客户(C)和服务器(S)交互的例子。客户所在主机名为crepes.fr,服务器所在主机名为。前面标以“C:”的ASCII文本行是客户发送到它的TCP套接字中的完整文本行,前面标以“S:”的ASCII文本行是服务器发送到它的TCP套接字中的完整文本行。以下传输脚本在TCP连接建立之后马上发生:S:220 C:HELOcrepes.fr S:250Hellocrepes.fr,pleasedtomeetyou C:MAILFROM: S:250alicecrepes

44、.fr.SerderOK C:RCPTTO: S:250bob.RecipientOK C:DATA S:354Entermail,endwith.onalinebyitsself C:Doyoulikeketchup? C:Howaboutpickles? C:. S;250Messageacceptedfordelivery C:QUIT S:221cloingconnection在这个例子中,客户发送了一个从邮件服务器主机crepes.fr到的邮件消息,信体内容为:“Do you like ketchup?How about pickles?”。客户总共发出了5个命令,分别为:HELO,

45、MAIL FROM,RCPT TO,DATA和QUIT。这些命令的含义是不言自明的。服务器给每个命令发回应答,其中每个应答都由应答码和一些英语解释(可选)构成。这里需指出的是,SMTP使用持久连接,也就是说,如果发送邮件服务器有多个邮件消息需发送到同一个接收邮件服务器,那么所有这些消息可以在同一个TCP连接中发送。对于其中的每一个消息,客户以一个新的“HELO crepes.fr”命令开始整个消息发送过程,但是QUIT命令要等到所有消息都发送完之后才发出。我们可以尝试使用nc工具直接与SMTP服务器进行对话。首先指定使用SMTP端口号25连接到某台邮件服务器主机,这样就在本地主机和该邮件服务器

46、主机之间建立了一个SMTP使用的TCP连接。登录完毕之后,应该立即收到来服务器的应答,接着就可以在合适的时刻依次发出现SMTP命令了。如果你连接到你朋友的5MTP服务器,就可以用这种方式向你的朋友发送邮件了(也就是说,不必使用邮件用户代理)。当然你也可以使用更常见的telnet工具,不过我发现用telnet建立起连接后常会遇到一些输入方面的问题。与HTTP的比较我们简单地比较一下SMTP和HTTP。这两个协议都是用于从一台主机向另一台主机传送文件;HTTP用于从web服务器向Web用户代理(即浏览器)传送文件(或对象),SMTP用于从一个邮件服务器向另一个邮件服务器传送文件(也就是电子邮件消息

47、)。在传送文件时,SMTP和持久HTTP都使用持久连接。可见,这两个协议具有一些共同的特征,不过它们之间的差别也是显著的。首先,HTTP基本上是一个内拉式协议(pull protocol)有人把信息上传到web服务器中,用户则在方便的时候使用HTTP把这些信息从服务器上拉过来。更确切地说,TCP连接是由想要接收文件的主机发起的。SMIP则基本上是一个外推式协议(pushProtoco1)发送端邮件服务器把文件推送给接收端邮件服务器。更确切地说,TCP连接是由想要发送文件的主机发起的。SMTP和HTTP的第二个重要差别是,SMTP要求包括信体部分在内的每个邮件消息都是7位ASCII文本格式。另外

48、,SMTP RFC还要求每个邮件消息的信体以仅由单个点号构成的一行结束,改用ASCII字符名称来说就是每个邮件消息的信体必须以“CRLF.CRLF“结尾,其中CR和LF分别代表回车符和换行符。这种方式下,当从同一个SMTP客户接收一系列邮件消息时,SMTP服务器可以通过在字节流中搜索“CRLF.CRLF”来分割每个消息。要是信体不是ASCII文本,而是二进制数据(譬如说一幅JPEG图像),那么这些二进制数据字节流中偶尔出现“CRLF.CRLF”这一模式是有可能的。这将导致SMTP服务器不正确地认定当前邮件消息已结束。为避免这样的问题,二进制数据应以一定的方式先编码成ASCII文本,保证其中不使

49、用特定的ASCH字符(包括点号)。HTTP无论是持久的还是非持久的都不需要预先把二进制数据转换成ASCII本。对于持久的HTTP,每个TCP连接只传送一个对象:服务器关闭连接后,客户就知道己接收到一个完整的响应消息。对于非持久的HTTP,每个响应消息中包含一个Content-length:头部,使得客户能够确定每个响应消息的边界。SMTP和HTTP的第三个重要差别涉及如何处理包含文本和图像或其他媒体类型的文档。HTTP是把每个对象封装在各自的HTTP响应消息中。SMTP(正如接下去要详细讨论的那样)是把同一个邮件内的各个对象置于同一个邮件消息中。邮件消息格式和MIME当Alice给Bob发一封

50、普通的邮政信件时,她把这封信装入一个信封里,在信封上写明Bob的地址和自己的回信地址,然后投入邮箱;邮政业务在递送这封信的过程中,也会把表明时间和地点的邮戳盖在信封上。类似地,当电子邮件消息从一个人传送到另个人时,在信体之前会有一个含有这些外围信息的信头。这些信息实际上由一系列在RFC 822中定义的邮件消息头部及其值构成。邮件消息中构成信头的各个头部和信体之间以一个空行(也就是CRLF)分割。RFC 822详细说明了各个邮件消息头部的格式和含义。与HTTP一样,邮件消息的每个头部都是直观可读的文本,由一个后跟冒号的关键字和相应的值构成。邮件消息的头部有些是必须的,有些则是司选的。每个信头必须

51、有一个From:头部和一个To:头部.还可以有一个Subject:头部和其他头部。需注意的是,这些头部和先前讨论的SMTP命令不是一回事:SMTP命令是SMTP握手协议的一部分,邮件消息头部则属于邮件消息的一部分。下面是一个典型的电子邮件信头:From:alicecrepes.frTo:bobSubject:this is a test信头之后空一行就是信体。整个消息以只含有一个点号的单独行结束.非ASCII数据的MlME扩展RFC 822中说明的邮件消息头部尽管足以满足发送普通ASCII文本邮件的要求,但是在多媒体消息(例如,包含图像、音频或视频数据的消息)的描述和非ASCII文本格式(例如

52、,非英语国家使用的文字)的承载上,却显然不够。要发送非ASCII文本的邮件消息,必须由发送者的用户代理在其中增添额外的头部RFC 2045和RFC 2046定义了这些额外的头部,它们是对RFC 822的多用途因特网邮件扩展(Multipurpose Internet Mail Extensions,简称MIME)。支持多媒体的两个关键MIME头部是Content-Type:和Content-Tansfer-Encoding:。Content-Type:头部允许接收用户代理对邮件消息采取合适的行动。例如,通过指出信体内容为一个JPG图像,接收用户代理可以把信仲定向到某个JNG解压缩例程。我们已经

53、知道,为确保SMTP正常工作,非ASCII文本消息必须预先编码成ASCH文本格式。Content-Tansfer-Encoding:头部用于告知接收用户代理信体已被编码咸ASCII格式,并指出具体编码方式。这样,当某个用户代理收到一个包含这两个头部的邮件消息时,它首先使用Content-Tansfer-Encoding:头部的值把信体转换成原始的非AscH文本形式,再使用Content-Type:头部的值确定自己应该对信体采取什么行动。下面看一个具体的例子。假设Alice想给Bob发送一个JPEG图像,她为此调用自己的用户代理,给出Bob的电子邮件地址和邮件消息的主题,并把这个JPG图像插入这

54、个邮件消息的信体中(这个图像有可能是作为该邮件消息的“附件”插入的,具体取决于Alice所用的用户代理)。Alice填写完邮件消息后让用户代理把它发送出去。Alice的用户代理生成一个大体如下的MIME消息:From:alicecrepes.fr To:bob Subject:pictureofmine MIME-Version:1.0 Content-Transfer-Encoding:base64 Content-Type:image/jpeg .base64编码数据.) .base64编码数据.)从中我们可以看到,alice的用户代理采用base64编码格式对这个JPEG图像进行编码i而

55、base64是在MIME中标准化的用于转换成某种可接受的7位ASCII格式的编码技术之一RFC 2045。另一种流行的内容传送编码技术称为带转义的可打印(叫quoted-printable)编码格式,一般用于把普通的ASCII邮件消息转换成不带非期望字符串(例如由单个点号构成的行)的ASCII文本。Bob阅读邮件时,其用户代理所操作的是同一个MIME消息。该用户代理看到值为base64的Content-Transfer-Encoding:头部后,知道该邮件消息中还有一个值为image/jpeg的Content-Type:头部,它告知Bob的用户代理应该对信体进行JPEG解压缩。该邮件消息中的M

56、IME-Version:头部自然是在指示本消息所用的MIME版本。需注意的是,邮件消息的其余部分仍然遵循标准的RFC 922/SMTP格式。具体地说,在信头之后有一个空行,接着是信体:在信体结束处是一个仅由单个点号构成的行。我们接下去深入讨论一下Content-Type;头部。该头部按照MIME规范RFC 2046有如下的格式;Content-Type: type/subtype; parameters其中parameters(以及其前面的分号)是可选的。通过在Content-Type:头部给出媒体类型名和子类型名,MIME消息信体中数据的性质得以说明。类型名和子类型名之后的其余部分是一组参数

57、。总的说来,顶级类型名用于声明数据的一般类型,子类型名用于指明这类数据中的某种具体格式。参数是对于类型的修饰说明,具体取决于类型和子类型本身,基本上不影响内容性质的指定。MIME是按照可扩展这一目标仔细地设计的,并预期媒体类型/子类型以及它们的相关参数会随时间显著增长。为确保以有秩序的文档完备公开的方式开发这些类型/子类型,MIME建立了一套注册程式,把因特网已分配数值权威(Internet Asigned Numbers Authority,简称IANA)作为MIME各个可扩展域的中心注册处。BFC 2048具体说明了这些可扩展域的注册程式。当前已定义的MIME顶级类型共有7个,每个类型关联

58、一组子类型,其数量在逐年增长。下面是其中的5个类型;text;text类型用于向接收者的用户代理指出消息体为文本。该类型极为普遍的一个类型/子类型对为text/plain。子类型plain指定不含任何格式定义信息的普通文本。plain文本应该不加任何解释地按照原样显示,不需要特殊的软件,能支持给定的字符集就行。在实际的邮件消息中经常能看到值为比text/plain;charset=gb2312或text/plain;charset=ISO88591的Content-Type:头部,其中的参数指出用于产生相应消息的字符集。另一个变得越来越普遍的类型/子类型对是text/html。子类型html指

59、示接收用户代理解释嵌埋在消息体中的html标记,从而像Web页面那样显示信件内容,其中有可能包含各种字体的文本、超链接、Java小应用程序,等等。image:image类型用于向接收用户代理指出消息体为图像。该类型较为流行的两个类型/子类型对为iamge/gif和image/jpeg,接收用户代理碰到这样的类型时,就知道该把消息体作为GIF图像或JPEG图像解码并显示。audio:audio类型需要音频输出设备(例如扬声器或电话)来表达内容。这类型中常见的已标准化子类型包括basic(基本8位u-law编码)和32kadpcm(RFC 1911中定义的一种32Kbps格式)。video:vid

60、eo类型的子类型包括mpeg和quicktime。application:application类型适用于不适合归为其他类别的数据,通常用在必须由某个应用程序预先处理才能为用户所见或所用的数据上。例如.当用户在某个电子邮件消息中附带一个微软word文档时,其用户代理一般把它的类型子类型对指定为application/msword;这将导致接收用户代理启动微软word应用程序,并把该MIME消息的信体传递给它处理。这类型极为重要的一个子类型是octet-stream,它用于指示信体含有任意的二进制数据。收到内容类型为application/octet-stream的邮件消息后,接收用户代理会提示

温馨提示

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

评论

0/150

提交评论