二、综合应用题

2027 · OCR 辅助 · 原书检索 · 文字用于定位,公式与图表请回原页核验 · 本次导入快照

## 二、综合应用题

01. 电子邮件系统使用 TCP 传送邮件,为什么有时会遇到邮件发送失败的情况?为什么有时对方会收不到发送的邮件?
02. MIME 与 SMTP 的关系是怎样的?
03. 用户主机上的电子邮件用户代理与邮件服务器建立了连接,现截获一个 TCP 报文段,如下图所示。图中显示了该报文段的前 126 个字节的十六进制数及 ASCII 码内容。TCP

<!-- page: 300 -->

2027年计算机网络考研复习指导

首部长度为20B。请回答:

|  0020 |  | c0 | e6 | 00 | 19 | b0 | ca | d5 | 6f | eb | c9 | 10 | e9 | 50 | 18 | ... | o... | P.  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|  0030 | f9 | 98 | 51 | bd | 00 | 00 | 4d | 65 | 73 | 73 | 61 | 67 | 65 | 2d | 49 | 44 | ..Q... | Me ssage-ID  |
|  0040 | 3a | 20 | 3c | 34 | 44 | 43 | 45 | 39 | 32 | 42 | 41 | 2e | 32 | 30 | 31 | 30 | : | <4DCE9 28A.2010  |
|  0050 | 39 | 30 | 32 | 40 | 31 | 36 | 33 | 2e | 63 | 6f | 6d | 3e | 0d | 0a | 44 | 61 | 9028163. | com>..Da  |
|  0060 | 74 | 65 | 3a | 20 | 53 | 61 | 74 | 2c | 20 | 31 | 34 | 20 | 4d | 61 | 79 | 20 | te: | sat, 14 May  |
|  0070 | 32 | 30 | 31 | 31 | 20 | 32 | 32 | 3a | 33 | 33 | 3a | 33 | 30 | 20 | 2b | 30 | 2011 | 22: 33:30 +0  |
|  0080 | 38 | 30 | 30 | 0d | 0a | 46 | 72 | 6f | 6d | 3a | 20 | 63 | 73 | 6b | 61 | 6f | 800..Fro m: | cskao  |
|  0090 | 79 | 61 | 6e | 32 | 30 | 31 | 32 | 40 | 31 | 36 | 33 | 2e | 63 | 6f | 6d | 0d | yan20128 | 163.com.  |

1)用户代理和服务器之间使用的应用层协议是什么?
2)用户代理使用的端口号是多少?
3)该邮件的发件人邮箱是什么?

## 6.4.5 答案与解析

### 一、单项选择题

#### 01. D

电子邮件是互联网最基本、最常用的服务功能。要使用电子邮件服务,首先要拥有自己的电子邮件地址,其格式为:用户名@邮箱所在主机的域名。

#### 02. A

SMTP 和 POP3 都是基于 TCP 的协议,提供可靠的邮件通信。

#### 03. B

SMTP 服务器使用的熟知端口号是 25。

#### 04. A

在基于万维网的电子邮件中,用户浏览器与 Hotmail 或 Gmail 的邮件服务器之间的邮件发送或接收使用的是 HTTP,而仅在不同邮件服务器之间传送邮件时才使用 SMTP。

#### 05. A

用户代理使用 POP3 协议接收邮件。通常用户在配置电子邮件用户代理时需要设置邮件服务器的 POP3 地址(如 pop3.gmail.com),若这个地址设置错误,则会导致用户无法接收邮件。用户代理中的 SMTP 地址错误时会导致无法发送邮件。收件人 E-mail 地址错误时,可能会发错人,也可能会导致投递失败(不存在的地址)。

#### 06. C

SMTP 是一种“推”协议,用于发送端用户代理与发送端服务器之间及发送端服务器与接收端服务器之间,不能用于接收端用户从服务器上读取邮件。常用的邮件读取协议有 POP3、HTTP 和 IMAP。大家平时通过浏览器登录 163 邮箱、Gmail 邮箱时,使用的邮件读取协议就是 HTTP。IMAP 是另一个专用于读取邮件的协议,它要比 POP3 复杂得多,功能也更为强大。

#### 07. B

邮件头是由多项内容构成的,其中一部分是由系统自动生成的,如发信人地址(From:)、发送时间;另一部分是由发件人输入的,如收信人地址(To:)、邮件主题(Subject:)等。

#### 08. D

SMTP 采用推的通信方式,即用户代理向邮件服务器及邮件服务器之间发送邮件时,SMTP 客户主动将邮件推送到 SMTP 服务器。而 POP3 采用拉的通信方式,即用户读取邮件时,用户代理向邮件服务器发出请求,拉取用户邮箱中的邮件。

#### 09. A

根据 6.4.1 节可知,SMTP 用于用户代理向邮件服务器发送邮件,或在邮件服务器之间发送

<!-- page: 301 -->

第6章 应用层
289

邮件。SMTP只支持传输7比特的ASCII码内容。

## 10. D

POP3建立在TCP连接上,使用的是有连接可靠的数据传输服务。

## 11. D

电子邮件出现得较早,当时的数据传输能力较弱,使用者往往也不需要传输较大的图片、视频等,因此SMTP具有一些目前来看较为老旧的性质,如限制所有邮件报文的体部分只能采用7位ASCII码来表示。在如今的传输过程中,传输了非文本文件时,往往需要将这些多媒体文件重新编码为ASCII码再传输。因此无须转换即可传输的是ASCII文本,答案为选项D。

## 12. A

POP3 用于用户代理从邮件服务器读取邮件,说法 I 正确。用户代理向邮件服务器发送邮件使用的是SMTP,而非POP3。邮件服务器之间的邮件传输也由SMTP实现,与POP3无关。POP3支持在一条TCP连接中收取多封邮件,无须为每封邮件单独建立连接,说法IV正确。

## 二、综合应用题

### 01. 【解答】

有时对方的邮件服务器不工作,邮件就发送不出去。对方的邮件服务器出故障也会使邮件丢失。有时网络非常拥塞,路由器丢弃大量的IP数据报,导致通信中断。

### 02. 【解答】

因为SMTP存在一些缺点和不足,所以通过MIME并非改变或取代SMTP。MIME继续使用RFC 822格式,但增加了邮件主体的结构,并定义了传送非ASCII码的编码规则。也就是说,MIME邮件可在已有的电子邮件和协议下传送。

### 03. 【解答】

1)本题中并未明确告诉这个报文段是从用户代理发往服务器还是从服务器发往用户代理。分析TCP首部格式可知,源端口为49382(0xc0e6),目的端口为25(0x0019),因此该应用层协议为SMTP。
2)因为使用的是SMTP,且服务器端口25作为目的端口,所以源端口49382为用户代理所使用的端口。
3)因为SMTP的协议字段都是用ASCII码表示的,所以发件人的关键字是FROM,从截图右侧的ASCII码形式中直接找到答案FROM: cskaoyan2012@163.com。

## 6.5 万维网

### 6.5.1 万维网的概念与组成结构

万维网(World Wide Web,WWW)是一个分布式、联机式的信息存储空间。在这个空间中,任何有用的事物都被称为资源,并由一个统一资源定位符(URL)唯一标识。这些资源通过超文本传输协议(HTTP)传送给用户,用户只需单击超链接即可获取所需内容。

万维网通过超链接的方式,能够非常便捷地从互联网上的一个站点跳转到另一个站点,从而主动、按需地获取丰富的信息。超文本标记语言(HTML)使网页设计者能够方便地通过超链接从本页面的某处指向互联网上的任何其他页面,并在用户的计算机屏幕上显示这些内容。

<!-- page: 302 -->

2027年计算机网络考研复习指导

考点选注&gt;&gt; HTTP 使用的传输层协议(2018)

万维网的核心由以下三个标准构成:

1)统一资源定位符(URL)。用于标识万维网上的各类文档,确保每个文档在整个万维网范围内拥有唯一的 URL 标识符。
2)超文本传输协议(HTTP)。一种应用层协议,基于 TCP 连接提供可靠的数据传输。HTTP 是万维网客户程序与服务器程序之间交互时必须严格遵循的通信协议。
3)超文本标记语言(HTML)。一种用于描述文档结构的标记语言,通过预定义的标记对页面中的各种信息(包括文字、声音、图像、视频等)及其格式进行组织和呈现。

URL 是对互联网上可获取资源的位置及访问方式的一种简洁表示,可视为传统文件名在网络范围内的扩展。URL 的一般形式为

&amp;lt;协议&amp;gt;://&amp;lt;主机&amp;gt;.&amp;lt;端口&amp;gt;/&amp;lt;路径&amp;gt;。
万维网是由无数网络站点和网页组成的集合,构成了互联网最主要的应用部分(互联网还包括电子邮件、Usenet 和新闻组等)。万维网采用客户/服务器模式工作:用户主机上运行的浏览器作为万维网客户程序,而存放万维网文档的主机则运行服务器程序,该主机被称为万维网服务器。客户程序向服务器发起请求,服务器则将用户请求的网页文档返回给客户端。 ## 6.5.2 超文本传输协议 超文本传输协议(HTTP)定义了浏览器(万维网客户进程)如何向万维网服务器请求文档,以及服务器如何将文档传送给浏览器。从协议层次来看,HTTP 是一种面向事务(transaction-oriented)的应用层协议,规定了浏览器与服务器之间请求与响应的格式和交互规则,是万维网上可靠交换各类文件(包括文本、声音、图像等多媒体内容)的重要基础。 ## 1. HTTP 的操作过程 从协议执行流程来看,当浏览器要访问某个 WWW 服务器时,首先需完成对该服务器域名的解析。一旦获得其 IP 地址,浏览器便通过 TCP 向该服务器发起连接建立请求。 万维网的大致工作过程如图 6.11 所示。

原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。

图 6.11 万维网的工作过程

<!-- page: 303 -->

第6章 应用层
291

每个万维网站点都运行一个服务器进程,持续监听 TCP 端口 80(默认)。当监听到连接请求时,服务器便与浏览器建立 TCP 连接。随后,浏览器向服务器发送 HTTP 请求,以获取指定的 Web 页面。服务器收到请求后,组装所请求页面所需的资源,并通过 HTTP 响应返回给浏览器。浏览器对收到的内容进行解析,并将最终的 Web 页面呈现给用户。最后,TCP 连接被释放。

**导航图1** ▶ Web 浏览涉及的核心协议栈(2014、2021)

用户单击鼠标后所发生的事件顺序如下(以访问清华大学网站为例):

3)DNS 系统返回清华大学服务器的 IP 地址。
4)浏览器与该服务器建立 TCP 连接(默认端口号为 80)。
5)浏览器发出 HTTP 请求:GET /index.htm。
6)服务器通过 HTTP 响应把文件 index.htm 发送给浏览器。
7)释放 TCP 连接。
8)浏览器解析 index.htm 文件,并将 Web 页面显示给用户。

上述过程仅为简化描述。实际上,整个通信可能涉及 TCP/IP 体系结构中的多种协议:应用层的 DHCP、DNS 和 HTTP,传输层的 UDP 与 TCP,网际层的 IP 和 ARP,以及数据链路层的 CSMA/CD 协议或 PPP(涉及 ISP 接入或广域网传输时)等。本节主要聚焦于 HTTP。

## 2. HTTP 的特点

HTTP 使用 TCP 作为传输层协议,从而保证了数据的可靠传输。因此,HTTP 无须关心数据在传输过程中是否丢失或如何重传。但需特别注意:HTTP 本身是无连接的。也就是说,尽管底层使用了 TCP 连接,但在交换 HTTP 报文之前,并不需要建立专门的“HTTP 连接”。

此外,HTTP 是无状态的。这意味着,当同一客户第二次访问服务器上的某个页面时,服务器的响应与第一次完全相同,因为它并不记录此前与该客户的交互历史。

**导航图2** ▶ Cookie 的工作原理(2015)

HTTP 的无状态特性简化了服务器设计,使其更易于支持大量并发请求。在实际应用中,通常结合 Cookie 与数据库来实现用户行为跟踪(如记录用户最近浏览的商品等)。

Cookie 的工作原理:当用户首次访问某个启用 Cookie 的网站时,服务器会为其生成唯一的 Cookie 识别码,如“12345”,并以此为索引在后端数据库中创建一个记录,用于存储该用户的访问信息。随后,服务器在 HTTP 响应报文中添加一个 Set-cookie 首部行:“Set-cookie: 12345”。用户代理(浏览器)收到响应后,会将 Cookie 识别码连同服务器域名一起保存在其本地的 Cookie 文件中。当用户再次访问该网站时,浏览器会在 HTTP 请求报文中自动附加一个 Cookie 首部行:“Cookie: 12345”。服务器根据 Cookie 识别码即可从数据库中检索出该用户的活动记录,从而提供一些个性化服务,例如基于历史浏览记录向用户推荐新商品等。

HTTP/1.0 仅支持非持续连接,而其升级版本 HTTP/1.1 支持持续连接(默认启用)。

**导航图3** ▶ HTTP/1.0 页面加载时延分析(2020、2024)

在非持续连接模式下,每个网页元素(如 JPEG 图像、Flash 动画等)的传输都需要单独建立一个 TCP 连接,如图 6.12 所示(客户端通常在 TCP 第三次握手的 ACK 报文中捎带 HTTP 请求;若未捎带,则会紧随其后立即发送,其间的时间间隔可以忽略不计)。请求一个 Web 文档所需的时间 = 文档传输时间(与文档大小成正比)+ 2×RTT(一个 RTT 用于完成建立 TCP 连接的前两次握手,另一个 RTT 用于发送请求并接收响应)。每个对象的获取都需承担 2RTT 的开销,为

<!-- page: 304 -->

2027年计算机网络考研复习指导

减小时延,现代浏览器通常创建多个并行TCP连接,以同时请求多个对象。

所谓持续连接,是指服务器在发送响应后仍保持该TCP连接,使得同一客户可继续通过该连接发送后续的HTTP请求并接收响应,如图6.13所示。在实际应用中,浏览器先通过该连接请求并接收Web页面(通常是HTML文档),解析后发现其中引用的图像等资源,即可复用该连接请求这些资源,从而避免为每个资源重新建连接的开销。

原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。

图6.12 请求一个万维网文档所需的时间

原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。

图6.13 使用持续连接(非流水线)

HTTP/1.1 的持续连接又分为非流水线和流水线两种工作方式。

**考虑速度**  HTTP/1.1 页面加载时延分析(2011、2022)

在非流水线方式中,客户端必须等待前一个响应到达后才能发送下一个请求,导致服务器发送完一个对象后,TCP连接处于空闲状态,造成资源浪费。而在流水线方式中,客户可连续发送多个对象的请求,服务器也能连续发送响应。若所有请求与响应均能连续传输,则获取全部引用对象仅需1RTT,而不像非流水线方式下那样,每个对象均需1RTT。这种方式显著减少了连接空闲时间,提升了效率。需要注意的是,由于HTTP基于TCP,实际传输时间还受TCP发送窗口和拥塞控制机制的影响①。

## 3. HTTP的报文结构

**考虑速度** HTTP常用请求方法及功能(2015)

HTTP是面向文本的(Text-Oriented),其报文中的每个字段均为ASCII字符串,且字段长度不固定。HTTP报文分为两类:

- 请求报文:从客户向服务器发送的请求报文,如图6.14(a)所示。
- 响应报文:从服务器到客户的回答,如图6.14(b)所示。

如图6.14所示,两类报文均由三部分组成,区别仅在于开始行的不同。

- 开始行:请求报文中的开始行称为请求行,响应报文中的开始行称为状态行。开始行的三个字段之间以空格分隔,行末以回车换行符(CRLF)结束。
- 首部行:用于传递关于浏览器、服务器或报文主体的附加信息。首部可包含多行,也可为空。每行由“字段名:值”构成,行末同样以CRLF结束。所有首部行结束后,还需

① 由于 TCP 的拥塞控制机制,当传输的数据量超过 MSS 时,完整传输可能需要多个 RTT。

<!-- page: 305 -->

第6章 应用层
293

要用一个空行(仅含CRLF)分隔首部行与后面的实体主体。

- 实体主体:请求报文中通常没有这个字段;响应报文中也可能没有这个字段。

原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。

(a) 请求报文
图6.14 HTTP的报文结构

原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。

(b) 响应报文

请求行包含三个字段:方法、请求资源的URL和HTTP版本。其中,“方法”指明对目标资源的操作类型,本质上是一条命令。表6.1列出了常用的几种方法。

表 6.1 HTTP 请求报文中常用的几个方法

|  方法(操作) | 意 义  |
| --- | --- |
|  GET | 请求读取由URL标识的信息  |
|  HEAD | 请求读取由URL标识的信息的首部  |
|  POST | 给服务器添加信息(如注释)  |
|  PUT | 在指定URL处存储一个文档  |
|  DELETE | 删除由URL标识的资源  |
|  CONNECT | 用于代理服务器  |

下面是一个典型的HTTP请求报文:

GET /bbs/index.htm HTTP/1.1 {指明方法“GET”、相对URL、HTTP版本}


Connection: Keep-Alive {要求服务器在发送完被请求的文档后保持这条连接}

User-Agent: Mozilla/5.0 {表明用户代理是浏览器 Mozilla/5.0}

Accept-Language: cn {表示用户希望优先得到中文版本的文档} {请求报文的最后还有一个空行}

第1行是请求行,其中使用的是相对URL,因为下面的Host首部行已指明服务器域名。第3行“Connection: Keep-Alive”告诉服务器使用持续连接,即要求其在发送完文档后保持该TCP连接;若需使用非持续连接,则应将该首部行设为“Connection: close”。

HTTP响应报文的第1行是状态行,包含三个内容:HTTP版本、状态码和解释状态码的短语。以下是HTTP响应报文中常见的三种状态行:

HTTP/1.1 202 Accepted {接受请求}

HTTP/1.1 400 Bad Request {错误的请求}

HTTP/1.1 404 Not Found {找不到页面}

## 4. 代理服务器

代理服务器(proxy server)将近期的一些请求与响应暂存在本地磁盘上,也称为万维网高速缓存(Web cache)。新请求到达时,若代理服务器发现该请求与暂存的请求相同,便直接返回缓

<!-- page: 306 -->

2027年计算机网络考研复习指导

存的响应,而无须再次通过互联网访问原始服务器。代理服务器可部署在客户端、服务器端或网络中间节点上。在内网中设置代理服务器后,就能将相当大一部分的通信流量限制在内网内部,从而显著减少内网通往互联网的链路负载,降低访问互联网的延迟。

## 5. HTTP 请求报文举例

图6.15展示了使用Wireshark软件捕获的一个HTTP请求报文。

原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。

图6.15 用Wireshark捕获的一个HTTP请求报文

根据帧的结构定义,在图6.15的以太网数据帧中,第1~6字节为目的MAC地址(默认网关地址),值为00-0f-e2-3f-27-3f;第7~12字节为源MAC地址(本机地址),值为00-27-13-67-73-8d;第13~14字节为类型字段,值为0800,表示上层协议为IP。第15~34字节(共20B)为IP数据报首部,其中第27~30字节为源IP地址,十六进制数为dbdfd270,转换成十进制数为219.223.210.112;第31~34字节为目的IP地址,十六进制为71694e0a,转换成十进制数为113.105.78.10。第35~54字节(共20B)为TCP报文段首部。

从第55字节开始为TCP数据部分(图中阴影区域),即应用层传递下来的数据(本例中为HTTP请求报文)。其中,GET对应请求行的方法,/face/20.gif为请求的URL,HTTP/1.1为协议版本。左侧数字为对应字符的ASCII码值,例如:‘G’=0x47、‘E’=0x45、‘T’=0x54等。建议读者自行了解图6.15中的请求报文各首部字段的含义,或动手抓包实践分析。

常见应用层协议小结如表6.2所示。

表 6.2 常见应用层协议小结

|  应用程序 | FTP数据连接 | FTP控制连接 | TELNET | SMTP | DNS | TFTP | HTTP | POP3 | SNMP  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|  使用协议 | TCP | TCP | TCP | TCP | UDP | UDP | TCP | TCP | UDP  |
|  熟知端口号 | 20 | 21 | 23 | 25 | 53 | 69 | 80 | 110 | 161  |

<!-- page: 307 -->

第6章 应用层
295