Chapter 6. 应用层
公式与性质
-
Domain Name System, DNS
-
DNS
系统采用客户/服务器模型型,其协议运行在UDP
之上,使用53
号端口。 -
域名
- 标号中的英文不区分大小写。
- 标号中除连字符
-
外不能使用其他的标点符号。 - 每个标号不超过 63 个字符,多标号组成的完整域名最长不超过 255 个字符。
- 级别最低的域名写在最左边,级别最高的顶级域名写在最右边。
-
域名服务器
- 根域名服务器:用来管辖顶级域(如
.com
),通常它并不直接把待查询的域名直接转换成IP
地址,而是告诉本地域名服务器下一步应当找哪个顶级域名服务器进行查询。 - 顶级域名服务器:负责管理在该顶级域名服务器注册的所有二级域名。收到
DNS
查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当查找的域名服务器的IP
地址)。 - 权限域名服务器:每台主机都必须在权限域名服务器处登记。为了更加可靠地工作,一台主机晟好至少有两个权限域名服务器。实际上,许多域名服务器都同时充当本地域名服务器和权限域名服务器。权限域名服务器总能将其管辖的主机名转换为该主机的
IP
地址。 - 本地域名服务器:当一台主机发出
DNS
查询谓求时,这个查询请求报文就发送给该主机的本地域名服务器。
- 根域名服务器:用来管辖顶级域(如
-
域名解析过程
- 主机向本地域名服务器的查询都采用递归查询。
- 本地域名服务器向其他域名服务器采用递归查询(通常不采用)或迭代查询。
递归查询是指若主机所询问的本地域名服务器不知道被查询域名的
IP
地址, 则本地域名服务器就以DNS
客户的身份,向根域名服务器继续发出查询请求报文(即替该主机继续查询),而不是让该主机自已进行下一步的查询。本地域名服务器向根域名服务器的查询通常是采用迭代查询。当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的
IP
地址,要么告诉本地域名服务器:“你下一步应当向哪个顶级域名服务器进行查询”。然后让本地域名服务器进行后续的查询(而不替本地域名服务器进行后续的查询)。
-
-
File Transfer Protocol, FTP
- 功能
- 提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力。
- 以用户权限管理的方式提供用户对远程
FTP
服务器上的文件管理能力。 - 以匿名
FTP
的方式提供公用文件共享的能力。
FTP
采用客户/服务器的工作方式,使用TCP
可靠的传输服务。一个FTP
服务器进程可同时为多个客户进程提供服务。FTP
的服务器进程由两大部分组成:一个主进程,负责接收新的请求;另外有若干从属进程,负责处理单个请求。- 打开熟知端口 21(控制端口),使客户进程能够连接上。
- 等待客户进程发连接请求。
- 启动从属进程处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止。
- 回到等待状态,继续接收其他客户进程的请求。主进程与从属进程是并发执行的。
FTP
在工作时使用两个并行的TCP
连接:一个是控制连接(服务器端口号 21 ),一个是数据连接(服务器端口号 20 )。- 控制连接:用来传输控制信息(如连接请求、传送请求等)。
FTP
客户发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件。在传输文件时还可以使用控制连接(如客户在传输中途发一个中止传输的命令),因此控制连接在整个会话期间一直保持打开状态。 - 数据连接:有两种传输模式:主动模式
PORT
(默认)和被动模式PASV
。PORT
:客户端连接到服务器的 21 端口,登录成功后要读取数据时,客户端随机开放一个端口,并发送命令告知服务器,服务器收到PORT
命令和端口号后,通过 20 端口和客户端开放的端口连接,发送数据。PASV
:客户端要读取数据时,发送PASV
命令到服务器,服务器在本地随机开放一个端口,并告知客户端,客户端再连接到服务器开放的端口进行数据传输。
- 控制连接:用来传输控制信息(如连接请求、传送请求等)。
- 使用
FTP
时,要修改服务器上的文件,就需要先将此文件传送到本地主机,然后将修改后的文件副本传送到原服务器,来回传送耗费很多时间。网络文件系统NFS
采用另一种思路,它允许进程打开一个远程文件,并能在该文件的某个特定位置开始读写数据。
- 功能
-
E-mail
- 组成
- 用户代理
User Agent, UA
:用户与电子邮件系统的接口。用户代理向用户提供一个很友好的接门来发送和接收邮件,用户代理至少应当具有撰写、显示和邮件处理的功能。通常情况下,用户代理就是一个运行在PC
上的程序(电子邮件客户端软件)。 - 邮件服务器:它的功能是发送和接收邮件,同时还要向发件人报告邮件传送的悄况(已交付、被拒绝、丢失等)。邮件服务器以客户/服务器模式工作,但它必须能够同时充当客户和服务器。
- 用户代理
- 协议
- 邮件发送协议:用于用户代理向邮件服务器发送邮件或在邮件服务器之间发送邮件,如
SMTP
。SMTP
用的是“推”(Push
)的通信方式,即用户代理向邮件服务器发送邮件及在邮件服务器之间发送邮件 时,SMTP
客户将邮件“推”送到SMTP
服务器。 - 邮件读取协议:邮件读取协议用于用户代理从邮件服务器读取邮件,如
POP3
。POP3
用的是 “拉”(Pull
)的通信方式,即用户读取邮件时,用户代理向邮件服务器发出请求,“拉”取用户邮箱中的邮件。
- 邮件发送协议:用于用户代理向邮件服务器发送邮件或在邮件服务器之间发送邮件,如
- 格式
To
是必填的关键字,后面填入一个或多个收件人的电子邮件地址。From
是必填的关键字,但它通常由邮件系统自动填入。Subject
是可选关键字,是邮件的主题,反映了邮件的主要内容。- 首部与主体之间用一个空行进行分割。
Multipurpose Internet Mail Extensions, MIME
- 当发送端发送的邮件中包含有非
ASCII
码数据时,不能直接使用SMTP
进行传送,而要通过MIME
进行转换,将非ASCII
码数据转换为ASCII
码数据。之后,就可以使用SMTP
进行传送。接收端也要使用MIME
对接收到的ASCII
码数据进行逆转换,以便可以得到包含有非ASCII
码数据的邮件。
- 5 个新的邮件首部字段,包括
MIME
版本、内容描述、内容标识、传送编码和内容类型。 - 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
- 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。
- 当发送端发送的邮件中包含有非
- 组成
-
Simple Mail Transfer Protocol, SMTP
SMTP
用的是TCP
连接, 端口号为 25 。
- 连接建立:
SMTP
不使用中间的邮件服务器。TCP
连接总是在发送方和接收方这两个邮件服务器之间直接建立,而不管它们相隔多远,不管在传送过程中要经过多少个路由器。当接收方邮件服务器因故障暂时不能建立连接时,发送方的邮件服务器只能等待一段时间后再次尝试连接。 - 邮件传送:邮件的传送从
MAIL
命令开始,MAIL
命令后而有发件人的地址。下面跟着一个或多个RCPT
命令。每发送一个RCPT
命令,都应有相应的信息从SMTP
服务器返回。RCPT
命令的作用是, 先弄清接收方系统是否己做好接收邮件的准备,然后才发送邮件,以便不至于发送了很长的邮件后才知道地址错误,进而避免浪费通信资源。<CRLF>
表示回车换行。此时SMTP
客户就可开始传送邮件内容,并用<CRLF>.<CRLF>
表示邮件内容的结束。 - 连接释放:邮件发送完毕后,
SMTP
客户应发送QUIT
命令。SMTP
服务器返回的信息是 221 (服务关闭),表示SMTP
同意释放TCP
连接。邮件传送的全部过程就此结束。
-
Post Office Protocol 3, POP3
POP
也采用客户/服务器模式, 在传输层使用 TCP, 端口号为 110。- 工作方式
- 下载并保留
- 下载并删除
POP3
协议在传输层是使用明文来传输密码的,并不对密码进行加密。POP3
协议基于ASCII
码,若要传输非ACSII
码的数据,则要使用MIME
将数据转换成ASCII
码形式。
-
IMAP
:提供了创建文件夹、在不同文件夹之间移动邮件及在远程文件夹中杳询邮件等联机命令,为此IMAP
服务器维护了会话用户的状态信息。IMAP
的另一特性是允许用户代理只获取报文的某些部分,例如可以只读取一个报文的首部,或多部分MIME
报文的一部分。 -
基于万维网的电子邮件:用户浏览器与
Hotmail
或Gmail
的邮件服务器之间的邮件发送或接收使用的是HTTP
, 而仅在不同邮件服务器之间传送邮件时才使用SMTP
。 -
World Wide Web, WWW
- 标准
- 统一资源定位符
URL
。负责标识万维网上的各种文档,并使每个文档在整个万维网的范围内具有唯一的标识符URL
。
URL
的一般形式:<协议>://<主机>:<端口>/<路径>
- 超文本传输协议
HTTP
。一个应用层协议,它使用TCP
连接进行可靠的传输,HTTP
是万维网客户程序和服务器程序之间交互所必须严格遵守的协议。 - 超文本标记语言
HTML
。一种文档结构的标记语言,它使用一些约定的标记对页面上的各种信息(包括文字、声音、图像、视频等)格式进行描述。
- 统一资源定位符
HTTP
HTTP
是面向事务的应用层协议,它规定了在浏览器和服务器之间的请求和响应的格式与规则, 是万维网上能够可靠地交换文件(包括文本声音、图像等各种多媒体文件)的重要基础。HTTP
本身是无连接的。虽然HTTP
使用了TCP
连接,但通信的双方在交换HTTP
报文之前不需要先建立HTTP
连接。HTTP
是无状态的。同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同,因为服务器并不记得忻经服务过的这个客户。HTTP
既可以使用非持续连接HTTP/1.0
,也可以使用持续连接 (HTTP/1.1
支持)。- 非持续连接(
HTTP/1.1, Connection: Close
):每个网页元素对象的传输都需要单独建立一个TCP
连接。 - 持续连接(
HTTP/1.1, Connection: Keep-Alive
):万维网服务器在发送响应后仍然保待这条连接,使同一个客户和该服务器可以继续在这条TCP
连接上传送后续的HTTP
请求报文和响应报文。- 非流水线方式:客户在收到前一个响应后才能发出下一个请求,服务器在发送完一个对象后,其
TCP
连接就处于空闲状态,浪费了服务器资源。 - 流水线方式:客户可以连续发出对各个对象的请求,服务器就可连续响应这些请求。若所有的请求和响应都是连续发送的,则引用所有对象共计经历 1 个
RTT
延迟,而不是像非流水线方式那样,每个对象都必须有 1 个RTT
延迟。
- 非流水线方式:客户在收到前一个响应后才能发出下一个请求,服务器在发送完一个对象后,其
- 非持续连接(
- 标准
考点
-
假设所有域名服务器均采用迭代查询方式进行域名解析。当主机访问规范域名为
www.abc.xyz.com
的网站时,域名服务器在完成该域名解析的过程中,可能发出DNS
查询的最少和最多次数分别是 0, 4最少悄况:当本地域名服务器中有该域名的
DNS
信息时,不需要查询任何共他域名服务器,最少发出 0 次DNS
查询。最多悄况:因为均采用迭代查询方式,在最坏悄况下,本地域名服务器需要依次迭代地向根域名服务器、顶级域名服务器.com
、权限域名服务器xyz.com
、权限域名服务器abc.xyz.com
发出DNS
查询请求,因此最多发出 4 次DNS
查询。 -
匿名
FTP
访问通常使用anonymous
作为用户名。 -
FTP
支持两种方式的传输:ASCII
方式和Binary
(二进制)方式。通常文本文件的传输采用ASCII
方式,而图像、声音等非文本文件采用Binary
方式传输。 -
仅需
Web
服务器对HTTP
报文进行响应,但不需要返回请求对象时,HTTP
请求报文应该使用的方法是HEAD
。 -
如果浏览器分别采用非流水的
HTTP/1.1
和支持并行TCP
连接的HTTP/1.0
,请求一个引用 4 个JPEG
图片的web
页,则至少需要的时间分别是 6RTT, 4RTT 。对于并行
TCP
连接的HTTP/1.0
,需要先用一个TCP
连接获取HTML
,再用同时使用四个TCP
连接获取JPEG
。