6.2 FTP、电子邮件与万维网 HTTP

文件传输协议 FTP 的控制连接与数据连接;电子邮件系统的组成,SMTP、POP3、IMAP 与 MIME;万维网与 URL,HTTP 的报文结构、持续与非持续连接、流水线,以及 Cookie。

考查要求 ★★★ 重点掌握 FTP 控制连接 21数据连接 20带外传送SMTPPOP3IMAPMIMEURLHTTP 无状态持续连接流水线CookieHTTP 报文

文件传输协议 FTP

FTP 是因特网上使用得最广泛的文件传输协议。FTP 提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。它屏蔽了各计算机系统的细节,因而适合在异构网络中的任意计算机之间传送文件。FTP 采用客户/服务器方式,使用 TCP 可靠的传输服务。

FTP 在工作时使用两个并行的 TCP 连接:

  • 控制连接(服务器端口 21):服务器监听 21 号端口,等待客户连接,建立在这个端口上的连接称为控制连接,用来传输控制信息(如连接请求、传送请求等),并且以 7 位 ASCII 格式传送。FTP 客户发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件。在传输文件时还可以使用控制连接(如客户在传输中途发一个中止传输的命令),因此控制连接在整个会话期间一直保持打开状态;
  • 数据连接(服务器端口 20):服务器端的控制进程在接收到 FTP 客户发来的文件传输请求后,就创建”数据传送进程”和”数据连接”。数据连接用来连接客户端和服务器端的数据传送进程,数据传送进程实际完成文件的传送,在传送完毕后关闭”数据传送连接”并结束运行。

因为 FTP 使用了一个分离的控制连接,所以也称 FTP 的控制信息是带外(Out-of-band)传送的。使用 FTP 时,要修改服务器上的文件,就需要先将此文件传送到本地主机,然后再将修改后的文件副本传送到原服务器,来回传送耗费很多时间。网络文件系统 NFS 则采用另一种思路,它允许进程打开一个远程文件,并能在该文件的某个特定位置开始读写数据。

电子邮件

电子邮件是一种异步的通信方式,通信时不需要双方同时在场。电子邮件把邮件发送到收件人使用的邮件服务器,并放在其中的收件人邮箱中,收件人可以随时上网到自己使用的邮件服务器进行读取。

发件人用户代理发送方邮件服务器接收方邮件服务器收件人用户代理① SMTP 发送② SMTP 转发(TCP 25)③ POP3/IMAP 请求④ 读取邮件
电子邮件的发送与读取:发信用 SMTP(推),收信用 POP3 / IMAP(拉)
  • 用户代理(UA):用户与电子邮件系统的接口,如 Outlook、Foxmail;
  • 邮件服务器:功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)。邮件服务器采用客户/服务器方式工作,但它必须能够同时充当客户和服务器;
  • 邮件发送协议和读取协议:邮件发送协议用于用户代理向邮件服务器发送邮件或在邮件服务器之间发送邮件,如 SMTP;邮件读取协议用于用户代理从邮件服务器读取邮件,如 POP3。

SMTP

简单邮件传输协议 SMTP 是一种提供可靠且有效的电子邮件传输的协议,它控制两个相互通信的 SMTP 进程交换信息。SMTP 使用 TCP 连接,端口号为 25,是一种”推”(Push)协议。SMTP 通信的三个阶段:连接建立、邮件传送、连接释放。SMTP 只能传送一定长度的 7 位 ASCII 码邮件。

MIME

通用因特网邮件扩充 MIME 并没有改动 SMTP 或取代它。MIME 的意图是继续使用目前的格式,但增加了邮件主体的结构,并定义了传送非 ASCII 码的编码规则(如中文、图片、音视频附件)。也就是说,MIME 邮件可在现有的电子邮件程序和协议下传送。

POP3 与 IMAP

  • POP3(邮局协议第 3 版)是一个非常简单但功能有限的邮件读取协议,使用 TCP,端口号为 110,是一种”拉”(Pull)协议。POP3 有两种工作方式:“下载并保留”和”下载并删除”;
  • IMAP(因特网报文存取协议)比 POP3 复杂得多。IMAP 为用户提供了创建文件夹、在不同文件夹之间移动邮件及在远程文件夹中查询邮件等联机命令,为此 IMAP 服务器维护了会话用户的状态信息。IMAP 的另一特性是允许用户代理只获取报文的某些部分(例如先只读取首部)。端口号 143;
  • 基于万维网的电子邮件:用户代理就是浏览器,用户与邮件服务器之间使用 HTTP;邮件服务器之间仍使用 SMTP。

万维网 WWW 与 HTTP

万维网 WWW 是一个资料空间,在这个空间中:一样有用的事物称为一样”资源”,并由一个全域”统一资源定位符”(URL)标识。这些资源通过超文本传输协议(HTTP)传送给使用者,而后者通过单击链接来获取资源。万维网的内核部分是由三个标准构成的:URL(负责标识万维网上的各种文档)、HTTP(应用层协议,使用 TCP 连接进行可靠的传输)、HTML(超文本标记语言)。

URL 的一般形式是:<协议>://<主机>:<端口>/<路径>,例如 http://www.example.com:80/index.html。

HTTP 的操作过程

  1. 浏览器分析链接指向页面的 URL,向 DNS 请求解析 www.example.com 的 IP 地址;
  2. 域名系统 DNS 解析出服务器的 IP 地址;浏览器与服务器建立 TCP 连接(默认端口 80);
  3. 浏览器发出取文件命令:GET /index.html;服务器给出响应,把文件 index.html 发送给浏览器;
  4. 释放 TCP 连接(非持续连接时);浏览器解析 index.html 文件,显示页面,并按需请求其中引用的图片等对象。

HTTP 的特点

  • HTTP 使用 TCP 作为运输层协议,保证了数据的可靠传输。HTTP 不必考虑数据在传输过程中被丢弃后又怎样被重传。但是,HTTP 协议本身是无连接的(通信双方在交换 HTTP 报文之前不需要先建立 HTTP 连接);
  • HTTP 协议是无状态的:同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同(服务器不记得曾经访问过的这个客户)。在实际应用中,通常使用 Cookie 加数据库的方式来跟踪用户的活动(如记录用户的购物车)。Cookie 是存储在用户主机中的文本文件,记录一段时间内某用户(使用识别码识别)访问过的某些 Web 站点;
  • HTTP 既可以使用非持续连接(HTTP/1.0),也可以使用持续连接(HTTP/1.1 默认)。非持续连接下每个网页元素对象的传输都需要单独建立一个 TCP 连接;持续连接是指万维网服务器在发送响应后仍然保持这条连接,使同一个客户和该服务器可以继续在这条连接上传送后续的 HTTP 请求报文和响应报文。持续连接又分为非流水线和流水线两种方式。
对比实验HTTP 的连接方式与响应时间
非持续连接(串行)22 RTT每个对象都要新建 TCP 连接:(1 + 10) × (2RTT)非持续连接(5 个并行)6 RTT先取基本 HTML 文件,再每批并行建立 5 个连接,共 ⌈10/5⌉ 批持续连接(非流水线)12 RTT只建一次连接;收到前一个响应后才发下一个请求:每个对象 1 个 RTT持续连接(流水线)3 RTT连续发出所有请求,所有对象共用 1 个 RTT(HTTP/1.1 默认)012345678910111213141516171819202122
建立 TCP 连接(1 RTT) HTTP 请求 / 响应(1 RTT) 文件传输时间
页面 = 1 个基本 HTML 文件 + 10 个引用对象。忽略传输时间时:非持续串行 22 RTT,持续非流水线 12 RTT,持续流水线 3 RTT。

HTTP 的报文结构

HTTP 是面向文本的,报文中的每个字段都是一些 ASCII 码串,并且每个字段的长度都是不确定的。有两类 HTTP 报文:请求报文(从客户向服务器发送请求)和响应报文(从服务器到客户的回答)。

GET /index.html HTTP/1.1          ← 请求行:方法 URL 版本
Host: www.test.edu.cn             ← 首部行
Connection: Close                 ← 非持续连接(keep-alive 表示持续)
Cookie: 123456                    ← 携带之前服务器分配的 Cookie
                                  ← 空行,之后是实体主体(GET 一般为空)
HTTP/1.1 200 OK                   ← 状态行:版本 状态码 短语
Content-Type: text/html
Content-Length: 1024

<html>……</html>

常用方法:GET(请求读取由 URL 所标志的信息)、POST(给服务器添加信息,如注释)、HEAD(请求读取由 URL 所标志的信息的首部)、PUT、DELETE、OPTIONS、CONNECT。状态码:1xx 通知信息,2xx 成功(200 OK),3xx 重定向(301),4xx 客户错误(404 Not Found),5xx 服务器错误(500)。

即时练习

即时练习5 题
点击选项即可作答
  1. 1
    (408 真题 2009)FTP 客户和服务器间传递 FTP 命令时,使用的连接是( )。
  2. 2
    (408 真题 2012)用户 1 通过用户代理把邮件发给自己的邮件服务器(①),该服务器把邮件发给用户 2 的邮件服务器(②),用户 2 通过用户代理从自己的邮件服务器读取邮件(③)。①、②、③ 阶段分别使用的应用层协议可以是( )。
  3. 3
    (408 真题 2015)某浏览器发出的 HTTP 请求报文如下:
    GET /index.html HTTP/1.1
    Host: www.test.edu.cn
    Connection: Close
    Cookie: 123456
    下列叙述中,错误的是( )。
  4. 4
    使用浏览器访问某大学 Web 网站主页时,不可能使用到的协议是( )。
  5. 5
    某网页包含 1 个基本 HTML 文件和 4 个图片对象,忽略传输时间,若采用 HTTP/1.1 持续连接的流水线方式,从建立 TCP 连接到收完全部对象至少需要( )。
学完了吗?

标记完成后,侧栏会显示进度。进度仅保存在本浏览器中。