欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 【USTC 计算机网络】第二章:应用层 - FTP、Email

【USTC 计算机网络】第二章:应用层 - FTP、Email

2025/3/21 23:30:38 来源:https://blog.csdn.net/m0_51755720/article/details/146350462  浏览:    关键词:【USTC 计算机网络】第二章:应用层 - FTP、Email

本文首先介绍了用于传输文件的文件传输协议 FTP,其特点是使用了两个独立的 TCP 连接实现文件传输,接着介绍了电子邮件及其相关的协议如 SMTP、POP3、IMAP,讲解了用户如何发送、读取以及管理邮件。

1. FTP

FTP(File Transfer Protocol,文件传输协议)是一种用于在计算机网络中传输文件的标准协议,最早由 Abhay Bhushan 在 1971 年提出,经过多次修订后,目前的规范主要见于 RFC 959(1985 年发布)。

FTP 属于应用层协议,运行在 TCP/IP 协议簇之上,常用于网站维护、软件分发、备份以及大文件传输等场景。

在这里插入图片描述

FTP 基于客户端-服务器模型,通过两个独立的 TCP 连接实现文件传输:

  • 控制连接:使用 TCP 的 21 号端口,负责传输命令(如登录、目录列表、文件操作等)与服务器的响应。整个 FTP 会话期间,控制连接始终保持打开状态,便于用户连续发出命令。
  • 数据连接:用于实际传输文件数据或目录列表。默认使用 TCP 的 20 号端口(在主动模式下),但在被动模式下,服务器会随机分配一个高位端口供数据传输使用。

在这里插入图片描述

在 FTP 会话中,客户端与服务器在控制连接上以 ASCII 文本方式传送一系列命令进行交互,常见的命令包括:

  • USER/PASS:用户登录,分别用于发送用户名和密码。
  • LIST:列出服务器当前目录中的文件和目录。
  • RETR:下载服务器上的文件到客户端。
  • STOR:上传客户端文件到服务器。
  • QUIT:退出 FTP 会话,关闭连接。

FTP 支持两种数据连接模式,以适应不同的网络环境和防火墙配置:

  • 主动模式(Active Mode)
    1. 客户端先与服务器的 21 端口建立控制连接,并发送 PORT 命令,告知服务器客户端用于数据传输的端口(通常是大于 1024 的随机端口)。
    2. 服务器使用其 20 号端口主动连接客户端指定的数据端口,建立数据连接。
    3. 由于服务器需要主动向客户端发起连接,所以当客户端处于防火墙或 NAT 之后时,可能会遇到连接受阻的问题。
  • 被动模式(Passive Mode)
    1. 客户端建立控制连接后发送 PASV 命令,请求服务器开启数据连接端口。
    2. 服务器随机开放一个高位端口,并将该端口信息返回给客户端。
    3. 客户端随后主动连接服务器提供的数据端口,建立数据连接。

被动模式有助于解决客户端防火墙或 NAT 环境下无法接收外部连接的问题。

由于 FTP 在整个会话期间会维持一个持续的控制连接,并在该连接上保存客户端的会话状态信息,因此很显然 FTP 是有状态的协议。这些状态信息包括:

  • 认证信息与会话上下文:当用户登录后,FTP 服务器会记录用户的身份、当前工作目录、传输模式(例如 ASCII 或二进制)以及主动或被动连接的设置。之后所有的文件操作(如文件上传、下载、删除、目录切换等)都依赖于这些状态信息。
  • 连续命令交互:FTP 协议设计为一次会话内可以执行多条命令,服务器需要根据前面的命令(例如用户登录或改变目录的命令)来正确解析后续命令。这种会话性要求服务器保持会话上下文,直到用户退出会话。
  • 双连接模型:FTP 使用一条长期存在的控制连接来传递命令和响应,而每次传输数据时才建立临时的数据连接。服务器在控制连接上保持状态,确保数据连接与当前会话相关联。

2. Email

电子邮件系统采用客户端/服务器架构,其核心由三大部分构成:用户代理、邮件服务器和邮件传输协议。

在这里插入图片描述

2.1 用户代理

用户代理又名邮件阅读器,是用户与电子邮件系统交互的界面,它允许用户撰写、阅读、回复、转发、存储和管理电子邮件。用户代理通常以软件客户端(如 Outlook、Foxmail、Thunderbird)或基于 Web 的邮件客户端(如 Gmail、Hotmail)的形式存在。

当用户撰写邮件后,用户代理将邮件打包并通过邮件传输协议发送到邮件服务器;同时,它也负责从邮件服务器上提取、显示邮件内容,供用户查阅和管理。

2.2 邮件服务器

邮件服务器是电子邮件系统的核心部分,每个用户在邮件服务器上都有一个邮箱,用来存储收到的邮件。邮件服务器负责接收、存储和转发邮件,并确保邮件能够安全可靠地传送给目标用户。

邮件服务器通常需要 24 小时不间断运行,以确保用户能随时接收邮件,其工作流程有以下三种阶段:

  • 发送阶段:当用户通过用户代理发送邮件时,邮件首先被传送到发送方的邮件服务器。
  • 中继阶段:发送方邮件服务器使用邮件传输协议(如 SMTP)将邮件转发到收件方的邮件服务器。
  • 接收阶段:收件方的邮件服务器接收到邮件后,存储在用户对应的邮箱中,等待用户通过用户代理来读取。

2.3 SMTP

邮件传输协议规定了电子邮件在不同邮件服务器之间以及用户代理与邮件服务器之间的传输规则。最常用的传输协议是简单邮件传输协议(Simple Mail Transfer Protocol,SMTP),它负责将邮件从发送方传送到接收方。

SMTP 用于在邮件发送过程中将邮件从发送方的邮件服务器传输到接收方的邮件服务器,或从用户代理(如邮件客户端)传送邮件到邮件服务器。它的主要功能是负责邮件的路由和转发,是电子邮件传输链路中的“推”协议。

SMTP 工作机制如下:

  • 建立连接:发送方的邮件服务器或用户代理通过 TCP 连接(通常使用端口 25、587 或 465)与接收方邮件服务器建立连接。
  • 命令与响应:SMTP 是一种基于文本的命令/响应协议。通信过程包括一系列标准命令,如 HELO/EHLO(问候)、MAIL FROM(指定发件人)、RCPT TO(指定收件人)、DATA(开始传送邮件正文)以及 QUIT(结束会话)。
  • 推送传输:SMTP 采用“推送”模式,发送方主动将邮件“推”送给目标邮件服务器;在邮件传输过程中,邮件会经过中继服务器,如果中继服务器暂时无法投递,则 SMTP 协议定义了重试和错误反馈机制。
  • 状态性:在一次 SMTP 会话中,连接保持状态,直到整个邮件传输过程完成并由双方以 QUIT 命令结束连接。

与 HTTP 不同的是,HTTP 采用“拉取”模式,即客户端发起请求,服务器响应数据,且 HTTP 协议本身是无状态的。

我们画图举个发送邮件的例子:

在这里插入图片描述

SMTP 命令是 SMTP 会话中客户端(或发送服务器)向服务器发送的一系列文本指令,用于建立连接、确定发件人与收件人、通知邮件数据开始、结束会话等操作。上面这个例子中的 SMTP 交互命令与响应可能是下面这样的:

在这里插入图片描述

SMTP 协议的数据都是以明文方式传输的,也就是说,邮件内容、邮件头信息以及认证信息在传输过程中没有经过加密处理,这会带来中间人攻击和窃听的风险。不过,近年来为提高安全性,许多邮件服务器和客户端已经开始支持 STARTTLS 扩展,允许在原有的 SMTP 会话中升级为 TLS 加密连接,从而保护数据传输的安全性。但需要注意的是,并非所有 SMTP 会话都强制启用加密,如果双方未配置或未协商成功,则仍可能以明文传输。

当客户端发送 DATA 命令后,服务器返回提示后,客户端开始发送所谓的“SMTP 报文”,也就是邮件的实际内容。这个报文不是一系列 SMTP 控制命令,而是整个电子邮件的内容,包括:

  • 邮件头(首部行):由一系列头部字段组成,如 From、To、Subject、Date 等,描述邮件的基本信息。
  • 空行:邮件头和正文之间必须有一个空行作为分隔。
  • 邮件正文(主体):用户撰写的实际消息内容,只能是 ASCII 字符。

整个报文以一行单独的点 . 结束,表示邮件内容传输完毕。

最初的 SMTP 协议在设计时只支持 7 位 ASCII 字符,这意味着它只能直接传输 ASCII 字符集内的字符。但是随着国际化和多媒体邮件的需求增加,人们开发了 MIME 标准。

MIME(Multipurpose Internet Mail Extensions,多用途互联网邮件扩展)是一组扩展标准,定义了如何在邮件中描述内容的格式、字符编码和多部分结构。它使得邮件能够包含非 ASCII 字符、多媒体内容和附件,同时依然能通过 SMTP 这种只支持 7 位 ASCII 的传输协议发送。

MIME 引入了诸如 Base64 和 Quoted-Printable 等编码方法,把二进制数据和非 ASCII 字符转换成 7 位 ASCII 格式。在原有邮件头的基础上,MIME 增加了若干新的头部字段,如 MIME-VersionContent-TypeContent-Transfer-EncodingContent-Disposition。这些字段用于描述邮件主体的类型、编码方式以及如何处理附件等信息。

在这里插入图片描述

通过 MIME,可以构建包含多个部分的邮件(Multipart),例如同时包含纯文本和 HTML 格式内容,或在邮件中附带图像、音频、视频等附件。

2.4 邮件访问协议

邮件访问协议主要指的是用户如何从邮件服务器上读取和管理邮件的协议,属于“拉取”类型的协议,最常见的有两种:POP3 和 IMAP。

(1)POP3

POP3(Post Office Protocol,邮局协议版本)是一种较为简单的邮件访问协议,专为将服务器上的邮件下载到本地而设计。它最初设计时主要用于单一设备的邮件接收场景。

当用户启动邮件客户端时,POP3 客户端会与邮件服务器建立 TCP 连接(通常使用端口 110,安全版本为 POP3S 使用端口 995),并对用户进行身份认证。认证成功后,服务器会将用户邮箱中的所有邮件下载到本地。下载后,邮件通常会从服务器上删除(当然,现代客户端通常提供“保留服务器副本”的选项)。

POP3 协议简单,适合只在单一设备上管理邮件;对网络带宽要求较低,便于离线查看邮件。但是由于邮件下载后默认会从服务器上删除,无法在多个设备之间保持同步;对邮件分类、文件夹管理支持有限。

在这里插入图片描述

(2)IMAP

IMAP(互联网消息访问协议)设计时考虑到了现代用户在多个设备(如手机、电脑、平板)上访问邮件的需求。它允许用户直接在服务器上操作邮件,而不必将邮件全部下载到本地,具有远程目录维护的特性。

用户通过 IMAP 客户端(通常使用端口 143,安全版本 IMAPS 使用端口 993)连接到邮件服务器,并进行身份验证。连接建立后,客户端可以:

  • 查看邮件列表、邮件头或仅下载部分邮件内容(如只下载邮件摘要),从而节省带宽;
  • 对邮件进行标记(已读、未读、加星等)、移动、删除或复制操作,这些操作会直接反映在服务器上;
  • 支持多个文件夹的管理,方便用户对邮件进行分类整理。

IMAP 协议适合多设备同步,用户在不同设备上操作邮件状态时能保持一致;支持服务器端的邮件管理,如文件夹创建、邮件标记等。但是协议较为复杂,对服务器资源要求较高;在网络不稳定的环境下,响应速度可能会受到影响。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词