应用层是计算机网络体系结构的最顶层,是设计和建立计算机网络的最终目的,也是计算机网络发展最快的部分。
常见的网络应用
网络应用程序运行在处于网络边缘的不同的端系统上,通过彼此间的通信来共同完成某项任务。
开发一种新的网络应用首先要考虑的问题就是 网络应用程序在各种端系统上的组织方式和它们之间的关系。
目前流行的主要有以下两种:
客户/服务器方式(C/S方式)
- 通信中涉及的两个应用进程
- 描述的是进程之间服务和被服务的关系
- 客户是服务请求方,服务器是服务器提供方
- 服务器:总是处于运行状态,等待客户的请求。服务器具有固定端口(例如HTTP服务默认端口号为80),运行服务器的主机也具有固定的IP地址。
- 是因特网上传统的,同时也是最成熟的方式,很多我们熟悉的网络应用采用的都是C/S方式。包括万维网(WWW),电子邮件,文件传输FTP等
- C/S的应用服务通常是服务集中型,即服务集中在网络中比客户计算机少得多的服务器计算机上。
- 一台服务器为多个客户服务,常常会出现服务器跟不上众多客户机请求的情况。所以常用计算机群集或服务器场构建一个强大的虚拟服务器。
对等方式(P2P方式)
- 没固定服务器请求者和服务器提供者,分布在网络边缘各端系统中的应用进程是对等的,被称为对等方,对等方相互之间直接通信,每个对等方既是服务的请求者,又是服务的提供者。
- 因特网上流行的P2P的应用主要包括:P2P文件分享,即时通信,P2P流媒体,分布式存储等
- 基于P2P的应用是服务分散型,因为服务分散在大量对等计算机中
- 突出特征之一:它的可扩展性。因为系统没增加一个对等方,不仅增加的是服务的请求者,同时也增加了服务的提供者,系统性能不会因规模的增大而降低。
- 具有成本上的优势,不需要庞大的服务器设施和服务器带宽 。
动态主机配置协议DHCP
DHCP的作用
通过DHCP自动获取网络配置信息,
DHCP 的 工作过程
- DHCP服务器运行DHCP服务进程,DHCP客户运行客户进程
- DHCP报文在运输层会封装成UDP,服务器使用的UDP端口为67,客户使用的UDP端口是68,都是熟知端口
DHCP客户与DHCP服务器交互的过程
- DHCP报文格式复杂,对于DHCP发现报文,只需要知道内部封装有事物ID和DHCP客户端的MAC地址即可
- DHCP服务器应用层始终运行着DHCP服务器进程,会接受该DHCP发现报文并做出响应。
- DHCP客户中的应用层没有监听服务器进程,无法交付DHCP发现报文,只能丢弃
- DHCP提供报文有配置信息:IP地址,子网掩码,地址租期,默认网关,DNS服务器
- IP地址:使用ARP确保所选IP地址未被网络中其他主机占用
- DHCP请求报文封装:事务ID,DHCP客户端的MAC地址,接受的租约中的IP地址,提供此租约的DHCP服务器端的IP地址
- 客户机在使用ARP监测租用到的IP地址是否被网络其他主机占用:被占,给DHCP服务器发送“DHCP DECILNE”即DHCP谢绝报文,撤销IP地址租约,并重新发送发现报文;未被占,便可使用租约中的IP地址了。
- DHCP客户可随时终止服务器提供的租用期
DHCP服务器1,2,3....,n | DHCP客户 | |
第一部分 | ② 收到客户的发现报文,根据其中封装的客户端的MAC地址查找自己的数据库; 有对应的配置信息,使用配置信息构建并发送DHCP提供报文;没有,则采用默认配置信息构建并发送DHCP提供报文 源IP地址:服务器IP地址 目的IP地址:广播地址(主机目前没有配置IP地址) | ① 广播发送DHCP发现报文 源IP地址:0.0.0.0(因为主机还未分配到IP地址) 目的地址:255.255.255.255(因为还不知道网络中有几个是DHCP服务器) |
第二部分 | ① 某个服务器接受该请求,并给DHCP客户发送DHCP确认报文 源IP地址:某DHCP服务器1的IP地址 目的IP地址:广播地址 | ② 当前运行着DHCP客户进程,可接受该DHCP提供报文并做出相应处理: 提供报文事物ID = 发现报文事物ID => 自己请求的报文,接受报文 提供报文事物ID = 发现报文事物ID =>丢弃该报文 收到多个DHCP服务器发来的报文,从中选择一个,一般选择先到的那个,并向所选择的那个DHCP服务器发送DHCP请求报文 源地址:0.0.0.0 目的地址:广播地址(不用向网络中的每一个DHCP服务器单播发送DHCP请求报文来告知它们是否请求它们作为自己的DHCP服务器) |
第三部分 | 收到确认报文,可以使用所租用到的IP地址 | |
第四部分 | ② 接收到请求报文之后 同意租用:发回确认报文,继续租用 不同意:发回DHCP否认报文 未作出响应 源IP地址:服务器地址 目的IP地址:IP地址 | ① 当过了租用期 的 一半的时候,向服务器发送DHCP请求报文,来请求更新租用期 源地址:DHCP租用的地址 目的地址:DHCP某服务器的地址 |
第五部分 | 收到确认报文,则继续租用 收到否认报文,则立即停用IP地址的使用,然后继续发送DHCP发现报文 若未收到报文,则在租用期过了87.5%时,重新发送请求报文,若还未反应,到期后,则停用 | |
第六部分 | 若不想租用了 则DHCP客户随时可向服务器发送释放报文段 |
DHCP中继代理
因为上面的DHCP报文是广播发送的,但是路由器隔绝广播。
解决方法:给该路由器配置DHCP服务器的IP地址,并使之称为DHCP中继代理。所以当路由器接收到DHCP发现报文,会单播发送这个报文。
使用上面方法的原因是:不愿意给每一个网络设置一个DHCP服务器,不然太多服务器了。
域名系统DNS
- DNS服务器有 域名 和 IP地址 的映射关系】
- 因特网是否可以只使用一台DNS服务器呢?会超负荷无法工作。
- DNS大多数域名都在本地解析,仅少量解析需要在因特网上通信,因此系统效率高。
- DNS是分布式系统,即使单个计算机出了故障,也不会妨碍整个系统正常运行
域名
- 因特网采用层次树状结构的域名结构
- 域名结构由若干个分量组成,各分量使用点隔开,分别代表不同级别的域名
每一级域名都由英文字母和数字组成,不超过63个字符,不区分字母大小写字母
级别最低的域名写在最左边,级别最高的顶级域名写在最右边
完整的域名不超过255个字符
- 域名系统既不规定一个域名需要包含多少个下级域名,也不规定每一级域名代表什么意思
- 各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由因特网名称与其数字地址分配机构CANN进行管理
- 顶级域名
国家顶级域名nTLD,采用ISO 3166的规定,如cn表示中国,us表示美国
通用顶级域名gTLD,常见的有七个,即com(公司企业)、net、org、int、edu、gov、mil
反向域名arpa:用于反向域名解析,即IP地址反向解析为域名
- 国家顶级域名下注册的二级域名均由国家自行确定。
- 我国将二级域名划分为以下两类
类别域名(七个):ac、com、edu、gov、net、mil、org
行政区域名(34个):sh,bj...
名称相同的域名其等级未必相同
因特网的域名空间
- 这种按等级管理的命名方法便于维护名字的唯一性,并且也容易设计出一种高效的域名咨询机制。需要注意的是,域名只是个逻辑概念,并不代表计算机所在的物理地点。
域名和IP地址的映射关系必须保存在域名服务器中,供所有其他应用查询,显然不能将所有信息都储存在一台域名服务器中,DNS使用分布在各地的域名服务器来实现域名到IP地址的转换。
域名服务器可以划分为以下四种不同的类型
- 根域名服务器
根域名服务器最高层次的域名服务器,每个根域名服务器都知道所有的顶级域名服务器域名以及IP地址。因特网上共有13个不同的IP地址的根域名服务器,尽管我们将这13个根域名服务器中的每一个都看做单个的服务器,但每台服务器实际上是由许多分布在世界各地的计算机构成的服务器群集。当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离这个DNS客户最近的一个根域名服务器。加快了DNS查询过程,同时也更合理地利用了因特网的资源。根域名服务器通常不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的IP地址。
- 顶级域名服务器
这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。当收到DNS查询请求时就给出相应的回答(可能是最后的结果,也可能是下一级权限域名服务器的IP地址)
- 权限域名服务器
这些域名服务器负责管理某个区的域名,每一个主机的域名都必须在某个权限域名服务器处注册登记。因此权限域名服务器知道其管辖的域名与IP地址映射关系。另外,权限域名服务器还知道其下级域名服务器的地址。
- 本地域名服务器
本地域名服务器不属于上述的域名服务器等级结构。当一个主机发出DNS请求报文时,这个报文就首先被送往该主机的本地域名服务器。本地域名服务器起着代理的作用,会将报文转发到上述的域名服务器的等级结构中。每一个因特网服务提供者ISP,一个大学,甚至一个大学里的学院,都可以拥有一个本地域名服务器,它有时也称为默认域名服务器。本地域名服务器的IP地址需要直接配置在需要域名解析的主机中。
域名解析的过程
由于递归查询对于被查询的域名服务器负担太大,通常采用以下模式:
从请求主机到本地域名服务器的查询 采用递归,其余为迭代查询
递归查询
想知道某域名 → 向本地域名服务器递归查询→向根域名服务器递归查询→向顶级域名服务器查询→权限域名服务器查询
查到之后把结果沿原路返回
迭代查询
- ③ 告诉本地域名服务器下一次应查询的顶级域名服务器的IP地址
- ⑤ 顶级域名服务器告诉本地域名服务器下一次应查询的权限域名服务器的IP地址
- ⑦ 权限域名服务器告诉本地域名服务器所查询的IP复制
- ⑧ 本地域名服务器最后把查询结果告诉主机
为了提高DNS的查询效率,并减轻根域名服务器的负荷和减少因特网上DNS查询报文的数量,在域名服务器中广泛使用高速缓存。高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
比如不久前已经有用户查询过某域名的IP地址,则本地域名服务器的高速缓存中应该存有该域名对应的IP地址。
由于域名到IP地址的映射关系并不是永久不变,为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器并删除超过合理时间的项。
用户主机中也需要高速缓存,主机也需要保持高速缓存中的内容的正确性。
例题一
A 参考迭代查询的那张图
例题二
答案解析: