spice and wolfspice and wolf Be the One you wanna Be

应用层

  • 应用层组成
  • 网络应用程序体系结构
  • 网络应用与对应的应用层协议

应用层的组成

应用层由网络应用和应用层协议组成。

网络应用是计算机网络存在的理由,它提供了各种各样的服务,满足了不同的需求,如web应用能让人们获取到想了解的信息,网络邮箱能收发电子邮件,DNS服务能查询域名对应的IP地址等等。

应用层协议实现了网络应用之间的通讯,应用之间的通讯则是通过收发报文的方式实现的,不同的网络应用之间有不同的需求,所以报文格式和报文响应模式也不尽相同,就有了不同的网络层协议。

网络应用程序体系结构

现代网络应用程序中存在着两种主流的体系结构:

  • 客户-服务器。存在两类主机对象,一类为客户端,是资源的索取者,一类是服务器端,是资源的提供者。一般客户会主动”拉取”服务器资源,后者为被动方;在应用程序中,客户之间的通讯是通过服务器端完成的。
  • P2P。在P2P中主机既可以拉取数据,又可以数据,主机间可以直接通信,因为这种通信不必通过专用服务器,这些主机对又被称为对等方,该体系结构被称为对等方到对等方。

网络应用与对应的应用层协议

要了解应用层协议,我们需要了解的以下定义:

  • 报文类型,例如请求报文或响应报文。
  • 报文内容,该报文中包含了哪些字段。
  • 字段含义,作用。
  • 报文交互规则。

Web和HTTP协议

Web使用了客户-服务器体系结构,Web浏览器作为客户端,Web服务器则作为服务端。

HTTP交互方式

当用户需要访问特定网站获取信息时,他需要在浏览器键入网址,来获取网站界面,这时客户机和服务器经历了以下流程:

  1. 建立TCP连接
  2. 发起资源请求
  3. 服务器响应资源请求
  4. 客户机收到响应,将响应结果呈现给客户
HTTP请求响应

上面过程基本上涵盖了Web应用中的报文交互方式,即需要建立连接才能请求资源(根本原因是传输层使用了TCP协议),而建立连接后,客户和服务器只用基于资源进行请求和应答即可,直至连接断开。

HTTP报文格式

HTTP请求报文格式

HTTP请求报文和响应报文的格式类似,但是内容不尽相同。

Http请求报文由三部分组成:请求行,首部行和实体体。

注:sp表示空格符,cr表示回车符,lf表示换行符。

HTTP请求报文的通用格式
开发者模式中可观测的Request请求头
HTTP响应报文格式

HTTP响应报文由三部分组成:状态行、首部行和实体体。

HTTP响应报文格式
开发者模式中可观测的Response响应头

DNS:因特网目录服务

因为IP地址不方便记忆,所以域名网址更受一般人青睐,而DNS就提供了域名到IP的地址转换服务。

DNS有两层含义:

  • 一个由分层的DNS服务器实现的分布式数据库
  • 一个使得主机能够查询分布式数据库的应用层协议

分布式、层次数据库

按层次划分,有三类DNS服务器,分别是:

部分DNS服务器的层次结构
  1. 根DNS服务器。根服务器提供顶级域DNS服务器的IP地址。
  2. 顶级域DNS服务器。顶级域DNS服务器提供权威DNS服务器的IP地址
  3. 权威DNS服务器。权威DNS服务器提供DNS记录,DNS记录存储了域名和IP的映射

除了上面三类服务器外,还有另一类DNS服务器,称为本地DNS服务器,严格来说,一个本地DNS服务器并不属于该服务器的层次结构,但它对DNS层次结构是至关重要的。每一个ISP都有一个本地DNS服务器,主机可以通过DHCP获取到本地DNS服务器的IP地址,之后主机会向本地DNS服务器发送DNS请求,本地DNS服务器会作为主机的代理,来访问具有层次结构的DNS服务器,获取域名对应的IP地址,并返回给主机,详细交互方式见下节。

DNS交互方式

DNS请求交互

当主机想要访问www.miaosha.jd.com域名时,需要知道域名对应的IP地址,此时会向本地DNS服务器发送DNS请求;本地DNS服务器收到DNS请求后,会代理主机进行DNS的查询工作,首先它会查询缓存中是否有对应的域名映射,如果有则返回对应IP,如果没有则向根DNS服务器发送请求,根DNS服务器会返回com顶级域DNS服务器的IP地址列表,本地服务器会选择其中一个发送请求,顶级域DNS服务器会返回jd.com权威DNS服务器的IP地址列表,本地服务器会选择其中一个发送请求,权威DNS服务器会返回miaosha.jd.com域名对应的IP地址,并将其缓存;本地DNS服务器用miaosha.jd.com域名对应的IP地址响应请求主机。

DNS报文格式

资源记录

DNS报文应答内容围绕资源记录展开,资源记录提供了主机到IP地址的映射;每个DNS回答报文包含了一条或多条资源记录。

资源记录是一个包含了下列字段的4元组,通过字段语义基本能猜个大概,就不具体细说了。

(Name, Value, Type, TTL)

报文格式

DNS只有查询报文和回答报文,且具有相同的报文格式,如下图所示。

DNS报文格式

P2P文件分发

这节我们将主要了解P2P体系的存在理由,而不具体讲解协议和应用。

当服务器要把文件发送给对应用户时,我们将客户-服务器体系和P2P体系进行对比。

给单主机发送文件

假如服务器只需要给一个主机发送文件,则客户-服务器体系和P2P体系没有太大区别。

但是如果有大量主机,效率就很低了。假设这时有N台主机,文件大小为M,都向服务器发送了请求。如果采用客户-服务器模式,服务器需要向N台主机发送同一份文件,且在发送完N份文件之前,此项任务将始终占用服务器的上载主链路的带宽,总共吃掉N*M大小的流量;如果采用P2P体系,则服务器只用将完整的文件分块发送给不同的主机,作为对等方的主机之间会互相请求、推送补全完整的文件信息,理想状态下服务器占用主链路的流量只有M,这很好的减小了服务器的负载。另一方面,主机可以从数个较近的对等方获取文件碎片,而不需要在服务器繁忙时挤占服务器和主机间的链路带宽,从而也太高了主机的下载速率。

给大量主机发送文件

综上,P2P对于大文件下载来说的确是个很好的体系结构。在此我们提及流行的P2P协议–BitTorrent,因为你可能会在下载文件时看到它,这有助于你回忆起这一章的内容。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Press ESC to close