计算机网络复习(二) 应用层

1、应用架构

(1)CS

对于 CS 架构 (Client/Server),网络中的每个节点是不对称的,具体而言可以分为两类:

  • 服务端 (Server):服务端拥有资源,为客户端提供服务,每个客户端都能与服务端联系
  • 客户端 (Client):客户端需要资源,向服务端申请服务,每个客户端之间不能相互联系

(2)P2P

对于 P2P 架构 (Peer-To-Peer),网络中的每个节点都是对称的,没有服务端和客户端之分

每个节点都拥有资源,每个节点都能提供服务,同时每个节点也都需要资源,也都需要申请服务

2、Web and HTTP

(1)通信过程

对于网页 (Web) 应用,通常使用 HTTP (Hypertext Transfer Protocol) 控制通信规则,其依赖于 TCP 提供的服务

根据标准的不同,HTTP 协议可以分为 HTTP/1.0 和 HTTP/1.1,其中 HTTP/1.1 由 HTTP/1.0 改进而来

在 HTTP/1.0 中,使用的是 非持续性连接 (Non-persistent Connection),对于 CS 架构通信过程如下:

  • 客户端请求与服务端建立 TCP 连接
  • 服务端同意后,正式建立 TCP 连接
  • 客户端发送请求,在请求信息中指定需要获取的资源
  • 服务端返回响应,在响应信息中包含资源实体,之后关闭 TCP 连接
  • 客户端收到响应,解析拿到资源实体
  • 如果发现资源实体还要引用其它资源,那么重复以上步骤

在这里插入图片描述

而在 HTTP/1.1 中,使用的是 持续性连接 (Persistent Connection),对于 CS 架构通信过程如下:

  • 客户端请求与服务端建立 TCP 连接
  • 服务端同意后,正式建立 TCP 连接
  • 客户端发送请求,在请求信息中指定需要获取的资源
  • 服务端返回响应,在响应信息中包含资源实体,但是不会关闭 TCP 连接
  • 客户端收到响应,解析拿到资源实体
  • 如果发现资源实体还要引用其它资源,那么重复步骤 3~ 5

假设我们需要传输一个 HTML 文件,在文件中引用十个 JEPG 图片,计算传输时间?

  • 若使用非持续性连接:T = (2RTT + Ttransfer) + (2RTT + Ttransfer) * 10
  • 如果使用持续性连接:T = (2RTT + Ttransfer) + (RTT + Ttransfer) * 10

(2)消息格式

HTTP 采用 请求/响应 格式,客户端提交请求 (Request),服务端返回响应 (Response)

请求消息的格式请看下面的图片,其中常见的 请求方法 如下:

  • GET:请求指定资源,返回资源实体
  • POST:向指定资源提交数据,可能导致新资源的建立或旧资源的修改
  • HEAD:类似 GET 请求,只是返回的响应没有具体的内容,常常用于获取报头
  • DELETE:删除指定的资源
  • PUT:使用提交的数据取代指定的资源
  • TRACE:返回服务端收到的请求,常常用于测试
  • OPTIONS:返回服务端针对特定资源所支持的请求方法,也能用于查看服务端的性能

在这里插入图片描述

响应消息的格式请看下面的图片,其中常见的 状态代码和状态信息 如下:

  • 1**:信息,服务端收到请求,要求客户端继续执行操作
  • 2**:成功,操作成功
  • 3**:重定向,要求客户端执行进一步的操作以完成请求
  • 4**:客户端错误,请求包含语法错误或者无法完成请求
  • 5**:服务端错误,服务端在处理请求时发生错误

在这里插入图片描述

(3)Cookies

由于 HTTP 协议是 无状态的,因此服务器想要跟踪用户状态,可以使用 Cookies 技术

Cookie 其实就是一个特殊的值,它由服务端创建和维护,并发送给客户端

之后,客户端在每次请求时带上 Cookie,服务端通过 Cookie 就能判断用户状态

在这里插入图片描述

(4)Caches

Caches 技术可以降低客户端获取响应的时间,也能减少服务端处理请求的压力,可以说是一举两得

使用 Caches 其实就是建立一个或多个 代理服务器 (proxy server),由代理服务器帮助响应客户端的请求

客户端直接发送请求到代理服务器,如果请求的资源在代理服务器上,那么直接返回给客户端

如果不在,那么代理服务器先向服务器请求资源,得到资源后保存在本地,之后再返回给客户端

在这里插入图片描述

3、File and FTP

(1)通信过程

对于文件 (File) 传输,通常使用 FTP (File Transfer Protocol) 控制通信规则,其依赖于 TCP 提供的服务

FTP 协议在通信时会建立两个连接,分别为 控制连接 (Control Connection) 和 数据连接 (Data Connection)

  • 控制连接:用于传输命令,进行授权认证
  • 数据连接:用于传输文件

对于 CS 架构通信过程如下:

  • 客户端与服务端建立控制连接
  • 客户端通过控制连接进行授权,发送命令
  • 服务端收到文件传输命令之后,建立数据连接
  • 服务端通过数据连接传输文件,当一个文件传输完成后,服务端关闭数据连接
  • 如果还有其它文件传输,需要重新建立数据连接

在这里插入图片描述

(2)消息格式

FTP 采用 命令/响应 格式,客户端发送的命令以及服务端返回的响应通过控制连接传输,它们都是 7 比特的 ASCII

客户端发送 命令 (Command) 进行授权和请求资源,常用的命令如下:

  • USER username:向服务端发送账号
  • PASS password:向服务端发送密码
  • LIST:返回当前目录的文件列表
  • RETR filename:从服务端下载文件
  • STOR filename:将文件上传到服务端

服务端接收到命令后,发送 响应 (Response) 返回结果,一个响应包括状态代码和状态信息,常见的响应如下:

  • 311:账号正确,要求输入密码
  • 125:已经建立数据连接,开始传输文件
  • 425:不能建立数据连接

4、Email and SMTP

(1)通信过程

对于邮件 (Mail) 传输,通常使用 SMTP (Simple Mail Transfer Protocol) 控制通信规则,其依赖于 TCP 提供的服务

邮件传输有两个重要的组件,分别是 用户代理 (User Agent) 和 邮件服务器 (Mail Server)

  • 用户代理:用于编辑、阅读邮件
  • 邮件服务器:用于发送、接收邮件

对于 CS 架构通信过程如下:

  • 发送方通过自己的用户代理编辑邮件
  • 发送方的用户代理发送邮件到自己的邮件服务器
  • 发送方的邮件服务器接收邮件,将邮件放在消息队列 (Message Queue),等待发送
  • 发送方的邮件服务器发送邮件到接收方的邮件服务器
  • 接收方的邮件服务器接收邮件,将邮件放在邮件箱子 (Mail Box),等待阅读
  • 接收方通过自己的用户代理阅读邮件

在这里插入图片描述

(2)消息格式

最开始的时候,邮件只能传输文本,因此只用简单的 ASCII 定义邮件格式

普通邮件格式 包括两个部分,分为头部 (Header) 和主体 (Body)

在这里插入图片描述

后来,邮件还能传输多媒体资源,又定义了新的格式 MIME (Multiperpose Internet Mail Extension)

只需要在头部添加新行,指定使用 MIME 邮件格式 即可

在这里插入图片描述

SMTP 同样采用 命令/响应格式,对于客户端发送的命令以及服务端返回的响应,它们都是 7 比特的 ASCII

客户端发送 命令 (Command) 进行授权和请求资源,常用的命令如下:

  • HELO:建立连接
  • AUTH LOGIN:身份认证
  • MAIL FROM address:指定发送邮件的邮箱
  • RCPT TO address:指定接收邮件的邮箱
  • DATA:指定邮件正文
  • QUIT:关闭连接

服务端接受到命令后,发送 响应 (Response) 返回结果,一个响应包括状态代码和状态信息,常见的响应如下:

  • 220:服务就绪
  • 250:要求的操作已完成
  • 354:开始输入邮件正文,以 . 结束
  • 221: 服务关闭

(3)其它邮件协议

上面介绍过的 SMTP 是 邮件发送协议,下面要介绍的 POP3 和 IMAP 是 邮件接收协议

  • POP3 (Post Office Protocol 3):允许用户从邮件服务器下载邮件
  • IMAP (Internet Mail Access Protocol):允许用户直接在邮件服务器上管理邮件,包括移动、分类等等

5、DNS

DNS (Domain Name System) 的作用是 将域名解析为 IP 地址

DNS 是一个 分布式、层次化的数据库,里面储存着域名与 IP 地址的映射关系,按照层级的不同可分为四层:

数据库按照层级的不同可分为四层:

  • 根域名服务器 (Root DNS Server):目前全球一共有 13 台根域名服务器
  • 顶级域名服务器 (Top-Level Domain DNS Server):提供 com、org、net、edu 等顶级域名的解析服务
  • 权威域名服务器 (Authoritative DNS Server):为特定的组织提供解析服务
  • 本地域名服务器 (Local DNS Server):严格来说不属于其中一层,每个 ISP 都有一个本地域名服务器

DNS 也是一种 应用层协议,当客户端需要获取域名解析服务时,都要请求域名服务器

(1)通信过程

如果使用 迭代查询 (Iterated Query),那么通信过程如下:

在这里插入图片描述

如果使用 递归查询 (Recursive Query),那么通信过程如下:

在这里插入图片描述

(2)消息格式

DNS 使用 请求/回复格式,它们使用相同的报文

在这里插入图片描述

【 阅读更多计算机网络系列文章,请看 计算机网络复习