目录
2.3 文件传输协议
2.4 因特网中的电子邮件
- SMTP
- 与HTTP的对比
- 邮件报文格式和MIME
- 邮件访问协议
文件传输协议:FTP
在一个典型的FTP会话中,用户坐在一台主机(本地主机)前面,向一台远程主机传输(或接收)文件。为使用户能访问它的远程账户,用户必须提供一个用户标识和口令。在提供了这种授权信息以后,用户就能从本地文件系统向远程主机系统传送文件。反之亦然。
较为常见的命令如下:
- USER username:用于向服务器传送用户指标
- PASS password:用于向服务器发送用户口令
- LIST: 用于请求服务器回送当前远程目录中的所有列表,该文件列表是一个(新建且非持续连接)数据连接传送的,而不是在控制TCP连接上传送。
- RETR filename:用于从远程主机当前目录检索(即get)文件。该命令引起远程主机发起一个数据连接,并经该数据连接发送所请求的文件。
- STOR filename:用于在远程主机的当前目录上存放(即put)文件。
贯穿控制连接,在用户发出的命令和FTP发送的命令之间通常有一一对应关系。每个命令都对应着一个从服务器发向客户的回答。回答是一个3位数字,后跟一个可选信息。这与HTTP响应报文状态行的状态码和状态信息的结构相同。一些典型的回答连同它们可能的报文如下所示: - 331
- 125
- 425
- 452
2.4 因特网中的电子邮件
从该图中我们可以看到它有3个主要组成部分:
- 用户代理(user agent)
- 邮件服务器(mail server)
- 简单邮件传输协议(Simple Mail Transfer Protocol)
邮件服务器形成了电子邮件体系结构的核心。每个接收方在其中的某个邮件服务器上有一个邮箱。Bob的邮箱管理和维护着发送给他的报文。一个典型的邮件发送过程是:从发送方的用户代理开始,传输到发送方的邮件服务器,再传输到接收方的邮件服务器,然后在这里被分发到接收方的邮件中。当Bob要在他要在他的邮箱中读取该报文时,包含他的邮箱的邮件服务器(使用用户名和口令)来鉴别Bob。Alice的邮件也必须能处理Bob的邮件服务器的故障。如果Alice的服务器不能将邮件交付给Bob的服务器,Alice的邮件服务器在一个报文队列中保存该报文并在以后尝试再次发送。通常每30分钟左右进行一次尝试;如果几天后仍不能成功,服务器就删除该报文并以电子邮件的形式通知发送方(Alice)。
SMTP是因特网电子邮件中主要的应用层协议。它使用TCP可靠数据传输服务,从发送方的邮件服务器向接收方的邮件服务器发送邮件。像大多数应用层协议一样,SMTP也有两个部分:运行在发送方邮件服务器的客户端和运行在接收方邮件服务器的服务端。每台邮件服务器发送邮件时,它就表现为SMTP的客户;当邮件服务器从其他邮件服务器上接收邮件时,它就表现为一个SMTP的服务器。
2.4.1 SMTP
SMTP是因特网电子邮件应用的核心。如前所述,SMTP用于从发送方的邮件服务器发送报文到接收方的邮件服务器。
为了描述SMTP的基本操作,我们观察一种常见的情景:
假设Alice想给Bob发送一封简单的ASCII报文:
- Alice调用她的邮件代理程序提供Bob的邮件地址(例如bob@someschool.edu),撰写报文,然后指示用户代理发送该报文。
- Alice的用户代理把报文发给她的邮件服务器,在那里该报文被放在报文队列中。
- 运行在Alice的邮件服务器上的SMTP客户端发现了报文队列中的这个报文,它就创建一个到运行在Bob的邮件服务器上的SMTP服务器的TCP连接。
- 在经过一些初识SMTP握手后,SMTP客户通过该TCP连接发送Alice的报文。
- 在Bob的邮件服务器上,SMTP的服务器端接收该报文,Bob的邮件服务器然后将该报文放入Bob的邮箱中。
-
在Bob方便的时候,他调用用户代理阅读该报文。
观察到下述现象是重要的:SMTP一般不使用中间邮件服务器发送邮件,即使这两个邮件服务器位于地球的两端也是这样。假设Alice的邮件服务器在中国香港,而Bob的服务器在美国圣路易斯,那么这个TCP连接也是从香港服务器到圣路易斯服务器之间的直接相连。特别是,如果Bob的邮件服务器没有开机,该报文会保留在Alice的邮件服务器上并等待进行新的尝试,这意味着邮件并不在中间的某个邮件服务器存留。
image.png
我们现在仔细观察一下,SMTP是如何将一个报文从发送邮件服务器传送到接收邮件服务器的。我们将看到,SMTP与人类面对面交往的行为方式有许多类似性。首先,客户SMTP(运行在发送邮件服务器上)在25号端口建立一个服务器SMTP(运行在接收邮件服务器上)的TCP连接。如果服务器没有开机,客户会字稍后继续尝试连接。一旦连接建立,服务器和客户执行某些应用层的握手,就像人们在互相交流前先进行自我介绍一样。SMTP的客户和服务器在传输信息前先相互介绍。在SMTP握手的阶段,SMTP客户和服务器彼此介绍之后,客户发送该报文。SMTP能依赖TCP提供的可靠数据无差错地将邮件投递到接收服务器。该客户如果有另外的报文要发送到该服务器,就在该相同的TCP连接上重复这种处理;否则,它指示TCP关闭连接。
2.4.2 与HTTP的对比
我们简要地比较一下SMTP和HTTP。这两个协议都用于从一台主机向另一台主机传送文件:
HTTP从Web服务器向Web客户(通常是一个浏览器)传送文件(也称为对象);SMTP从一个邮件服务器向另一个邮件服务器传送文件(即电子邮件报文)。当进行文件传输时,持续的HTTP和SMTP都使用持续连接。因此,这两个协议有一些共同特征。然而,两者之间也有一些重要的区别。首先,HTTP主要是一个拉协议,即在方便的时候,
网友评论