第六章 应用层
6.1 域名系统
**域名系统DNS(分布式系统)**是互联网使用的命名系统,用来把便于人们使用的机器名字转换为IP地址。
域名(逻辑概念):任何一个连接在互联网上的主机,都有一个唯一的层次结构的名字。
域是名字空间中一个可被管理的划分。
每一个域名都由标号序列组成,如mail.cctv.com 三级域名.二级域名.顶级域名
DNS规定:每一个标号不超过63个字符,也不区分大小写字母
由多个标号组成的完整域名总共不超过255个字符。
顶级域名三大类:国家顶级域名(uk、cn、us)、通用顶级域名(com、edu、gov、aero)、基础结构域名(arpa)
一个服务器所负责管辖的(或有权限的)范围叫做区。权限域名服务器:用来保存该区中的所有主机的域名到IP地址的映射。
DNS服务器的管线范围不是以“域”为单位,而是以“区”为单位。
根据域名服务器所起的作用,域名服务器划分:
- 根域名服务器(根域名服务器是最高层次的服务器,也是最重要的域名服务器)
- 顶级域名服务器(TLD服务器,这些域名服务器负责管理在该顶级域名服务器注册是所有二级域名)
- 权限域名服务器(负责一个区的服务器)
- 本地域名服务器(默认域名服务器,当一台主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器)
提高域名服务器的可靠性,DNS域名服务器把数据复制到几个域名服务器来保存,其中一个是主域名服务器,其他的是辅助域名服务器。
域名解析过程:
- 主机向本地域名服务器的查询一般采用递归查询。
- 本地域名服务器向根域名服务器的查询通常采用迭代查询。
两者的区别在于最后从哪里得到所需的IP地址。
为了提高DNS查询效率,并减轻根域名服务器的负荷和减少互联网上的DNS查询报文数量,在域名服务器中广泛使用了高速缓存(有时也成为高速缓存域名服务器)。高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
增加存在时间可减少网络开销,减少此时间可提高域名转换的准确性。
6.4 万维网WWW
万维网是一个大规模的、联机式的信息储藏库。简称Web。
万维网提供分布式服务。
万维网是一个分布式的超媒体系统,它是超文本系统的扩充。超文本是万维网的基础。
一个非分布式超媒体系统能够保证所有的链接都是有效的和一致的。
万维网以客户服务器方式工作。
客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。
浏览器就是客户程序。一个客户程序主窗口上显示出的万维网文档称为页面。
万维网使用统一资源定位符URL来标志万维网上的各种文档。
使用超文本传输协议HTTP来实现万维网上的各种链接。HTTP是应用层协议,它使用TCP连接进行可靠的传输。
万维网使用超文本标记语言HTML,使得不同的万维网文档可以在各个主机上显示出来。
用户使用搜索工具查找信息。
6.4.2 统一资源定位符URL
统一资源定位符URL是用来表示从互联网上得到的资源位置和访问这些资源的方式。URL给资源的位置提供一种抽象的识别方法,并用这些方法给资源定位。
URL实际上就是在互联网上的资源的地址。协议和主机部分,字母不区分大小写。但路径有时需要区分大小写。
HTTP的默认端口号为80。
<
协
议
>
:
/
/
<
主
机
>
:
<
端
口
>
/
<
路
径
>
<协议>://<主机>:<端口>/<路径>
<协议>://<主机>:<端口>/<路径>
主页:
- 一个WWW服务器最高级别的页面
- 某一个组织或者部门的一个定制的页面或目录
- 由某个人自己设计的表述他本人情况的WWW页面
6.4.3 超文本传送协议HTTP
HTTP协议定义了浏览器怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。
从层次上看,HTTP是面向事务的应用层协议。
HTTP使用了面向连接的TCP作为运输层协议,保证了数据的可靠性。HTTP不必考虑数据在传输过程中被丢弃后又怎样被重传。
HTTP协议本身是无连接的。
HTTP协议是无状态的。
请求一个万维网文档所需的时间是该文档的传输时间加上两倍往返时间RTT。
缺点:每次请求一个文档就要有两倍RTT的开销。这种非持续连接会使万维网服务器的负担很重。
HTTP/1.1协议较好地解决了这个问题。它使用了持续连接,分为流水线方式和非流水线方式。
非流水线方式的特点:客户在收到前一个响应之后才能发出下一个请求。TCP连接处于空闲状态,浪费服务器资源。
流水线方式的特点:客户在收到HTTP响应报文之前就能够接着发送新的报文。TCP空闲时间减少,提高下载文档效率。
代理服务器是一种网络实体,它称为万维网高速缓存。把最近的一些请求和响应暂存在本地磁盘上。
代理服务器有时作为服务器(当接受浏览器的HTTP请求时),有时作为客户(向互联网上的源点服务器发送HTTP请求时)。
HTTP是面向文本的,因此各个字段长度不确定。
两者区别:
-
开始行,用于区分请求报文**(请求行)还是响应报文(状态行)**。
-
请求行:方法(对所请求对象的操作或指令)、URL、版本。
-
状态行:版本、状态码、解释状态码的简单短语。
分类 分类描述 1** 信息,服务器收到请求,需要请求者继续执行操作 2** 成功,操作被成功接收并处理(202 Accepted 接收) 3** 重定向,需要进一步的操作以完成请求 4** 客户端错误,请求包含语法错误或无法完成请求(400 Bad Request 错误的请求;404Not Found 找不到) 5** 服务器错误,服务器在处理请求的过程中发生了错误
-
-
首部行,用来说明浏览器、服务器、或报文主体的一些信息。
-
实体主体,响应报文有可能用。
Cookie:表示HTTP服务器和客户之间传递的状态信息
CGI标准:定义动态文档应如何创建,输入数据应如何提供给应用程序
CGI程序(CGI脚本):万维网服务器中新增加的应用程序
脚本:一个程序,它被另一个程序(解释程序)而不是计算机的处理及来解释或执行。
活动万维网文档:
- 服务器推送;服务器开销大,网络传输时延增加
- 活动文档
搜索引擎:
- 全文检索搜索引擎
- 分类目录搜索引擎
垂直搜索引擎(针对某一特定领域、特定人群、或某一特定需求提供的搜索服务)
元搜索引擎(是搜索引擎之上的搜索引擎)
6.5 电子邮件
6.5.1 电子邮件基本概述
电子邮件两个重要标准:简单邮件传送协议SMTP、互联网文本报文格式
由于SMTP只能传送可打印的7位ASCII码,因此1993年又提出通用互联网邮件扩充MIME。
电子邮件组成构件:用户代理(电子邮件客户端软件)、邮件服务器、邮件发送协议(如SMTP)、邮件读取协议(如POP3,邮局协议的版本3)。
用户代理功能:撰写、显示、处理、通信
发送过程中,邮件不会在互联网中的某个中间邮件服务器落地。
两种不同的通信方式。“推":SMTP客户把邮件”推“给SMTP服务器。”拉“:POP3客户把邮件从POP3服务器”拉“过来。
电子邮件组成:信封和内容。
电子邮件地址格式:
用
户
名
@
邮
件
服
务
器
的
域
名
用户名 @ 邮件服务器的域名
用户名@邮件服务器的域名
6.5.2 简单邮件传送协议SMTP
SMTP规定了在两个相互通信的SMTP进程之间应如何交换信息。
-
连接建立
扫描邮件缓存;
端口25建立TCP连接;
接收方SMTP服务器 "220 Service Ready“;
客户发送HELO命令,附上发送方主机名;
客户服务器有能力接收,回答”250 OK”;若SMTP服务器不可用,回答"421 Service not available"
如在一定时间内发送不了邮件,邮件服务器会把这个情况通知发件人
SMTP不使用中间的邮件服务器。
-
邮件传送
邮件传送从MAIL命令开始。MAIL命令后面有发送人的地址。如 MAIL FROM:<xxx@xxx.com>
如 250 OK;451(处理时出错);452(存储空间不够);500(命令无法识别)。
每个RCPT命令对应一个收件人,如RCPT TO:<收件人地址>。并且每个RCPT都应当有相应的信息从SMTP服务器返回。
RCPT命令作用:先弄清接收方系统是否已做好接收邮件的准备,然后才发送邮件。避免浪费通信资源
DATA命令:传送邮件内容。421(服务器不可用);500(命令无法识别)。 < C R L F > . < C R L F > <CRLF>.<CRLF> <CRLF>.<CRLF>表示邮件内容结束。
若邮件接收,则返回“250 OK”,或返回差错代码
-
连接释放
QUIT命令。SMTP服务器返回“221(服务关闭)”,表示SMTP同意释放TCP连接。
SMTP传送邮件为明文,不利于保密。
SMTP缺点:
- 不能传送可执行文件或其他的二进制对象
- 限于传送7位的ASCII码
- SMTP服务器会拒绝超过一定长度的邮件
- 某些SMTP的实现并没有完全按照SMTP互联网标准。
- 回车、换行的删除、增加
- 超过76字符时的处理:截断或自动换行
- 后面多余空格的删除
- 将Tab转换为若干个空格
ESMTP功能:客户端的鉴别,服务器接受二进制报文,服务器接受分块传送的大报文,发送前先检查报文大小,使用安全传输TLS,以及使用国际化地址。
ESMTP发送EHLO判断对方为SMTP还是ESMTP。
6.5.4 POP3和网际报文存取协议IMAP
POP3为客户服务器的工作方式。
POP3特点:只要用户从POP3服务器读取了邮件,POP3服务器就把该邮件删除。(后来增加了邮件读取后在POP3服务器存放的时间)。
IMAP:联机协议,可以像本地操作一样操纵邮件服务器的邮件。用户可以看到IMAP服务器邮箱中邮件的首部。需要打开邮件时才传到用户计算机上。用户未发出删除邮件命令前,IMAP服务器邮箱中的邮件一直保存。
IMAP优点:用户可以在不同地方使用不同的计算机,随时查阅自己邮件服务器中的邮件。IMAP允许收件人只读取邮件的一部分。
缺点:如果用户没有将邮件复制到本地,必须联网才能查看邮件。
操作位置 | 操作内容 | IMAP | POP3 |
---|---|---|---|
收件箱 | 阅读、标记、移动、删除邮件等 | 客户端与邮箱更新同步 | 仅在客户端内 |
发件箱 | 保存到已发送 | 客户端与邮箱更新同步 | 仅在客户端内 |
创建文件夹 | 新建自定义的文件夹 | 客户端与邮箱更新同步 | 仅在客户端内 |
草稿 | 保存草稿 | 客户端与邮箱更新同步 | 仅在客户端内 |
垃圾文件夹 | 接收并移入垃圾文件夹的邮件 | 支持 | 不支持 |
广告邮件 | 接收并移入广告邮件夹的邮件 | 支持 | 不支持 |
6.5.6 通用互联网邮件扩充MIME
因为SMTP的不规范,提出了通用互联网邮件扩充MIME。并不是改动或取代SMTP。
继续使用原来的邮件格式,增加邮件主体的结构,并定义了传送非ASCII码的编码规则。
MIME内容:
- 5个新的邮件首部字段
- MIME-Version:MIME版本
- Content-Description:说明邮件主体是否为图像、音频、视频
- Content-Id:唯一标识符
- Content-Transfer-Encoding:编码方式
- Content-Type:说明邮件主体的数据类型和子类型
- 定义了许多邮件内容的格式,表示方式标准化
- 定义了传送编码,可对任何内容格式进行转换
3种常用的内容传送编码(Content-Transfer-Encoding)
-
7位ASCII码,每行不能超过1000个字符。MIME对这种由ASCII码构成的邮件主体不进行任何转换
-
quoted-printable,适用传送的数据只有少量非ASCII码,例如汉字。
要点:对于所有可打印的ASCII码,除特殊字符等号“=”外,都不改变。
等号“=”和不可打印的ASCII码以及非ASCII码的数据的编码方法是:**先将每个字节的二进制代码用两个十六进制的数字表示,然后在前面加上一个等号“=”。**例如:
- 汉字的“系统”的二进制编码是:11001111 10110101 11001101 10110011(共32位,但这四个字节都不是ASCII码)
- 其十六进制数字表示为:CF B5 CD B3
- 用queted-printable编码表示为:=CF=B5=CD=B3,这12个字符都是可打印的ASCII字符,它们的二进制编码需要96位,和原来的32位相比,开销达200%。
- 而等号“=”的二进制代码为00111101,即十六进制的3D,因此等号“=”的queted-printable编码为“=3D”。
-
base64编码
- 这种编码方法是先把二进制代码划分为一个个24位长的单元,然后把每一个24位单元划分为4个6位组。每一个6位组按以下方法转换成ASCII码。
- 6位的二进制代码共有64种不同的值,从0到63。用A表示0,用B表示1,等等。26个大写字母排列完毕后,接下去再排26个小写字母,再后面是10个数字,最后用“+”表示62,用“/”表示63。
- 再用两个连在一起的等号“==”和一个等号分别表示最后一组的代码只有8位或16位。回车和换行都忽略,它们可在任何地方插入。
下面是一个base64编码的例子:
24位二进制代码 01001001 00110001 01111001
划分为4个6位组 010010 010011 000101 111001
对应的base64编码 S T F 5
用ASCII编码发送 01010011 01010100 01000110 00110101
24位的二进制代码采用base64编码后变成了32位,开销为25%。