<font color-#FFD700>“Knowledge is power” - Sir Francis Bacon
文件传输协议:FTP
FTP协议可以在本地文件系统和远程文件系统之间传输文件。
概述
FTP在用户和服务器之间架起两条TCP连接,控制连接和数据连接。
- 控制连接:控制连接可以在两个主机之间传输用于控制的信息,类似于HTTP中的方法
- 数据连接:数据连接在两个系统之间传输文件,类似于HTTP中被传输的对象。
我们一般称这种控制和数据分开的方式是带外连接,与其相对的是带内链接。
注意,在整个过程中,控制连接是持续连接的,即在用户访问服务器时一直用这一条控制连接;数据连接是非持续连接的,即在每个文件传输完后关闭该连接,传输下一个文件时再建立一个连接。
FTP保留用户状态,包括这个用户的控制连接和在远程文件系统中的位置。
FTP中的命令和回答由控制连接传输。出于精炼的目的,我们不多介绍。
电子邮件
因特网的电子邮件由用户代理(类似于浏览器),邮件服务器和简单邮件传输协议(SMTP)。
邮件服务器
邮件服务器的作用包括:
- 收集多个用户代理的邮件并发送到另外一些邮件服务器
- 以每个用户代理一个邮箱的方式分开保存发送到这个服务器的邮件,并在用户代理请求的时候发给它们
- 在传输邮件过程中遇到错误,发送方邮件服务器周期性重复尝试发送;几天后若依然不成功,以电子邮件的形式通知用户
SMTP
SMTP是运行在邮件服务器上的,每台邮件服务器既运行SMTP客户端也运行SMTP服务器端。
运行过程
- A想要发送一封邮件给B,它先发送一封邮件给它的邮件服务器。
- A的邮件服务器将这封邮件放入报文队列。
- A的邮件服务器发起一个到B所属邮件服务器的TCP连接并发送报文。
- B所属的邮件服务器将该邮件放入B的邮箱中。
- B调用用户代理阅读邮件。
报文交换
我们接下来看一下发送方邮件服务器与接收方邮件服务器之间交换的报文。注意,由于SMTP是一种FTP,所以他也有控制连接和数据连接,我们这里把这两个连接上的报文拿到一起来说。
如图所示,上图的红框代表发送方邮件服务器通过控制连接发生的命令,黄框代表接收方邮件服务器对命令做出的应答,蓝框代表在数据连接上发送的数据,即报文。
注意,SMTP使用持续连接:它通过同一个TCP连接发送所有应被发生的报文,并且对每一个报文使用MAIL FROM命令指出它的发送用户(一个邮件服务器上有多个用户要发送的报文),在所有报文发送完成后再使用QUIT命令关闭TCP连接。
SMTP与HTTP对比
相同点
- 两个协议都用于主机之间传送文件
- 两个协议都使用持续连接
不同点
- HTTP是一个拉协议,SMTP是一个推协议。
HTTP中的TCP连接由请求对象的主机发起,这个主机想从服务器“拉”一个对象过来。
SMTP中的TCP连接由发送文件的主机发起,这个主机想“推”一个文件到远处的另一个主机。 - SMTP中的报文只能使用7biteASCII码格式,HTTP无此限制
- SMTP为所有对象封装到一个报文中,而HTTP为每个对象封装一个HTTP响应报文
邮件报文格式
注意,下图的一整个部分都是邮件报文,属于上文报文交换中蓝框中的部分。
简要介绍一下首部行:
首部行
在首部中,From和To首部行是必带的,剩下的Subject首部行和其他的首部行都是可选的。顾名思义,From首部行指明发送用户,To首部行指明接收用户。
邮件访问协议
邮件访问协议用于接收用户从他的邮件服务器取出邮件。比较流行的邮件访问协议包括第三版的邮局协议(POP3),因特网邮件访问协议(IMAP),HTTP。
POP3
POP3分为特许,事务处理,更新三个阶段。
特许
用户代理向POP3服务器发送自己的用户名和口令(密码),以表明身份。下图是特许阶段的报文交换过程:
事务处理
事务处理阶段中,用户代理接收邮件。它有两种接收的方式,分别是“下载并删除”和“下载并保留”。
- “下载并删除”指在取出时为邮件打上删除标记,在更新阶段将被打上标记的邮件删除。
- “下载并保留”指不打上删除标记,依然留在邮件服务器内。
注意,是在更新阶段进行删除,并不是马上删除。
更新
删除打上标记的邮件。
IMAP
IMAP服务器中用多个文件夹存储邮件,用户在每个主机上都能通过这些文件夹来查找邮件。
它对每个收件人自带一个INBOX文件夹,邮件到达服务器时先与这个文件夹相关联。收件人可以创建文件夹并将这些邮件移动到新的文件夹中进行各种操作。
IMAP允许用户代理只获取一部分报文或一个报文的其中一部分。
Web中的电子邮件
在Web中,用户代理和邮件服务器之间通过HTTP传输邮件,而两个邮件服务器之间通过SMTP传输邮件。
我是霜_哀,在算法之路上努力前行的一位萌新,感谢你的阅读!如果觉得好的话,可以关注一下,我会在将来带来更多更全面的算法讲解!