0%

计网应用层L1

  • 应用层的任务是:解决通过应用进程的交互来实现特定网络应用的问题。

6.1 应用层概述

  • 应用层是计算机网络体系结构的最顶层,是设计和建立计算机网络的最终目的,也是计算机网络中发展最快的部分。

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C6-1.jpg)

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C6-2.jpg)

6.2 客户 - 服务器方式和对等方式

客户 - 服务器方式

  • 客户 - 服务器方式(C/S 方式,Client/Server)

    客户服务器是指通信中所涉及的两个应用进程,客户/服务器方式所描述的是进程之间服务和被服务的关系

  • 如下图所示,处于网络边缘的主机 A 中运行的是客户程序,正在运行的客户程序称为客户进程,简称为客户,运行客户进程的主机应称为客户计算机,但有时也简称为客户。

    处于网络边缘的主机 B 中运行的是服务器程序,正在运行的服务器程序称为服务器进程,简称为服务器,运行服务器进程的主机应称为服务器计算机,但有时也简称为服务器。

    在客户/服务器方式下,客户向服务器请求服务,服务器收到服务请求后向客户提供服务,客户是服务的请求方,服务器是服务的提供方。服务器总是处于运行状态,并等待客户的服务请求,服务器具有固定的端口号(例如 HTTP 服务器的默认端口号为 80),而运行服务器的主机也具有固定的 IP 地址

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C6-3.jpg)

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C6-4.jpg)

    基于 C/S 方式的应用服务是服务集中型的。

对等方式

  • 对等方式(P2P 方式,Peer-to-Peer):在 P2P 方式中,没有固定的服务请求者和服务提供者,分布在网络边缘各端系统中的应用进程是对等的,被称为对等方,对等方相互之间直接通信,每个对等方既是服务的请求者,又是服务的提供者

  • 如下图所示,处于网络边缘的主机 C、D、E、F 中,运行着同一种 P2P 程序,E 和 F 中的 P2P 进程互为对等方,C 和 D 中的 P2P 进程互为对等方,而 E 中的 P2P 进程还和 D 中的 P2P 进程互为对等方。

    可能存在以下一种情况:E 的 P2P 进程正在从 F 下载文件,与此同时还为 D 的 P2P 进程提供下载服务。

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C6-5.jpg)

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C6-6.jpg)

    基于 P2P 方式的应用服务是服务分散型的。

★6.3 动态主机配置协议DHCP

  • DHCP(Dynamic Host Configuration Protocol),动态主机配置协议

DHCP的作用

  • 如下图所示,有这样的一个网络拓扑,为了能使用户主机可以正常地访问 Web 服务器,就需要给网络中的各主机正确配置 IP 地址、子网掩码、默认网关、DNS 服务器等网络相关配置信息

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C6-7.jpg)

    如果采用人工配置,则随着网络中主机数量的增加,工作量就会加大,而且容易出错,所以可以采用动态配置的方法来为网络中的各主机配置相关信息。

  • 如下图所示,给网络中添加一台 DHCP 服务器,在该服务器中设置好可为网络中其他各主机配置的网络配置信息,网络中各主机开机后就自动启动 DHCP 程序,向 DHCP 服务器请求自己的网络配置信息,这样,网络中的各主机就都可以从 DHCP 服务器中自动获取网络配置信息,而不用手工配置。

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C6-8.jpg)

★★★DHCP的工作过程

  • 假设网络中有两台 DHCP 服务器和多台用户主机,为了简单起见,仅画出两台 DHCP 服务器和一台用户主机。DHCP 使用客户 / 服务器方式,在 DHCP 服务器上运行 DHCP 服务器进程,也可简称为 DHCP 服务器;在用户主机上运行 DHCP 客户进程,也可简称为 DHCP 客户

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C6-9.jpg)

    DHCP 是 TCP/IP 体系结构中应用层中的协议,它使用运输层的 UDP 所提供的服务,即 DHCP 报文在运输层会被封装成为 UDP 用户数据报,DHCP 服务器使用的 UDP 端口是 67,DHCP 客户使用的 UDP 端口是 68;封装有 DHCP 报文的 UDP 用户数据报在网络层会被封装成 IP 数据报,然后再根据所使用的网络接口,封装成相应的数据链路层的帧进行发送(例如封装成以太网帧)

  • 当启用 DHCP 客户主机后,DHCP 客户将广播发送 DHCP 发现报文,封装该报文的 IP 数据报的源 IP 地址为 0.0.0.0,原因在于此时主机还未分配到 IP 地址,因此使用该地址来代替;目的 IP 地址为广播地址 255.255.255.255,进行广播发送的原因是因为主机现在并不知道网络中有哪几个 DHCP 服务器,它们的 IP 地址各是什么。

    由于是广播的 IP 数据报,所以处于网络中的所有设备都会收到该 IP 数据报,并对其进行层层解封,解封出封装有 DHCP 发现报文的 UDP 用户数据报,对于 DHCP 客户,其应用层没有监听该 UDP 用户数据报的目的端口为 67 的进程(即 DHCP 服务器进程),因此无法交付 DHCP 发现报文,只能丢弃;而对于 DHCP 服务器,其应用层始终运行着 DHCP 服务器进程,因此会接收该 DHCP 发现报文并作出响应。DHCP 发现报文中封装有事物 IDDHCP 客户的 MAC 地址

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C6-10.jpg)

    DHCP 服务器收到 DHCP 发现报文后,根据其中封装的 DHCP 客户的 MAC 地址来查找自己的数据库,看是否有针对该 MAC 地址的配置信息,如果有,则使用这些配置信息来构建并发送 DHCP 提供报文;如果没有,则采用默认配置信息来构建并发送 DHCP 提供报文。封装该 DHCP 提供报文的 IP 数据报的源 IP 地址为 DHCP 服务器的 IP 地址目的 IP 地址仍为广播地址,仍然使用广播地址的原因是,主机目前还没有配置 IP 地址,为了使主机可以收到,只能发送广播。

    因此,网络中的所有设备都会受到该 IP 数据报,并对其进行层层解封,解封出封装有 DHCP 提供报文的 UDP 用户数据报,对于 DHCP 服务器,其应用层没有监听该 UDP 用户数据报的目的端口为 68 的进程(即 DHCP 客户进程),因此无法交付 DHCP 提供报文,只能丢弃;而对于 DHCP 客户,其应用层运行着 DHCP 客户进程,因此会接收该 DHCP 提供报文并作出相应的处理。DHCP 客户会根据 DHCP 提供报文中的事物 ID 来判断该报文是否是自己所请求的报文,如果该事物 ID 与自己之前发送的 DHCP 发现报文中封装的事物 ID 相等,就表明这是自己所请求的报文,就可以接收该报文,否则丢弃该报文。DHCP 提供报文中还封装有配置信息(例如 IP 地址、子网掩码、地址租期、默认网关、DNS 服务器等)。

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C6-11.jpg)

    注意:DHCP 服务器从自己的 IP 地址池中挑选待租用给主机的的 IP 地址时,会使用 ARP 来确保所选 IP 地址未被网络中的其他主机占用

    在本例中,DHCP 客户会收到两个 DHCP 服务器发来的 DHCP 提供报文,DHCP 客户要从中选择一个,一般选择先到的那一个,并向所选择的 DHCP 服务器发送 DHCP 请求报文,封装该报文的 IP 数据报的源 IP 地址仍为 0.0.0.0,因为此时 DHCP 客户才从多个 DHCP 服务器中挑选一个作为自己的 DHCP 服务器,它首先应征得该服务器的同意,之后才能正式使用向该 DHCP 服务器租用的 IP 地址;目的 IP 地址仍为广播地址 255.255.255.255,这样做的目的是不用向网络中的每一个 DHCP 服务器单播发送 DHCP 请求报文,来告知它们是否请求它们作为自己的 DHCP 服务器。

    DHCP 请求报文中封装有事物 IDDHCP 客户的 MAC 地址接受的租约中的 IP 地址提供此租约的 DHCP 服务器的 IP 地址等信息。

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C6-12.jpg)

    在本例中,假设 DHCP 客户选择 DHCP 服务器 1 作为自己的 DHCP 服务器,并且 DHCP 服务器 1 接收该请求,于是 DHCP 服务器 1 给 DHCP 客户发送 DHCP 确认报文,封装该报文的 IP 数据报的源 IP 地址为 DHCP 服务器 1 的 IP 地址目的 IP 地址仍为广播地址

    DHCP 客户收到该确认报文后,就可以使用所租用到的 IP 地址了,需要注意的是,在使用租用到的 IP 地址之前,主机还会使用 ARP 检测该 IP 地址是否已被网络中其他主机占用,若被占用,DHCP 客户会给 DHCP 服务器发送 “DHCP DECLINE”,即 DHCP 谢绝报文来谢绝 IP 地址租约,并重新发送 “DHCP DISCOVER” 报文;若未被占用,则可以使用租约中的 IP 地址与网络中其他主机通信了

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C6-13.jpg)

    当租用期过了一半时,DHCP 客户会向 DHCP 服务器发送 DHCP 请求报文,来请求更新租用期,封装该报文的 IP 数据报的源 IP 地址为 DHCP 客户之前租用到的 IP 地址目的 IP 地址为 DHCP 服务器 1 的 IP 地址

    • DHCP 服务器若同意,则发回 DHCP 确认报文,这样 DHCP 客户就得到了新的租用期;
    • DHCP 服务器若不同意,则发回 DHCP 否认报文,这时,DHCP 客户必须立即停止使用之前租用的 IP 地址,并重新发送 DHCP 发现报文来重新申请 IP 地址
    • DHCP 服务器若未作出响应,则在租用期过了 87.5% 时,DHCP 客户必须重新发送 DHCP 请求报文,然后继续等待 DHCP 服务器可能做出的反应:
      • 若 DHCP 服务器仍未做出响应,则当租用期到期后,DHCP 客户必须立即停止使用之前租用的 IP 地址并重新发送 DHCP 发现报文来重新申请 IP 地址

    DHCP 客户可以随时提前终止 DHCP 服务器所提供的租用期,这时只需向 DHCP 服务器发送 DHCP 释放报文即可。

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C6-14.jpg)

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C6-15.jpg)

DHCP中继代理

  • 如下图所示,有这样一个网络拓扑,黄色框中的主机并不能自动获取到 IP 地址等网络配置信息,因为路由器并不转发广播的 IP 数据报

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C6-16.jpg)

    解决方法是给该路由器配置 DHCP 服务器的 IP 地址,并使之成为 DHCP 中继代理

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C6-17.jpg)

★6.4 域名系统DNS

  • 域名系统 DNS(Domain Name System)

DNS的作用

  • 当我们在浏览器地址栏中输入某个 web 服务器的域名时,用户主机会首先在自己的 DNS 高速缓存中查找该域名所对应的 IP 地址,如果没有找到,则会向网络中的某台 DNS 服务器查询,DNS 服务器中有域名和 IP 地址映射关系的数据库,当 DNS 服务器收到 DNS 查询报文后,在其数据库中进行查询,之后将查询结果发送给用户主机,于是用户主机中的浏览器就可以通过 Web 服务器的 IP 地址对其进行访问了。

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C6-18.jpg)

    虽然 DNS 服务器理论上有一台就够了,但在实际中是不可行的,理由如下:

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C6-19.jpg)

★层次树状结构的域名结构

  • 因特网采用层次树状结构的域名结构域名的结构由若干个分量组成,各分量之间用 “点” 隔开,分别代表不同级别的域名

    如下图所示:

    • 每一级的域名都由英文字母和数字组成,不超过 63 个字符,不区分大小写字母
    • 级别最低的域名写在最左边,而级别最高的顶级域名写在最右边
    • 完整的域名不超过 255 个字符

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C6-20.jpg)

  • 顶级域名 TLD (Top Level Domain)分为以下三类:

    • 国家顶级域名 nTLD
    • 通用顶级域名 gTLD
    • 反向域 arpa,用于反向域名解析,即将 IP 地址反向解析为域名。

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C6-21.jpg)

    注意:名称相同的域名其等级未必相同

因特网的域名空间

![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C6-22.jpg)

★域名服务器

  • 域名和 IP 地址的映射关系必须保存在域名服务器中,供所有其他应用查询。显然不能将所有信息都储存在一台域名服务器中,DNS 使用分布在各地的域名服务器来实现域名到 IP 地址的转换。

  • 域名服务器可以划分为以下四种不同的类型:

    • 根域名服务器:根域名服务器通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的 IP 地址
    • 顶级域名服务器:这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名,当收到 DNS 查询请求时就给出相应的回答(可能是最后的结果,也可能是下一级权限域名服务器的 IP 地址)。
    • 权限域名服务器:这些域名服务器负责管理某个区的域名每一个主机的域名都必须在某个权限域名服务器处注册登记,因此权限域名服务器知道其管辖的域名与 IP 地址的映射关系,另外,权限域名服务器还知道其下级域名服务器的地址
    • 本地域名服务器:本地域名服务器不属于上述的域名服务器的等级结构。当一个主机发出 DNS 请求报文时,这个报文就首先被送往该主机的本地域名服务器。本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中。每一个因特网服务提供者 ISP,一个大学,甚至一个大学里的学院,都可以拥有一个本地域名服务器,它有时也称为默认域名服务器。本地域名服务器离用户较近,一般不超过几个路由器的距离,也有可能就在同一个局域网中。本地域名服务器的 IP 地址需要直接配置在需要域名解析的主机中

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C6-23.jpg)

★★★域名解析的过程

递归查询
  • 如下图所示,假设图中的主机想要知道域名 y.abc.com 的 IP 地址,

    • 主机首先向其本地域名服务器进行递归查询
    • 本地域名服务器收到递归查询的委托后,也采用递归查询的方式向某个根域名服务器查询;
    • 根域名服务器收到递归查询的委托后,也采用递归查询的方式向某个顶级域名服务器查询;
    • 顶级域名服务器收到递归查询的委托后,也采用递归查询的方式向某个权限域名服务器查询;
    • 当查询到域名所对应的 IP 地址后,查询结果会在之前受委托的各域名服务器之间传递,最终传回给用户主机

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C6-24.jpg)

迭代查询
  • 如下图所示,假设图中的主机想要知道域名 y.abc.com 的 IP 地址,

    • 主机首先向其本地域名服务器进行递归查询
    • 本地域名服务器采用迭代查询,它先向某个根域名服务器查询;
    • 根域名服务器告诉本地域名服务器下一次应查询的顶级域名服务器的 IP 地址;
    • 本地域名服务器向顶级域名服务器进行迭代查询;
    • 顶级域名服务器告诉本地域名服务器下一次应查询的权限域名服务器的 IP 地址;
    • 本地域名服务器向权限域名服务器进行迭代查询;
    • 权限域名服务器告诉本地域名服务器所查询的域名的 IP 地址
    • 本地域名服务器最后把查询结果告诉主机。

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C6-25.jpg)

DNS高速缓存

  • 为了提高 DNS 的查询效率,并减轻根域名服务器的负荷和减少因特网上的 DNS 查询报文数量,在域名服务器中广泛地使用了高速缓存高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录
---------------The End---------------