应用层协议的特点

每个应用层协议都是为了解决某一类应用问题, 而问题的解决又往往是通过位于不同主机中的 多个应用进程之间的通信和协同工作来完成的。 应用层的具体内容就是规定应用进程在通信时 所遵循的协议。

应用层的许多协议都是基于客户服务器方式。 客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。客户服务器方式所描述的 是进程之间服务和被服务的关系。客户是服务 请求方,服务器是服务提供方。

域名系统 DNS

域名系统概述

  • 许多应用层软件经常直接使用域名系统 DNS (Domain Name System),但计算机的用户只 是间接而不是直接使用域名系统。
  • 因特网采用层次结构的命名树作为主机的名字, 并使用分布式的域名系统 DNS。
  • 名字到 IP 地址的解析是由若干个域名服务器程 序完成的。域名服务器程序在专设的结点上运 行,运行该程序的机器称为域名服务器。

因特网的域名结构

  • 因特网采用了层次树状结构的命名方法。

  • 任何一个连接在因特网上的主机或路由器,都 有一个唯一的层次结构的名字,即域名。

  • 域名的结构由标号序列组成,各标号之间用点隔开: \(... **.**三级域名**.**二级域名**.**顶级域名\)

  • 各标号分别代表不同级别的域名。

image-20200926213445235

域名服务器

  • 一个服务器所负责管辖的(或有权限的)范围叫做区(zone)。
  • 各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。
  • 每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。
  • DNS 服务器的管辖范围不是以“域”为单位, 而是以“区”为单位。

image-20200926213635882

域名服务器类型

  • 根域名服务器
    • 根域名服务器是最重要的域名服务器。所有的 根域名服务器都知道所有的顶级域名服务器的 域名和 IP 地址。
    • 不管是哪一个本地域名服务器,若要对因特网 上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器。
    • 在因特网上共有13 个不同 IP 地址的根域名服 务器,它们的名字是用一个英文字母命名,从a 一直到 m(前13 个字母)。
  • 顶级域名服务器
    • 这些域名服务器负责管理在该顶级域名 服务器注册的所有二级域名。
    • 当收到 DNS 查询请求时,就给出相应的 回答(可能是最后的结果,也可能是下一步应当找的域名服务器的 IP 地址)。
  • 权限域名服务器
    • 这就是前面已经讲过的负责一个区的域名服务器。
    • 当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求 的 DNS 客户,下一步应当找哪一个权限域名服务器。
  • 本地域名服务器
    • 本地域名服务器对域名系统非常重要。
    • 当一个主机发出 DNS 查询请求时,这个 查询请求报文就发送给本地域名服务器。
    • 每一个因特网服务提供者 ISP,或一个 大学,甚至一个大学里的系,都可以拥有一个本地域名服务器,
    • 这种域名服务器有时也称为默认域名服务器

提高域名服务器的可靠性

  • DNS 域名服务器都把数据复制到几个域名服 务器来保存,其中的一个是主域名服务器,其他的是辅助域名服务器。
  • 当主域名服务器出故障时,辅助域名服务器可 以保证 DNS 的查询工作不会中断。
  • 主域名服务器定期把数据复制到辅助域名服务 器中,而更改数据只能在主域名服务器中进行。 这样就保证了数据的一致性。

文件传送协议

概述

  • 文件传送协议 FTP (File Transfer Protocol) 是 因特网上使用得最广泛的文件传送协议。
  • FTP 提供交互式的访问,允许客户指明文件的 类型与格式,并允许文件具有存取权限。
  • FTP 屏蔽了各计算机系统的细节,因而适合于 在异构网络中任意计算机之间传送文件。
  • RFC 959 很早就成为了因特网的正式标准。

FTP 特点

  • 文件传送协议 FTP 只提供文件传送的一些基本的服务,它使用 TCP 可靠的运输服务。
  • FTP 的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。
  • FTP 使用客户服务器方式。一个 FTP 服务器进程可同时为多个客户进程提供服务。FTP 的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。

主进程的工作步骤

  1. 打开熟知端口(端口号为 21),使客户进程 能够连接上。
  2. 等待客户进程发出连接请求。
  3. 启动从属进程来处理客户进程发来的请求。从 属进程对客户进程的请求处理完毕后即终止, 但从属进程在运行期间根据需要还可能创建其 他一些子进程。
  4. 回到等待状态,继续接受其他客户进程发来的 请求。主进程与从属进程的处理是并发地进行。

两个连接

  • 控制连接在整个会话期间一直保持打开,FTP 客户发出的传送请求通过控制连接发送给服务器端 的控制进程,但控制连接不用来传送文件。
  • 实际用于传输文件的是“数据连接”。服务器端的控制进程在接收到 FTP 客户发送来的文件传输请求后就创建“数据传送进程”和“数据连 接”,用来连接客户端和服务器端的数据传送进 程。
  • 数据传送进程实际完成文件的传送,在传送完毕 后关闭“数据传送连接”并结束运行。

image-20200926221935794

两个不同的端口号

  • 当客户进程向服务器进程发出建立连接请求时,要寻找连接服务器进程的熟知端口(21),同时还要告诉服务器进程自己的另一个端口号码,用于建立 数据传送连接。
  • 接着,服务器进程用自己传送数据的熟知端口(20)*** 与客户进程所提供的端口号码建立数据传送连接。
  • 由于FTP使用了两个不同的端口号,所以数据连接 与控制连接不会发生混乱。

好处:

  • 使协议更加简单和更容易实现。
  • 在传输文件时还可以利用控制连接(例如, 客户发送请求终止传输)。

万维网 WWW 🤔

万维网概述

  • 万维网 WWW (World Wide Web)并非某种特 殊的计算机网络。
  • 万维网是一个大规模的、联机式的信息储藏所。
  • 万维网用链接的方法能非常方便地从因特网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。
  • 这种访问方式称为“链接”。

万维网的工作过程

image-20200926223010027

超文本传送协议 HTTP

HTTP的操作过程

  1. 为了使超文本的链接能够高效率地完成, 需要用 HTTP 协议来传送一切必须的信息。
  2. 从层次的角度看,HTTP 是面向事务的 (transaction-oriented)应用层协议,它是万 维网上能够可靠地交换文件(包括文本、 声音、图像等各种多媒体文件)的重要基础。

HTTP 的主要特点

  • HTTP 是面向事务的客户服务器协议。
  • HTTP 1.0 协议是无状态的(stateless)。
  • HTTP 协议本身也是无连接的,虽然它 使用了面向连接的 TCP 向上提供的服务。

代理服务器

  • 代理服务器(proxy server)又称为万维网高速缓 存(Web cache),它代表浏览器发出 HTTP 请 求。
  • 万维网高速缓存把最近的一些请求和响应暂存在本地磁盘中。
  • 当与暂时存放的请求相同的新请求到达时,万维网高速缓存就把暂存的响应发送出去,而不 需要按 URL 的地址再去因特网访问该资源。

HTTP的报文结构

HTTP 有两类报文:

  • 请求报文——从客户向服务器发送请求报文。
  • 响应报文——从服务器到客户的回答。
  • 由于 HTTP 是面向正文的(text-oriented),因 此在报文中的每一个字段都是一些 ASCII 码串, 因而每个字段的长度都是不确定的。

HTTP 的报文结构(请求报文):

报文由三个部分组成,即开始行、首部行和实体主体。 在请求报文中,开始行就是请求行。

“方法”是面向对象技术中使用的专门名词。所谓“方法”就是对所请求的对象进行的操作,因此这些方法 实际上也就是一些命令。因此,请求报文的类型是由 它所采用的方法决定的。

image-20200926223303427

HTTP 请求报文的一些方法:

image-20200926223345555

HTTP 的报文结构(响应报文):

响应报文的开始行是状态行。 状态行包括三项内容,即 HTTP 的版本,状态码, 以及解释状态码的简单短语。

状态码都是三位数字:

  • 1xx 表示通知信息的,如请求收到了或正在进 行处理。
  • 2xx 表示成功,如接受或知道了。
  • 3xx 表示重定向,表示要完成请求还必须采取进一步的行动。
  • 4xx 表示客户的差错,如请求中有错误的语法或不能完成。
  • 5xx 表示服务器的差错,如服务器失效无法完 成请求。

image-20200926223638739

动态主机配置协议DHCP

动态主机配置协议 DHCP 提供了即插即用连网(plug-and-play networking)的机制。

这种机制允许一台计算机加入新的网络 和获取IP地址而不用手工参与。

DHCP 使用客户服务器方式

  • 需要 IP 地址的主机在启动时就向 DHCP 服务 器广播发送发现报文(DHCPDISCOVER), 这时该主机就成为 DHCP 客户。
  • 本地网络上所有主机都能收到此广播报文,但 只有 DHCP 服务器才回答此广播报文。
  • DHCP 服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找 不到,则从服务器的 IP 地址池(address pool) 中取一个地址分配给该计算机。DHCP 服务器 的回答报文叫做提供报文(DHCPOFFER)。

DHCP 中继代理(relay agent)

  • 并不是每个网络上都有 DHCP 服务器,这样 会使 DHCP 服务器的数量太多。现在是每一 个网络至少有一个 DHCP 中继代理,它配置 了 DHCP 服务器的 IP 地址信息。

  • 当 DHCP 中继代理收到主机发送的发现报文 后,就以单播方式向 DHCP 服务器转发此报 文,并等待其回答。收到 DHCP 服务器回答 的提供报文后,DHCP 中继代理再将此提供报 文发回给主机。

  • DHCP 中继代理 以单播方式转发发现报文

    image-20200926220501856

租用期(lease period)

  • DHCP 服务器分配给 DHCP 客户的 IP 地址的临时的,因此 DHCP 客户只能在一段有限的 时间内使用这个分配到的 IP 地址。DHCP 协议称这段时间为租用期。
  • 租用期的数值应由 DHCP 服务器自己决定。
  • DHCP 客户也可在自己发送的报文中(例如, 发现报文)提出对租用期的要求。

应用进程跨越网络的通信

系统调用和应用编程接口

  • 大多数操作系统使用系统调用(system call)的机制在应用程序和操作系统之间 传递控制权。
  • 对程序员来说,每一个系统调用和一般 程序设计中的函数调用非常相似,只是 系统调用是将控制权传递给了操作系统。

多个应用进程使用系统调用的机制

image-20200926223858383

应用编程接口 API

  • 当某个应用进程启动系统调用时,控制权就从 应用进程传递给了系统调用接口
  • 此接口再将控制权传递给计算机的操作系统。 操作系统将此调用转给某个内部过程,并执行 所请求的操作。
  • 内部过程一旦执行完毕,控制权就又通过系统 调用接口返回给应用进程。
  • 系统调用接口实际上就是应用进程的控制权和操作系统的控制权进行转换的一个接口,即应 用编程接口 API。

应用进程通过套接字接入到网络

image-20200926223952478