计算机网络--六.应用层

讨论各种应用进程通过怎样的应用层协议来使用网络所提供通信服务。
运输层为应用进程提供端到端的通信服务,但是不同的网络之间进程的通信还需要不同的通信规则。应用层协议是为了解决某一类应用问题而言,且需要通过位于不同主机中的多分应用进程之间的通信和协同工作才能实现,所以运输层之上还需要应用层协议。
因特网公共领域的标准应用的应用层协议是由 RFC 文档定义的,,比如万维网的应用层协议 HTTP (超文本传输) 就是RFC 定义的,只要浏览器遵守该标准就能访问同样遵守该协议的万维网服务器并获取相关页面信息。它主要定义了传送的报文类型,格式和序列等规则。

域名系统 DNS

1.概述

这是==因特网==使用的命名系统,用于将机器名字转换为 ip 地址。因为机器名字较 32 位二进制的主机地址容易记住,而处理数据报时使用 ip 地址不使用域名是因为 ip 地址是固定长度的(ipv4 32,ipv6 128),机器处理较为容易。因特网采用的是层次树状结构的命名方法,并且使用的分布式的域名系统,(域名到 ip 地址的解析由很多分布在因特网上的==域名服务程序==(域名服务器))且 DNS 使大多数的名字在本地进行解析,少数解析需要在因特网上通信,因此效率高。

域名到 ip 地址的解析:当一个应用进程需要解析主机名时就调用==解析程序==,并成为 DNS 的一个客户,把需要解析的域名放在 DNS 请求报文中,以 UDP 数据报的方式(减少开销)发给本地域名服务器。后面可分为两种情况:

1.本地域名服务器在成功查找到该域名后,把对应的 ip 地址放在回答报文中返回,应用进程在获得目的主机的 ip 后就可以进行通信。
2.若查找不到,则这个域名服务器就暂时成为 DNS 的另一个客户,向其他域名发送查询请求,这个过程重复知道能回答该请求的服务器。

2.因特网的域名结构

因特网采用的层次树状结构的命名,因此任何一个主机或者路由都有一个唯一的==层次结构的名字==,即域名。(域是指名字空间中一个可被管理的划分)。一个域可以被划分成子域,子域也可以被划分,最后形成顶级域,二级域,三级域…

image

DNS 规定 域名中的标号由英文字母和数字组成,每一个标号不超过63个字符,不区分大小写,,只能有 - 这个标点符号,整个的域名不超过255个字符。显然域名的点和 ip 地址的点 并不是一一对应。

顶级域名分为三类:

1.国家顶级域名(.cn)
2.通用顶级域名(.com)
3.基础结构域名,arpa ,用于反向域名解析。

二级域名(中国的分类)

1.类别域名
2.行政域名

域名空间

image

3.域名服务器

一个服务器所负责管辖的范围叫做 区。区是域名服务器管辖范围划分的单位,区只可能小于或者等于域。如下:图a 是指只划分一个区,图 b 是两个划分了两个 区。

image

以图 b 为例的 DNS 域名服务器树状结构,反应出 DNS 的分布系统。

图..

域名服务器也是按找层次划分的,每一层次的域名服务器只对自己域名体系中的一部分进行管辖,域名服务器可划分为四种类型
1.根域名服务器(最重要),其知道所有的顶级域名服务器的域名和 ip 地址,一个本地域名服务器无法解析一个域名时就首先求助根域名服务器。当一个 DNS 需要到跟域名服务器进行查询时,因特网的路由就能找到距离这个客户最近的一个根域名服务器。根域名服务器只会告诉客户下一步应当查找哪一个顶级域名服务器,并不会直接把域名解析成 IP 地址,
2.顶级域名服务器,其负责管理旗下的二级域名。
3.权限域名服务器,负责一个区。
4.本地域名服务器,(默认域名服务器),每一个主机需要查询时就首先将报文发送给本地域名服务器。
为了安全和可靠一般有一个主域名服务器和辅助域名服务器,保存着相同的数据。

域名的解析过程

1.主机向本地域名服务器的查询属于 递归查询,即如果本地服务器不知道,那本地服务器就作为一个客户向其他根域名服务器发送请求报文。查询的结果是 IP 地址 或者无法需要的 IP 地址。
2.本地域名服务器向根域名服务器查询属于迭代查询。即当更域名服务器收到本地域名服务器发送的迭代查询报文,要么给出 IP 地址,要么告诉本地域名服务器下一个应该查询的 顶级 服务器,然后本地域名服务器自己再去发送报文。接着是顶级域名服务器接收到报文后要么直接给出 ip 地址,要么,要么告诉本地域名服务器下一个应该查询的 权限 服务器,然后本地域名服务器自己再去发送报文。如此往复迭代。
本地域名服务器可以采用两种方式,关键取决于发送的请求报文中设置的是哪一种方式。图 如下:(注意到两种方式都是发送了 8 个 UDP 报文)

image

为了提高效率,服务器中采用了高速缓存,即保存了上一次查询的域名以及从何处获得域名的记录,并设置合适的超时时间,主机也要高速缓存,只有在缓存中查找不到时才使用域名服务器。

2.文件传送协议

1. FTP 概述

FTP 提供交互式的访问,允许指明文件的类型和格式,允许具有存取权限。
文件共享协议中一大类,复制整个文件,特点是如要存取一个文件,需要获得本地的文件副本。如要修改文件只能对文件的副本进行修改,然后将修改的文件副本传给原节点。另一大类是联机访问,意味着允许同时对一个文件进行存取,这是由操作系统直接提供的服务,操作系统的文件系统则提供对文件的透明存取,即原来用于处理本地文件的应用程序用来处理远程文件。使用文件共享协议的有网络文件共享系统
文件传送协议 FTP 只提供文件传送的一些基本的服务,使用 TCP 的可靠传输服务, FTP 的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。

2.基本工作原理

FTP 使用客户服务器的方式,一个 FTP 服务器进程可同时为多个客户进程提供服务,FTP 的服务器进程有一个主进程,负责接受新的请求,另外有若干的从属进程,负责处理单个请求。
主进程的工作如下:
1.开启端口,使客户进程连接
2.等待客户发出请求
3.启动从属的进程来处理客户的请求,处理玩完毕即终止。
4.继续等待,主进程和从属进程的处理是并发的进行的。
文件传输的过程
FTP 的客户端和服务器一般有两个进程控制进程和数据传送进程,在进行文件传输的时需要建立两条并行的 TCP 的连接,“控制连接和数据连接”,控制连接会一直打开,FTP 客户发出传送请求(也可以发请求终止),通过控制链接发送给服务端的控制进程,然后创建 数据传送进程和 数据连接,连接客户端,并进行数据的传输,在传送完毕后结束运行。在发送建立连接请求时会告诉服务器客户端的另一端端口号,用于建立数据传送链接,结果就是数据连接和控制链接使用了不同的端口号。
网络文件传输系统可允许应用进程打开一个远程文件,并在该文件某一个特定的位置开始读写数据,(只要一个客户端把添加的数据和在文件后面写数据的请求发送给 另一主机的NFS 服务器,更新后返回应答),就可以传输少量的修改数据。

3.TFTP 简单的文件传输协议,只支持文件传输,不支持交互。

3.远程终端协议 TELNET

TELNET 是一个简单的远程终端协议( 又称终端仿真协议 ),用户用 TELNEI 就可以其所在地通过 TCP 连接注册到远地的另一个主机上(需要使用主机名或者 ip 地址)。TELNET 将用户操作的行为通过 TCP 进行传输,所以看起来像直接操作了远程主机。

4.万维网 WWW

1.概述

万维网是一个大规模的,联机式的信息存储系统,简称 Web.万维网是一个分布式的超媒体系统,是超文本系统的扩展,(超文本是指包含指向其他文档的链接的文本,从一个链接可找到另一个文档)超文本是万维网的基础。
浏览器就是万维网客户进程,万维网文档所驻留的主机则运行服务器程序,客户端向服务器程序发出请求,服务器程序向客户程序送回客户需要的万维网文档,在客户浏览器显示出来的文档成为页面(现在你用浏览器看到的就是一个页面)

几个重要的问题:

1.为了标志分布在整个因特网上的万维网文档,万维网使用==统一资源定位符URL==来标识每一个文档,且每一个文档有一个唯一的标识符。
2.为了实现万维网各种链接,客户进程和服务器之间的交互遵守==超文本传送协议HTTP==(这是一个应用层协议,使用TCP 进行一个可靠的传输)
3.为了使不同风格的文档在各种客户进程显示,且标明链接地方,万维网使用==超文本标记语言HTML==

2.统一资源定位符 URL

URL 相当于一个文件在网络范围的扩展,一般格式为 <协议>://<主机>:<端口>/<路径>
协议就是用来指出使用什么协议获取该文档,有超文本传送协议 HTTP,其次是 文件传送协议 FTP。
主机是表示这个文档在那一台主机上,通常使用域名表示
HTTP 的 URL
默认端口是80,或者8080,如果省略端口和路径则表示某个主页。

3.超文本传送协议 HTTP

HTTP 定义了浏览器怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。HTTP 是==面向事务==的应用层协议,是万维网可靠交换文件的基础。
工作过程:
一个服务器进程不断监听 TCP 端口(80 ),在监听到连接建立请求后建立 TCP 连接,浏览器发送某个浏览页面的请求,服务器返回所请求得页面。最后释放 TCP 连接。浏览器的请求和相应的交互就严格遵守 HTTP 协议。
示例(如访问一个 链接 所经历的事)
1.浏览器分析链接指向界面的 URL.
2.浏览器向 DNS 请求解析 ip 地址。
3.域名系统 DNS 解析出服务器的 ip 地址。
4.浏览器与服务器建立 TCP 连接
5.浏览器发出取文件指令
6.服务器给出响应,把文档发给浏览器
7.释放 TCP 连接
8.浏览器显示文档中的所有文本
请求一个文档需要的时间:首先建立 TCP 连接,需要三次握手,HTTP 请求报文作为第三次握手,服务器返回响应,需要两倍 RTT,加上文档的传输时间。

image

HTTP 使用了面向连接的 TCP 作为运输层的协议额,保证数据的可靠传输,但是 HTTP 协议本身是无连接的,即在传送 HTTP 报文之前是不需要先建立 HTTP 连接,而且 HTTP 协议是无状态的,即不记录任何访问信息。
HTTP 使用了持续连接,就是服务器在发送响应的后仍然在一段时间内保持这条连接,这个连接可以传送同一服务器的其他文档。持续连接有两种工作方式:
1.非流水线,收到响应后才发下一个请求,比非持续连接要用去 两倍 RTT,节省了一个建立 TCP 连接的时间RTT。
2.流水线,可连续发请求,访问对象只需要一个 RTT ,使 TCP 空闲时间减少

2.代理服务器

又称万维网高速缓存。把最近的一些请求和响应暂存在本地磁盘,如果请求相同就返回缓存的数据,否则就代表客户发送 HTTP 报文,得到响应后先复制保存再返回给客户进程。

3.HTTP 报文的结构

(1)请求报文
(2)响应报文
HTTP 是面向文本的,它的报文中的字段都是一些 ASCII 码串,所以字段长度也是不一样的。请求报文和响应报文都是三个部分组成。
(1)开始行,用于区分是请求报文还是响应报文。请求报文中叫做请求行,响应报文叫做状态行。
(2)首部行,说明浏览器和服务器或者报文主体的一些信息。可以有好几行也可以不使用。
(3)实体主体
(1)请求报文
请求行只有三个内容:方法,请求资源的 URL ,和 HTTP 的版本。方法,即对请求对象进行的操作。

image

(2)响应报文
状态行包括 HTTP 的版本,状态码,以及解释状态码的简单短语。
1xx 表示通知信息的,如请求收到了或者正在处理
2xx 表示成功,如接受或者知道了
3xx 表示重定向,如完成请求还需要进一步操作
4xx 表示客户的差错,如请求中有语法错误或者不能完成
5xx 表示服务器的差错,如服务器失效无法完成请求。

4.Cookie

4.万维网的文档

1.与浏览器有关的语言

(1).超文本标记语言 HTML

这是一种制作万维网页面的标准语言。现在最新的版本是 HTML 5.0,HTML 定义了许多排版的命令,即标签 , 标志开始标志结束。

(2).XML 可扩展的标记语言。设计宗旨是传输数据而不是显示数据,XML 用于标记电子文件,使其具有结构性的标记语言,可以用来标记数据,定义数据类型,是一种允许用户对自己的标记的语言进行定义的语言。优点是将用户界面和结构化数据分割开,使得数据与显示分开。

(3).XHTML 可扩展的超文本标记语言

(4).CSS 是层叠样式表,一种样式表语言,用于为 HTML 文档定义布局。

2.动态万维网文档

在需要被访问的时候由应用程序动态创建,通用网关接口 CGI 是一种接口定义了动态文档如何创建,输入数据如何提供给应用程序,以及输出结果应如何使用,CGI 的正式名字是 CGI 脚本,(脚本指的是一个程序,被另一个程序执行而不是计算机处理,JavaScript 就是一门脚本语言 )

3.活动万维网文档

可用于浏览器屏幕显示的连续更新,一般有两种技术:一种是服务器推送,服务器需要运行许多服务器推送程序,且每一个客户端需要维持一个不释放的 TCP 链接,这会导致服务器的过多开销和网络的延迟。另一种是活动文档,就是服务器返回一个活动文档程序的副本,程序的副本在浏览器运行,直接修改文档。

5.动态主机配置协议 DHCP

协议软件为了通用的和便于移植,一般可以对某些参数进行手动配置,叫做协议配置,动态主机配置协议 DHCP 提供了即插即用联网机制。
DHCP 给运行服务器的计算机指派一个永久的地址。在客户和服务器之间使用 C/S 方式,需要 ip 地址的主机因为没有 ip 地址也不知道服务器地址,所以就向 DHCP 服务器广播发送发现报文(目的 IP 置为255.255.255.255 全1),源 ip 置为全0,在本地网络所有主机都能收到这个广播报文,只有 DHCP 服务器对此广播对这个报文进行回答,这个回答的过程就是先在数据库中找到该客户主机的配置信息,没有的话就从 ip 地址池中分配一个给计算机, DHCP 的回答报文叫做提供报文。通常会在客户主机和服务器之间设置一个 DHCP 中继代理,先收到客户主机的发现报文后在以单播的形式向服务器转发报文。注意 DHCP 报文只是 UDP 用户数据报的数据,还要加上 UDP 首部,IP 数据报首部以及以太网的 MAC 帧的首部才能在链路上传输。
参考资料:《计算机网络》–谢希仁

猜你喜欢

转载自blog.csdn.net/m0_38089373/article/details/80586610