06 应用层

6.1 域名系统DNS

域名系统概述

互联网的域名系统DNS为一个联机分布式数据库,采用客户服务器方式。运输层协议使用UDP。

互联网的域名结构

www.google.comcom是顶级域名,google是二级域名,www是三级域名。域名标号由英文字母和数字组成,不区分大小写,除连字符以外不允许其他字符。

顶级域名分三大类:

  • 国家顶级域名:cn表示中国,us表示美国,uk英国等

  • 通用顶级域名:com,net,org等

  • 基础结构域名:只有一个,即arpa,用于反向域名解析。

域名服务器

四种类型:

  • 根域名服务器 全世界有13套装置,对应13个不同IP地址的域名,分别是(a.rootservers.net, ..., m.rootservers.net)。全世界共有500多个(数量还在增加)地点安装了根域名服务器。多个地点的服务器可能对应13个IP中的一个。 根域名服务器采用任播(anycast)技术(任播的IP数据报的终点是一组在不同地点的主机,但有相同的IP地址。IP数据报交付离源点最近的一台主机。)

  • 顶级域名服务器 管理在该顶级域名服务器注册的所有二级域名

  • 权限域名服务器 负责一个区的域名服务器

  • 本地域名服务器

为提高可靠性,一般DNS域名服务器会把数据存在几个机器中,其中一个是主域名服务器,其他的是辅助域名服务器。

两种查询方式:

  • 递归查询:一般主机向本地域名服务器的查询用递归查询。本地域名服务器若没有存储对应IP,则自身以DNS客户的身份,向根域名服务器发起查询请求报文。

  • 迭代查询:一般本地域名服务器向根域名服务器的查询用迭代查询。根域名服务器弱不知道对应IP,则把对应顶级域名服务器的IP,告诉本地域名服务器,本地域名服务器自己再向顶级域名服务器发起查询请求。

6.2 文件传送协议

两类文件共享协议

  • 文件传送协议:FTP和TFTP

  • 其他文件共享协议,如网络文件系统(NFS,Network File System)

FTP必须复制整个文件,即使只是要修改文件部分内容,也需要传送整个文件。网络文件系统则支持修改部分内容。NFS可以使本地计算机共享远地的资源,就像这些资源在本地一样。

FTP概述

文件传送协议(File Transfer Protocol)使用TCP的可靠服务。主要功能是减少或消除在不同操作系统下处理文件的不兼容性。

FTP使用客户服务器方式。FTP的服务器进程由两大部分组成:一个主进程,负责接受新的请求。若干个从属进程,负责处理单个请求。

主进程的工作步骤:

  1. 打开熟知端口21

  2. 等待客户进程发出的连接请求。

  3. 启动从属进程处理客户进程发来的请求。

  4. 回到等待状态,等待其他客户进程发来的请求。主进程和从属进程的处理是并发进程的。

在进行文件传输时,FTP的客户和服务器之间要建立两个并行的TCP连接:

  • 控制连接:在会话期间一直保持打开,使用端口号21

  • 数据连接:用于实际传输文件,使用端口号20

简单文件传送协议TFTP

简单文件传送协议(TFTP,Trivial File Transfer Protocol)也采用客户服务器模式,但是用UDP连接。TFTP只支持文件传输,不支持交互。

TFTP的两个优点:

  • 可用于UDP环境

  • TFTP代码占用内存较小

6.3 远程终端协议 TELNET

用户用TELNET可以在其所在地通过TCP连接注册(即登录)到远地的一台主机上。TELNET以前用得很多。现在由于计算机的功能越来越强,用户已较少使用TELNET了。

TELNET也使用客服服务器方式。在本地系统运行TELNET客户进程,远地主机运行TELNET服务器进程。

TELNET能适应许多计算机和操作系统的差异。TELNET定义了数据和命令应怎样通过互联网。这些定义即所谓的网络虚拟终端(NVT,Network Virtual Terminal)

6.4 万维网

万维网概述

万维网并非某种特殊的计算机网络,而是一个大规模的、联机式的信息储藏所。

万维网是一个分布式的超媒体(hypermedia)系统,它是超文本(hypertext)系统的扩展。所谓超文本是指包含指向其他文档的链接的文本。超文本是万维网的基础。超媒体与超文本的区别是文档的内容不同。

万维网必须解决的问题:

  • 怎样标志分布在整个互联网上的万维网文档?——URL

  • 用怎么协议实现万维网的连接?——HTTP

  • 超文本文档如何规范?——HTML

  • 怎样使用户方便的找到需要的信息?——搜索引擎

统一资源定位符

万维网使用统一资源定位符(Uniform Resource Locator,URL)来标志万维网上的各种文档,并使每一个文档在整个互联网的范围内具有唯一的标识符。

URL一般由四部分组成:

<协议>://<主机>:<端口>/<路径>

这里的主机就是指该主机在互联网上的域名

使用HTTP的URL格式如下:

http://<主机>:<端口>/<路径>

HTTP默认端口号是80,通常可以省略。

超文本传送协议 HTTP

HTTP是面向事物的(transaction-oriented)应用层协议。

所谓事物,就是指一系列信息交换,而这一些列的信息交换是一个不可分割的整体。要么所有信息交换完成,要么一次交换都不进行。

  • HTTP协议本身是无连接的。虽然HTTP使用TCP连接,但是通信双方在交换HTTP报文之前不需要建立HTTP连接。

  • HTTP协议是无状态的。服务器不会记录请求的客户。这简化了服务器设计。

在HTTP使用的TCP建立连接时,三次握手:

  1. 发起TCP连接(一个RTT)

  2. HTTP请求报文(一个RTT)

  3. 从开始收到HTTP响应,到HTTP响应接受完毕。(即文档的传输时间)

可见请求一个万维网所需要的时间是2 * RTT + 文档传输时间

HTTP/1.0的主要缺点就是,每请求一个文档,就要有2被RTT的开销。HTTP/1.1使用持续连接,较好的解决了这个问题。持续连接又有两种工作方式:

  • 非流水线方式:客户在收到其一个请求的响应之后,才能发起下一个请求。这样TCP连接处于空闲状态,浪费了服务器资源。

  • 流水线方式:客户请求源源不断的发,服务器连续发回响应报文。

代理服务器

代理服务器(proxy server)又称为万维网高速缓存(Web cache),把最近一些请求和响应暂存在本地服务器中。代理服务器可以在客户端或服务器工作,也可以在中间系统上工作。

HTTP报文结构

HTTP两类报文:

  • 请求报文

  • 响应报文

HTTP是面向文本的,报文中的每一个字段都是一些ASCII码串,因而各个字段的长度都是不确定的。

请求报文和响应报文都有三个部分组成:

  • 开始行:请求报文叫请求行,响应报文叫状态行。请求行三个内容:方法、URL、HTTP版本

  • 首部行

  • 实体主体

工作流程如下:

A访问某个使用Cookie的网站,该网站服务器为A生成一个唯一的识别码,在给A的响应报文中的首部行中添加一个叫Set-cookie的首部行,如Set-cookie: 12343rf4r32efed3e3e,把值存到本地的Cookie文件中。当A继续浏览这个网站时,每发送一个HTTP请求报文,其浏览器就会从其Cookie文件中取出这个网站的识别码,并放到请求的首部Cookie: 12343rf4r32efed3e3e

Cookie只是文本文件,不会可执行程序,不可能传播病毒。

万维网文档

  • HTML:HTML不是应用层协议,只是一种语言。HTML设计的宗旨是展示数据。

  • XML:设计的宗旨是传输数据。XML标记由文档的作者定义,HTML标记则是预定义好的。

三种文档:

  • 静态文档:写好后就存在服务器中,不会改变。

  • 动态文档:浏览器在访问服务器时,由服务器上的程序动态创建。

  • 活动文档:服务器向浏览器返回活动文档程序副本。

通用网关接口(Common Gateway Interface, CGI)是一种标准,定义了动态文档应当如何创建,数据输入应如何提供给应用程序,以及输出结构应如何使用。

万维网的信息检索系统

搜索引擎可以分为两大类:

  • 全文检索搜索引擎:谷歌、百度、必应

  • 分类目录搜索引擎:各种门户网站

全文检索搜索引擎利用爬虫技术,建立一个现在索引数据库供用户查询。用户输入关键词,从已经建立的索引数据库中进行查询。(并不是实时的在互联网上检索到信息)

谷歌搜索技术的特点:

其核心技术是PageRank。用户在有限时间内,不可能阅读所有所有结果,因此需要用户希望的重要性来显示部分结果。

PageRank主要考虑两部分:

  • 重要性:PageRank把整个互联网当做一个整体对待,检查整个网络链接的结构,并确定哪些网页的重要性最高。具体的一种做法就是对指向一个网页的链接的数目进行加权统计。

  • 相关性:进行超文本匹配分析得到。

6.5 电子邮件