0x06 应用层
一、网络应用模型
1.1 客户机/服务器模型
特点:
- 网络中各计算机地位不平等,整个网络的管理工作由少数服务器担当,网络的管理非常集中和方便
- 客户机相互之间不直接通信
- 可扩展性不佳。受服务器硬件和网络带宽的限制,服务器支持的客户机数量有限
1.2 P2P模型
特点:
- 整个网络中的传输内容不再被保存在中心服务器上,每个结点同时具有下载、上传功能,权利和义务大体对等
- 减轻了服务器的计算压力,消除了对某个服务器的完全依赖,可以将任务分配到各个结点上大大提高了系统效率和资源利用率
- 多个客户机之间可以直接共享文档
- 可扩展性好,传统服务器有响应和带宽的限制
- 网络健壮性强,单个结点失效不会影响其他结点
缺点:
- 获得服务的同时还要提供服务,占用较多内存,影响整机速度
二、 域名系统DNS
2.1 DNS概述
功能
- 把便于人们记忆的具有特定含义的主机名转换为便于机器处理的IP地址
- 联机分布式的数据库系统
协议与端口
- 采用客户/服务器模型
- 基于UDP协议
- 端口53
2.2 层次域名空间
域名与域划分
- 采用层次树状结构的命名方法,使得任何一个连接到因特网的主机或路由器,都有一个唯一的层次结构名称
- 域名规则
- 以"."隔开的各个部分称为“标号”
- 英文不区分大小写
- 除了连字符(-)外不允许使用其他标点符号
- 每个标号不超过63个字符,多标号组成的完整域名最长不超过255个字符
- 级别最低的域名在最左边(如www.baidu.com中,www是三级域名),级别最高的域名在最右边(com是顶级域名)
- 管理
- 每个域分别由不同的组织进行管理
- 每个组织可以把域再分成一定数量的子域,再将子域委托给其他组织管理
顶级域名
- 国家(地区)顶级域名。如“.cn”表示中国,“.us”表示美国,".uk"表示英国
- 通用顶级域名。如“.com”(公司)、".net"(网络服务机构)、".org"(非盈利性组织)、".gov"(国家或政府部门)等
- 基础结构域名。只有一个,即“arpa”,用于反向域名解析
2.3 域名服务器
- 区:一个服务器所负责管辖的范围,而不是以域为单位。一个区内的所有结点必须是能够连通的
- 每个区有相应的权限域名服务器,用于保存该区中的所有主机域名到IP地址的映射。
- 每个域名服务器不仅能进行域名到IP地址的解析,还必须具有连向其他域名服务器的信息
- 没有一台域名服务器具有因特网上所有主机的映射
根域名服务器
所有的根域名服务器都知道所有的顶级域名服务器的IP地址
共有13个根服务器。
根域名服务器不直接完成域名解析,而是只告诉本地域名服务器下一步应当找哪个顶级域名服务器查询。
顶级域名服务器
负责管理在改顶级域名服务器注册的所有二级域名。
收到DNS查询请求时,给出相应回答
- 直接完成域名解析,给出IP地址
- 不给出IP地址,而是给出下一步应当查找的域名服务器的IP地址
授权域名服务器(权限域名服务器)
每台主机都必须在授权域名服务器处登记。
为了可靠性,一台主机最好至少有两个授权域名服务器。
许多域名服务器都同时充当本地域名服务器和授权域名服务器。
收到DNS查询请求时,总能直接完成域名解析,给出IP地址。
本地域名服务器
每个ISP,一所大学,甚至一所大学中的各个系,都可以拥有一个本地域名服务器
当一台主机发出DNS查询请求时,查询请求报文发送给该主机的本地域名服务器
2.4 域名解析过程
正向解析与反向解析
- 正向解析:将域名映射成IP地址
- 反向解析:将IP地址映射成域名
纯递归查询
-
会给根服务器造成过大负载,很少用
-
流程
请求链:主机→本地域名服务器→根服务器→顶级域名服务器→权限域名服务器
响应链:权限域名服务器→顶级域名服务器→根服务器→本地域名服务器→主机
递归与迭代相结合的查询
- 主机向本地域名服务器的查询采用递归查询
即,主机向本地域名服务器查询一个域名的IP地址,若本地域名服务器知道,则直接回答IP;否则自己迭代查询得到IP,再向主机回答IP。
- 本地域名服务器向根域名服务器的查询采用迭代查询
若本地域名服务器不知道对应IP地址,则向根域名服务器发起请求;
根域名服务器回复一个顶级域名服务器IP,本地域名服务器向顶级域名服务器发起请求;
顶级域名服务器回复一个权限域名服务器IP,本地域名服务器向权限域名服务器发起请求;
权限域名服务器回复一个最终IP,本地域名服务器再回复给主机
报文数量
对于一个三级域名的查询,最多产生8个UDP报文。
- 主机发给本地域名服务器的请求报文
- 本地域名服务器发给根域名服务器的请求报文
- 根域名服务器发给本地域名服务器的响应报文
- 本地域名服务器发给顶级域名服务器的请求报文
- 顶级域名服务器发给本地域名服务器的响应报文
- 本地域名服务器发给权限域名服务器的请求报文
- 权限域名服务器发给本地域名服务器的响应报文
- 本地域名服务器发给主机的响应报文
高速缓存
当一个DNS服务器接收到DNS查询结果时,将该DNS信息缓存在高速缓存中,以便下一次询问时直接提供IP地址。
高速缓存中的信息有生存期,到期自动丢弃。
三、文件传输协议FTP
3.1 FTP的工作原理
概述
- FTP是因特网上使用得最广泛的文件传输协议
- 提供交互式访问,允许客户指明文件类型与格式,允许文件具有存取权限
- 屏蔽了各计算机系统的细节,适合于在异构网络中的任意计算机之间传送文件
功能
- 提供不同种类主机系统之间的文件传输能力
- 以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力
- 以匿名FTP的方式提供公用文件共享的能力
服务与端口
- 采用客户/服务器的工作方式
- 使用TCP
- 控制连接端口号21,数据连接端口号20
- 一个FTP服务器进程可同时为多个客户进程提供服务
3.2 控制连接与数据连接
FTP在工作时使用2个并行的TCP连接:控制连接和数据连接
控制连接
- 监听21端口,等待客户连接
- 用于传输控制信息,都以7位ASCⅡ传送
- 控制连接在整个会话期间一直保持打开状态
数据连接
- 数据连接用于连接客户端和服务器的数据传送进程
- 数据传送进程实际完成文件的传送
- 主动模式PORT(服务器连接到客户端的开放端口)
- 客户端连接到服务器的21端口,登录成功后,客户端随机开放一个端口,并通知服务器
- 服务器收到PORT命令和端口号后,通过20端口与该开放端口连接,发送数据
- 被动模式PASV(客户端连接到服务器的开放端口)
- 客户端要读取数据时,发送PASV命令到服务器,服务器随机开放一个端口,并通知客户端
- 客户端连接到服务器开放的端口进行数据传输
3.3 FTP与NFS
- 使用FTP修改服务器上的文件,需要将此文件传送到本地主机,再将修改后的文件副本传回服务器,较为耗时
- 使用NFS修改服务器上的文件,进程只需打开一个远程文件,并在文件的某个特定位置开始读写数据,用户只需要复制一个大文件中一个很小的片段,不需要复制整个大文件
四、电子邮件
4.1 电子邮件系统的构成
用户代理(UA)
- 用户与电子邮件系统的接口
- 用户代理至少应当具有撰写、显示和邮件处理的功能
- 通常情况下,用户代理是一个运行在PC上的程序,如Outlook
邮件服务器
- 发送和接收邮件,向发信人报告邮件传送的情况
- 邮件服务器采用客户/服务器方式工作,但必须能够同时充当客户和服务器
- 发送端邮件服务器的邮件发送协议(如SMTP),只要发现邮件缓存中有待发送的邮件,就向运行在接收端邮件服务器的邮件发送协议(如SMTP)发起TCP连接。所有邮件发送完毕后关闭TCP连接。
邮件发送协议和读取协议
- 邮件发送协议:SMTP
- 邮件读取协议:POP3、IMAP
4.2 电子邮件格式与MIME
电子邮件格式
- 信封
- 用户写好首部后,邮件系统自动提取信息并写到信封
- 内容
- 首部
- To(必需关键字):可以填入一个或多个收件人的电子邮件地址。电子邮件地址格式规定为:收件人邮箱名@邮箱所在主机的域名,如abc@cdf.com。abc这个名字在cdf.com这个服务器上必须唯一
- From(必需关键字):通常由邮件系统自动填入
- Subje(可选关键字):邮件主题
- 主体
- 用户自由撰写的邮件内容
MIME
- SMTP只能传送7位ASCII码邮件,无法支持其他语言,也无法传送可执行文件及其他二进制对象
- MIME在SMTP的基础上增加了邮件主题的结构,定义了传送非ASCII码的编码规则
- 内容
- 5个新的邮件首部字段,包括MIME版本、内容描述、内容标识、传送编码、内容类型
- 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化
- 定义了传送编码,可对任意内容格式进行转换,而不会被邮件系统改变
4.3 邮件传输协议
SMTP
- 负责发送邮件的SMTP进程是SMTP客户,负责接收邮件的SMTP进程是SMTP服务器
- TCP连接,端口号25
- SMTP不使用中间的邮件服务器,TCP连接在发送方和接收方两个邮件服务器之间直接建立
- 通信过程
- 连接建立:
- SMTP客户定期扫描邮件缓存,若发现有待发送邮件,则使用端口号25与SMTP服务器建立TCP连接。
- 连接建立后,SMTP服务器发出220 Service ready
- SMTP客户回应HELO命令,并附上发送方主机名
- 邮件传送:
- SMTP客户发出MAIL命令,后跟发件人地址。
- SMTP服务器回答250 OK。
- SMTP客户发送一个或多个RCPT(收件人)命令,后跟收件人地址。
- 每一个RCPT命令,服务器都要回答250 OK或550 No such user here。以此检查收件人地址是否正确。
- 若收件人地址OK,则SMTP客户发送DATA命令,表示开始传输内容
- SMTP回复 354 Start mail input; end with
. (回车换行)。 - SMTP客户开始传输邮件内容,并用
. 表示邮件结束
- 连接释放
- 邮件发送完毕后,SMTP客户发送QUIT命令
- SMTP服务器回答221(服务关闭),表示服务器同意释放TCP连接
POP3
- 客户/服务器工作方式
- 接收方邮件服务器为POP3服务器,用户代理为POP3客户
- TCP连接,端口号110
- 在传输层明文传输密码
- 基于ASCII码,但可以使用MIME发送非ACSII码数据
- 工作模式
- 下载并保留:用户读取邮件后,邮件依然保存在邮件服务器上
- 下载并删除:用户读取邮件后,删除邮件服务器上的邮件
IMAP
- 比POP3复杂,提供了创建文件夹、在不同文件夹之间移动邮件、在远程文件夹中查询邮件等联机命令
- 允许用户代理只获取报文的某些部分,如只读取首部。适合低带宽的情况。
- 需要维护会话用户的状态信息
基于万维网的电子邮件
- 如Hotmial、Gmail等
- 用户浏览器与邮件服务器之间的邮件发送或接收使用的是HTTP
- 仅在不同邮件服务器之间传送邮件时才使用SMTP
五、万维网WWW
5.1 万维网的概念与组成结构
-
万维网是一个分布式、联机式的信息存储空间(不等于因特网!)
-
万维网的内核部分构成
-
统一资源定位符(URL):负责标识万维网上的各种文档,并使每个文档在整个万维网的范围内有唯一的标识符
- 超文本传输协议(HTTP):应用层协议,使用TCP
-
超文本标记语言(HTML):一种文档结构的标记语言,描述页面上的各种信息
-
URL的一般形式:
<协议>://<主机>:<端口>/<路径>
- 协议指获得万维网文档的方式,如http、ftp
- 主机是存放资源的主机在因特网中的域名或IP地址
- 端口和路径有时可省略
- 不区分大小写
5.2 超文本传输协议HTTP
HTTP过程
用户在浏览器地址栏输入网站并回车之后发生的事件顺序:
- 浏览器分析链接指向页面的URL(http://www.tsinghua.edu.cn/chn/index.htm)
- 浏览器向DNS请求解析域名www.tsinghua.edu.cn
- DNS解析出域名对应的IP地址
- 浏览器与该服务器建立TCP连接(默认端口80)
- 浏览器发出HTTP请求:GET /chn/index.htm
- 服务器通过HTTP响应将文件index.htm发送给浏览器
- 释放TCP连接
- 浏览器解释文件index.htm,并将页面显示给用户
HTTP特点
- 无连接:通信双方在交换HTTP报文时不需要建立HTTP连接
- 无状态:同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时相同
- Cookie:网站服务器为访问用户生成的唯一识别码,添加在HTTP响应报文的"Set-cookie"字段并发回给用户;用户自身也管理了一个特定Cookie文件,收到该报文后,会在文件中添加该网站服务器的主机名和Cookie识别码。当用户继续浏览这个网站时,会在HTTP请求报文中自动添加Cookie发给服务器,服务器根据该Cookie识别用户,从自己数据库中找到相关活动记录,进而执行一些个性化工作
- 非持久连接与持久连接
- 非持久连接:对于每个网页元素对象的传输都要单独建立一个TCP连接。每个对象引用都需要2个RTT
- 持久连接(HTTP1.1默认方式):网站服务器在发送响应后仍保持TCP连接,服务双方继续在该连接上传送后续的HTTP请求和响应报文
- 非流水线方式:客户收到一个响应报文后才能发下一个请求。每个对象引用都需要1个RTT
- 流水线方式:客户每遇到一个对象引用就立即发出一个请求,可以连续发送请求。所有对象引用共计只需要1个RTT延迟
HTTP请求报文常用方法
方法 | 意义 |
---|---|
GET | 请求读取由URL标识的信息 |
HEAD | 请求读取由URL标识的信息的首部,不会返回请求对象 |
POST | 给服务器添加信息 |
CONNECT | 用于代理服务器 |