文件传送协议FTP概述文件传送协议FTP(FileTransferProtocol)是因特网上使用得最广泛的文件传送协议。FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。FTP屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。RFC959很早就成为了因特网的正式标准。文件传送并非很简单的问题网络环境中的一项基本应用就是将文件从一台计算机中复制到另一台可能相距很远的计算机中。初看起来,在两个主机之间传送文件是很简单的事情。其实这往往非常困难。原因是众多的计算机厂商研制出的文件系统多达数百种,且差别很大。FTP的基本工作原理网络环境下复制文件的复杂性:(1)计算机存储数据的格式不同。(2)文件的目录结构和文件命名的规定不同。(3)对于相同的文件存取功能,操作系统使用的命令不同。(4)访问控制方法不同。FTP特点文件传送协议FTP只提供文件传送的一些基本的服务,它使用TCP可靠的运输服务。FTP的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。FTP使用客户服务器方式。一个FTP服务器进程可同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。主进程的工作步骤如下打开熟知端口(端口号为21),使客户进程能够连接上。等待客户进程发出连接请求。启动从属进程来处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发地进行。两个连接控制连接在整个会话期间一直保持打开,FTP客户发出的传送请求通过控制连接发送给服务器端的控制进程,但控制连接不用来传送文件。实际用于传输文件的是“数据连接”。服务器端的控制进程在接收到FTP客户发送来的文件传输请求后就创建“数据传送进程”和“数据连接”,用来连接客户端和服务器端的数据传送进程。数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行。FTP使用的两个TCP连接控制进程FTP客户端FTP服务器端因特网TCP控制连接TCP数据连接用户界面控制进程数据传送进程数据传送进程当客户进程向服务器进程发出建立连接请求时,要寻找连接服务器进程的熟知端口(21),同时还要告诉服务器进程自己的另一个端口号码,用于建立数据传送连接。接着,服务器进程用自己传送数据的熟知端口(20)与客户进程所提供的端口号码建立数据传送连接。由于FTP使用了两个不同的端口号,所以数据连接与控制连接不会发生混乱。两个不同的端口号使协议更加简单和更容易实现。在传输文件时还可以利用控制连接(例如,客户发送请求终止传输)。使用两个不同端口号的好处电子邮件概述电子邮件(e-mail)是因特网上使用得最多的和最受用户欢迎的一种应用。电子邮件把邮件发送到收件人使用的邮件服务器,并放在其中的收件人邮箱中,收件人可随时上网到自己使用的邮件服务器进行读取。电子邮件不仅使用方便,而且还具有传递迅速和费用低廉的优点。现在电子邮件不仅可传送文字信息,而且还可附上声音和图像。电子邮件的一些标准发送邮件的协议:SMTP读取邮件的协议:POP3和IMAPMIME在其邮件首部中说明了邮件的数据类型(如文本、声音、图像、视像等),使用MIME可在邮件中同时传送多种类型的数据。电子邮件的最主要的组成构件发送方邮件缓存接收端邮件服务器用户代理SMTPSMTPPOP3发送端邮件服务器用户代理用户邮箱接收方(发送邮件)(发送邮件)(读取邮件)因特网SMTPPOP3发送邮件发送邮件SMTP读取邮件TCP连接TCP连接发送方邮件服务器SMTP客户POP3客户发件人用户代理接收方邮件服务器SMTP服务器POP3服务器SMTP服务器SMTP客户收件人用户代理TCP连接用户代理UA(UserAgent)用户代理UA就是用户与电子邮件系统的接口,是电子邮件客户端软件。用户代理的功能:撰写、显示、处理和通信。邮件服务器的功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)。邮件服务器按照客户服务器方式工作。邮件服务器需要使用发送和读取两个不同的协议。应当注意一个邮件服务器既可以作为客户,也可以作为服务器。例如,当邮件服务器A向另一个邮件服务器B发送邮件时,邮件服务器A就作为SMTP客户,而B是SMTP服务器。当邮件服务器A从另一个邮件服务器B接收邮件时,邮件服务器A就作为SMTP服务器,而B是SMTP客户。发送和接收电子邮件的几个重要步骤发件人调用PC机中的用户代理撰写和编辑要发送的邮件。发件人的用户代理把邮件用SMTP协议发给发送方邮件服务器,SMTP服务器把邮件临时存放在邮件缓存队列中,等待发送。发送方邮件服务器的SMTP客户与接收方邮件服务器的SMTP服务器建立TCP连接,然后就把邮件缓存队列中的邮件依次发送出去。发送和接收电子邮件的几个重要步骤(续)运行在接收方邮件服务器中的SMTP服务器进程收到邮件后,把邮件放入收件人的用户邮箱中,等待收件人进行读取。收件人在打算收信时,就运行PC机中的用户代理,使用POP3(或IMAP)协议读取发送给自己的邮件。请注意,POP3服务器和POP3客户之间的通信是由POP3客户发起的。电子邮件的组成电子邮件由信封(envelope)和内容(content)两部分组成。电子邮件的传输程序根据邮件信封上的信息来传送邮件。用户在从自己的邮箱中读取邮件时才能见到邮件的内容。在邮件的信封上,最重要的就是收件人的地址。电子邮件地址的格式TCP/IP体系的电子邮件系统规定电子邮件地址的格式如下:收件人邮箱名@邮箱所在主机的域名符号“@”读作“at”,表示“在”的意思。例如,电子邮件地址xiexiren@tsinghua.org.cn邮箱所在的主机的域名在全世界必须是唯一的这个用户名在该域名的范围内是唯一的。简单邮件传送协议SMTPSMTP所规定的就是在两个相互通信的SMTP进程之间应如何交换信息。由于SMTP使用客户服务器方式,因此负责发送邮件的SMTP进程就是SMTP客户,而负责接收邮件的SMTP进程就是SMTP服务器。SMTP规定了14条命令和21种应答信息。每条命令用4个字母组成,而每一种应答信息一般只有一行信息,由一个3位数字的代码开始,后面附上(也可不附上)很简单的文字说明。SMTP通信的三个阶段1.连接建立:连接是在发送主机的SMTP客户和接收主机的SMTP服务器之间建立的。SMTP不使用中间的邮件服务器。2.邮件传送3.连接释放:邮件发送完毕后,SMTP应释放TCP连接。电子邮件的信息格式一个电子邮件分为信封和内容两大部分。RFC822只规定了邮件内容中的首部(header)格式,而对邮件的主体(body)部分则让用户自由撰写。用户写好首部后,邮件系统将自动地将信封所需的信息提取出来并写在信封上。所以用户不需要填写电子邮件信封上的信息。邮件内容首部包括一些关键字,后面加上冒号。最重要的关键字是:To和Subject。邮件内容的首部“To:”后面填入一个或多个收件人的电子邮件地址。用户只需打开地址簿,点击收件人名字,收件人的电子邮件地址就会自动地填入到合适的位置上。“Subject:”是邮件的主题。它反映了邮件的主要内容,便于用户查找邮件。抄送“Cc:”表示应给某某人发送一个邮件副本。“From”和“Date”表示发信人的电子邮件地址和发信日期。“Reply-To”是对方回信所用的地址。邮件读取协议POP3和IMAP邮局协议POP是一个非常简单、但功能有限的邮件读取协议,现在使用的是它的第三个版本POP3。POP也使用客户服务器的工作方式。在接收邮件的用户PC机中必须运行POP客户程序,而在用户所连接的ISP的邮件服务器中则运行POP服务器程序。IMAP协议(InternetMessageAccessProtocol)IMAP也是按客户服务器方式工作,现在较新的是版本4,即IMAP4。用户在自己的PC机上就可以操纵ISP的邮件服务器的邮箱,就像在本地操纵一样。因此IMAP是一个联机协议。当用户PC机上的IMAP客户程序打开IMAP服务器的邮箱时,用户就可看到邮件的首部。若用户需要打开某个邮件,则该邮件才传到用户的计算机上。IMAP的特点IMAP最大的好处就是用户可以在不同的地方使用不同的计算机随时上网阅读和处理自己的邮件。IMAP还允许收件人只读取邮件中的某一个部分。例如,收到了一个带有视像附件(此文件可能很大)的邮件。为了节省时间,可以先下载邮件的正文部分,待以后有时间再读取或下载这个很长的附件。IMAP的缺点是如果用户没有将邮件复制到自己的PC机上,则邮件一直是存放在IMAP服务器上。因此用户需要经常与IMAP服务器建立连接。必须注意不要将邮件读取协议POP或IMAP与邮件传送协议SMTP弄混。发信人的用户代理向源邮件服务器发送邮件,以及源邮件服务器向目的邮件服务器发送邮件,都是使用SMTP协议。而POP协议或IMAP协议则是用户从目的邮件服务器上读取邮件所使用的协议。HTTPHTTP基于万维网的电子邮件电子邮件从A发送到网易邮件服务器是使用HTTP协议。两个邮件服务器之间的传送使用SMTP。邮件从新浪邮件服务器传送到B是使用HTTP协议。ABSMTP网易邮件服务器mail.163.com新浪邮件服务器mail.sina.com.cn通用因特网邮件扩充MIME1.MIME概述SMTP有以下缺点:SMTP不能传送可执行文件或其他的二进制对象。SMTP限于传送7位的ASCII码。许多其他非英语国家的文字(如中文、俄文,甚至带重音符号的法文或德文)就无法传送。SMTP服务器会拒绝超过一定长度的邮件。某些SMTP的实现并没有完全按照[RFC821]的SMTP标准。MIME的特点MIME并没有改动SMTP或取代它。MIME的意图是继续使用目前的[RFC822]格式,但增加了邮件主体的结构,并定义了传送非ASCII码的编码规则。MIME和SMTP的关系非ASCII码7位ASCII码MIMESMTPMIMESMTP7位ASCII码7位ASCII码非ASCII码用户用户MIME主要包括三个部分5个新的邮件首部字段,它们可包含在[RFC822]首部中。这些字段提供了有关邮件主体的信息。定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。MIME增加5个新的邮件首部MIME-Version:标志MIME的版本。现在的版本号是1.0。若无此行,则为英文文本。Content-Description:这是可读字符串,说明此邮件是什么。和邮件的主题差不多。Content-Id:邮件的唯一标识符。Content-Transfer-Encoding:在传送时邮件的主体是如何编码的。Content-Type:说明邮件的性质。2.内容传送编码(Content-Transfer-Encoding)最简单的编码就是7位ASCII码,而每行不能超过1000个字符。MIME对这种由ASCII码构成的邮件主体不进行任何转换。另一种编码称为quoted-printable,这种编码方法适用于当所传送的数据中只有少量的非ASCII码。对于任意的二进制文件,可用base64编码。3.内容类型MIME着标准规定Content-Type说明必须含有两个标识符,即内容类型(type)和子类型(subtype),中间用“/”分开。MIME标准定义了7个基本内容类型和15种子类型。