计算机网络笔记——应用层

6. 应用层

6.1 网络应用模型

每个应用层协议都是为了解决某一类应用问题,而问题的解决又往往是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。应用层的具体内容就是规定应用进程在通信时所遵循的协议。这些应用进程之间相互通信和协作通常采用一定的模式,常见的有客户/服务器模型和P2P模型

客户/服务器模型(C/S模型)

在这里插入图片描述

客户(Client)和服务器(Server)都是指通信中所涉及的两个应用进程。客户/服务器模型所描述的是进程之间的服务和被服务的关系。服务可以是任意的应用,如文件传输服务、电子邮件服务等。在这个模型中,客户是服务的请求方,服务器是服务的提供方。例如,主机A 向主机B 发出服务请求,主机A是客户机,而主机B向主机A提供服务,主机B是服务器。客户程序必须知道服务器程序的地址,而服务器程序不需要知道客户程序的地址

客户/服务器模型的主要特点

  • 网络中各计算机的地位不平等,服务器可以通过对用户权限的限制来达到管理客户机的目的,使它们不能随意存储数据,更不能随意删除数据,或进行其他受限的网络活动。
  • 整个网络的管理工作由少数服务器承担,所以网络的管理非常集中和方便。这一优势在大规模网络中更加明显。
  • 可扩展性不佳。由于受服务器硬件和网络带宽的限制,服务器所能支持的客户数比较有限,当客户数增长较快时,会急剧影响网络应用系统的效率。

P2P模型

在这里插入图片描述

P2P模型指两个主机在通信时并不区分哪一个是服务请求方,哪一个是服务提供方。只要两个主机都运行了 P2P 软件,它们就可以进行平等的对等连接通信,如双方都可以下载对方已经存储在硬盘中的共享文档(而在客户/服务器模型下,只有当客户机主动发起请求时,才能从服务器获得文档,或将文档传递给服务器,而且多个客户机之间如果想要共享文件,只能通过服务器中转)。例如,大家现在常用的QQLive 和电驴等软件就是使用P2P 模型。

P2P模型本质上仍然是客户/服务器模式,只是对等连接中的每一个主机既是客户又是服务器。

P2P模型带来的好处是,任何一台主机都可以成为服务器,改变了原来需要专用服务器的模式,很显然,多个客户机之间可以直接共享文档。此外,可以借助 P2P 网络模型,解决专用服务器的性能瓶颈问题(如播放流媒体时对服务器的压力过大,而通过 P2P 模型,可以利用大量的客户机来提供服务)。

P2P模型的主要特点

  • 繁重的计算机任务可以被分配到各个节点上,利用每个节点空闲的计算能力和存储空间,聚合实现强大的服务
  • 系统可扩展性好。传统的服务器有连接带宽的限制,只能达到一定的客户端连接数。但是在 P2P模型中,能避免这个问题。
  • 网络更加健壮,不存在中心节点失效的问题。当一部分节点连接失败之后,其余的节点仍然能形成完整的网络。

6.2 DNS系统

如果现在不允许你通过 www.abc.com 来访问某主页 B,请问还有什么方式?可直接使用存放B主页的服务器的 IP 地址(XX.X.X)来访问。当然,如果现在整个网络只有几个网站,人们通过记忆其服务器的 IP 地址来访问还是可以勉强记住的,但是成千上万的网站都需要记忆其服务器的 IP 地址才能正确访问,相信没有几个用户能爱上网络,于是就出现了域名,这样,人们就可以通过便于记忆的域名来访问网站了。但是这个是表面上的,其实真正的访问还是要通过 IP 地址,那么我们自然就想到应该存在一个东西,即可以将域名转换成相对应的IP地址,于是DNS 系统就诞生了

6.2.1 DNS系统的概念

从概念上将DNS分为3个部分:

  • 层次域名空间
  • 域名服务器
  • 解析器

6.2.2 层次域名空间

因特网采用了层次树状结构的命名方法。任何一个连接在因特网上的主机或路由器都有一个唯一的层次结构的名字,即域名(Domain Name)。

域还可以被划分为子域,而子域还可被划分为子域的子域,这样就引入了顶级域名、二级域名、三级域名等。

每个域名都由标号序列组成(各标号分别代表不同级别的域名),各标号之间用点隔开,格式如下:

···. 三级域名. 二级域名. 顶级域名

级别最低的域名写在最左边,而级别最高的顶级域名写在最右边,且域名没有大小写之分

在这里插入图片描述

顶级域名主要分为以下三大类

  • 国家顶级域名(nTLD),如.cn表示中国、.us表示美国、.uk表示英国等。
  • 通用顶级域名(gTLD),最早的顶级域名如下:
    • .com(公司和企业)
    • .net(网络服务机构)
    • .org(非营利性组织)
    • .edu(美国专用教育机构)
    • .gov(美国专用的政府部门)
    • .mil(美国专用的军事部门)
    • .int(国际组织)
  • 基础结构域名(Infrastructure Domain),这种顶级域名只有一个,即arpa用于反向域名解析,因此又称为反向域名

在这里插入图片描述

6.2.3 域名服务器

因特网的域名系统(DNS)被设计成一个联机分布式的数据库系统,并采用客户/服务器模型名字到域名的解析是由若干个域名服务器来完成的,域名服务器程序在专设的节点上运行,运行该程序的机器称为域名服务器

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

在这里插入图片描述

因特网上的域名服务器系统是按照域名的层次来安排的,每个域名服务器都只对域名体系中的一部分进行管辖。因此,共有以下4 种不同类型的域名服务器:

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

在这里插入图片描述

6.2.4 域名解析过程

主机向本地域名服务器的查询都是采用递归查询

如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以DNS 客户的身份向其他域名服务器继续发出查询请求报文。

本地域名服务器向根域名服务器的查询通常采用迭代查询,当然也可以采用递归查询,这取决于最初的查询请求报文的设置要求使用哪一种查询方式

迭代查询

当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器“下一步应当向哪一个域名服务器进行查询”,然后让本地域名服务器进行后续的查询。

在这里插入图片描述

递归查询

递归查询是指本地域名服务器只需向根域名服务器查询一次,后面的几次查询都是在其他几个域名服务器之间进行的。在步骤7中,本地域名服务器从根域名服务器得到了所需的 IP 地址,最后在步骤8中,本地域名服务器把查询结果告诉主机m.xyz.com。

在这里插入图片描述

连接在因特网上的主机的域名必须是唯一的

6.3 FTP

6.3.1 FTP的工作原理

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

FTP 只提供文件传送的一些基本服务,它使用TCP 可靠地传输服务。FTP 使用客户/服务器模型一个FTP 服务器进程可同时为多个客户进程提供服务。FTP 的服务器进程由两大部分组成,一个主进程负责接收新的请求;另外有若干个从属进程,负责处理单个请求

主进程的工作步骤:

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

6.3.2 控制连接与数据连接

在进行文件传输时,FTP 的客户机和服务器之间要建立两个 TCP 连接,一个用于传输控制命令和响应,称为控制连接;另一个用于实际的文件内容传输,称为数据连接

在这里插入图片描述

FTP 服务器监听在21 号端口,等待客户机连接建立在这个端口上的连接称为控制连接客户机可以通过这个连接向服务器发送各种请求,如登录、改变当前目录、切换数据传输模式、列目录内容、上传文件等。当需要传送文件时,服务器和客户机之间要建立另外一个连接,这个称为数据连接

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

6.4 电子邮件

6.4.1 电子邮件的组成结构

电子邮件又称为 E-mail,是目前因特网上使用最频繁的一种服务。它为因特网用户提供了一种快速、便捷、廉价的通信方式。电子邮件把邮件发送到因特网服务提供商 (IntermetService Provider,ISP)的邮件服务器,并放在其中的收信人邮箱中,收信人可随时上网到ISP的邮件服务器进行读取

一个电子邮件系统有以下3 个主要构件

  • 用户代理:用户与电子邮件系统的接口,如 Outlook、Foxmail。其基本功能是撰写、显示和处理。
  • 邮件服务器:因特网上所有的 ISP 都有邮件服务器,功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)。
  • 电子邮件使用的协议,如简单邮件传送协议 (Simple Mail Transfer Protocol,SMTP)、邮局协议版本3(Post Ofice Protocol-Version3,POP3)等。

电子邮件的发送和接收过程

在这里插入图片描述

  • 发信人调用用户代理来编辑要发送的邮件。用户代理用 SMTP 把邮件传送给发送端邮件服务器。
  • 发送端邮件服务器将邮件放入邮件缓存队列中,等待发送。
  • 运行在发送端邮件服务器的 SMTP 客户进程发现在邮件缓存中有待发送的邮件,就向运行在接收端邮件服务器的SMTP 服务器进程发起TCP 连接的建立。
  • TCP 连接建立后,SMTP 客户进程开始向远程的 SMTP 服务器进程发送邮件。当所有的待发送邮件发完了,SMTP 就关闭所建立的 TCP连接。
  • 运行在接收端邮件服务器中的 SMTP 服务器进程收到邮件后,将邮件放入收信人的用户邮箱中,等待收信人在方便时进行读取。
  • 收信人在打算收信时,调用用户代理,使用 POP3(或IMAP)将自己的邮件从接收端邮件服务器的用户邮箱中取回(如果邮箱中有来信)。

6.4.2 电子邮件格式与MIME

电子邮件格式

电子邮件由信封和内容两部分组成。一般只规定了邮件内容中的首部格式,而邮件的主体部分由用户自由撰写。用户写好首部后,邮件系统自动将信封所需的信息提取出来并写在信封上。

邮件内容首部包含一些关键字,后面加上冒号,如“To:”是收信人的邮件地址,“Subject:是邮件的主题等。

MIME

由于 SMTP 只限于传送一定长度的 7 位ASCII码邮件,于是提出了通用因特网邮件扩充(Multipurpose Internet Mail Extensions,MIME)。MIME的意图是继续使用目前的[RFC 822]格式,但增加了邮件主体的结构,并定义了传送非ASCII码的编码规则

在这里插入图片描述

MIME定义的两种将非ASCII码字符转化为ASCII字码的编码方法(非重点):

  • quoted-printable 编码

    适合传送只有少量的非ASCII码,用一个“=”后面加两个数字字符来表示一个非ASCII码字符。这两个数字是该字符的十六进制值,ASCII码字符不做转换。

  • based64 编码

    对于任意的二进制文件,可用 base64 编码。这种编码方法是先把二进制代码划分为几个24位等长的单元,然后把每一个24位单元划分为4个6位组,每一个6位组按以下方法转换成ASCII码。6位的二进制代码共有64种不同的值,从0~63,用A表示0,用B表示1等。26个大写字母排列完毕后,排 26 个小写字母,再排 10个数字,最后用“+”表示62,用“/”表示63。再用两个连在一起的等号“==”和一个等号“=”分别表示最后一组的代码只有8位或16位。回车和换行都忽略,它们可在任何地方插入。

在这里插入图片描述

6.4.3 SMTP 与 POP3

SMTP

SMTP 所规定的就是在两个相互通信的 SMTP 进程之间应如何交换信息SMTP运行在TCP基础之上,使用25 号端口,也使用客户/服务器模型

SMTP规定了 14条命令和21 种应答信息(不用记忆)。

SMTP 通信的3个阶段

  • 连接建立。连接是在发送主机的 SMTP 客户和接收主机的SMTP 服务器之间建立的SMTP,不使用中间的邮件服务器
  • 邮件传送。
  • 连接释放。邮件发送完毕后,SMTP 应释放TCP 连接。

POP3

POP 是一个非常简单,但功能有限的邮件读取协议。现在使用的是它的第三个版本 POP3,POP 也使用客户/服务器的工作方式。在接收邮件的用户计算机中必须运行 POP 客户程序,而在用户所连接的ISP的邮件服务器中运行POP服务器程序。

POP3 的一个特点是只要用户从 POP 服务器读取了邮件,POP 服务器就将该邮件删除

总结

  • 不要将邮件读取协议POP与邮件传送协议SMTP弄混

    发信人的用户代理向源邮件服务器发送邮件以及源邮件服务器向目的邮件服务器发送邮件,都是使用SMTP。而POP 是用户从目的邮件服务器上读取邮件所使用的协议。

  • 邮件发送过程总结

    • 客户端建立TCP 连接至服务器。
    • 服务器发送身份信息,确认连接已建立
    • 客户端发送身份信息,服务器确认收到。
    • 客户端发送邮件接收者地址,服务器确认收到。
    • 客户端发送邮件发送者地址,服务器确认收到
    • 客户端请求发送邮件内容,服务器确认准备好。
    • 客户端发送邮件内容,最后以一个仅包含一个点 (.)字符的行结束,服务器发回数据已收到的确认。

    从上面这个过程可以看出,任何客户端都可以通过 SMTP 向邮件服务器发送邮件,而且邮件发送者的地址是完全可以伪造的,服务器也只能被动接收,这也是垃圾邮件泛滥的原因

  • 邮件接收过程总结

    • 客户端建立TCP连接至服务器。
    • 服务器发送身份信息,确认连接已建立。
    • 客户端发送USER 命令+用户名,服务器确认收到。
    • 客户端发送PASS命令+用户密码,服务器确认收到
    • 客户端发送LIST 命令,服务器返回当前邮件箱的邮件个数列表
    • 客户端发送RETR命令+邮件编号,服务器发回相应的邮件内容
    • 客户端在接收完邮件后,可以选择是否发送 DELE 命令+邮件编号,通知服务器从邮箱中删除相应的邮件。

    从上面这个过程可以看出,POP3 是由客户端决定是否将已收取的邮件保留在服务器的。此外,POP3 采用明文传送用户的邮箱密码,这给邮件安全带来了隐患

6.5 WWW

6.5.1 WWW的概念和组成结构

WWW的概念

WWW(Worid Wide Web,万维网)简称为3W,它并非某种特殊的计算机网络。万维网是一个大规模的、联机式的信息储藏所。它的特点在于用链接的方法能非常方便地从因特网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。WWW还提供各类搜索引擎,使用户能够方便地查找信息。

在这里插入图片描述

WWW的组成结构

WWW 把各种信息按照页面的形式组合,一个页面包含的信息可以有文本、图形、图像、声音、动画、链接等各种格式,这样一个页面也称为超媒体 (如果页面中只有文字和链接则称为超文本,注意区分),而页面的链接均称为超链接。

WWW使用统一资源定位符(URL)来标志 WWW 上的各种文档。URL的一般格式为
<协议>: //<主机>:<端口号>/<路径>

常见的协议有HTTP、FTP等。主机部分是存储文档的计算机,可以是域名也可以是IP 地址,端口号是服务器监听的端口(根据协议可以知道端口号,一般省略),路径一般也可省略,并且在 URL中的字符对大写或小写没有要求

万维网以客户/服务器方式工作。浏览器是在用户计算机上的万维网客户程序,而万维网文档所驻留的计算机则运行服务器程序,这个计算机称为万维网服务器。客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的文档

工作流程:

  • Web 用户使用浏览器(指定URL)与Web 服器建立连接,并发送浏览请求。
  • Web服务器把URL转换为文件路径,并返回信息给 Web 浏览器。
  • 通信完成,关闭连接。

6.5.2 HTTP

HTTP的操作过程

超文本传送协议 (HTTP)是在客户程序(如浏览器)与WWW 服务器程序之间进行交互所使用的协议。HTTP 是面向事务的应用层协议,它使用 TCP 连接进行可靠传输,服务器默认监听在80端口

从协议执行的过程来说,当浏览器要访问 WWW 服务器时,首先要完成对 WWW 服务器的域名解析。一旦获得了服务器的 IP 地址,浏览器将通过 TCP 向服务器发送连接建立请求。每个服务器上都有一个服务进程,它不断地监听 TCP的端口 80,当监听到连接请求后便与浏览器建立连接。TCP连接建立后,浏览器就向服务器发送要求获取某一 Web 页面的HTTP请求。服务器收到HTTP 请求后,将构建所请求的 Web 页的必需信息,并通过 HTTP 响应返回给浏览器。浏览器再将信息进行解释,然后将Web 页显示给用户。最后,TCP 连接释放。

在这里插入图片描述

HTTP的报文结构(了解)

  • 请求报文——从客户向服务器发送请求报文。
  • 响应报文——从服务器到客户的回答。

在这里插入图片描述

在这里插入图片描述

两种报文格式的区别就是开始行不同

  • 开始行:用于区分是请求报文还是响应报文。在请求报文中的开始行称为请求行,而在响应报文中的开始行称为状态行。开始行的3个字段之间都以空格隔开。
  • 首部行:用来说明浏览器、服务器或报文主体的一些信息。
  • 实体主体:在请求报文中一般都不用这个字段,而在有些响应报文中也可能没有这个字段。

HTTP的工作方式既可以使用非持久连接,也可以使用持久连接

猜你喜欢

转载自blog.csdn.net/pipihan21/article/details/129572622