应用层(王道视频笔记)

第6章 应用层



前言

在这里插入图片描述


6.1.1 网络应用模型

应用层概述

作为网络体系结构模型当中的最上层 也就是最顶层应用层,为什么还会有这样一个层次 ?

在上一章我们学习的这个传输层,我们知道这个传输层 它可以为应用进程提供一种端到端之间的通信服务,但是不同的网络应用的应用进程之间 还需要有不同的一些通信规则,因此 我们就会在传输层协议之上 再建立了这样一个应用层的层次,而且规定了一些协议 所以说我们这个应用层 它是对于应用程序的通信来提供服务的

在这里插入图片描述

网络应用模型

在这里插入图片描述

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

在这里插入图片描述

  • 客户机,它并不像服务器一样一直保持一个清醒的状态 始终等待着客户机的请求 这个客户机 它是可以随时进入网络 也可以随时退出网络的
  • 第三点 就是客户机 它可能使用的是一个动态IP地址 也就说这个客户的IP地址是不限制的,因为这个服务器不会平白无故的就会给客户机发送一个消息,它没有那么闲 它一直在等待着客户机的请求 只有这个客户机发送请求之后,才会根据请求的IP地址来找到这个客户机 所以这个客户的IP地址是不限制的 它可以使用动态IP地址,但是服务器IP地址和域名是要永久性保持不变的
  • 使用客户/服务器模型的时候 客户机是不与其它客户机直接通信的,它是与服务器进行一个通信的
P2P模型

在这里插入图片描述

  • 第四个就是节点 它是可以间歇性的进入网络的,因为每一台它都是一个主机 那这个主机,它可以随时进入网络 也可以随时退出
  • 可扩展性比较好 什么叫做可扩展性呢?它指的就是 当这个网络当中会有大量的主机涌入 大量的主机进入这个网络的时候,我们这些主机之间 是否还能够非常顺利的请求服务以及提供服务,那这种P2P模型就是可以应对大量主机涌入这个网络 比如说我们现在只有五台主机 那突然又加进来了十台主机,因为每一台主机既可以提供服务 也可以请求服务 所以说我们主机增多了 请求的多了 当然提供服务的也多了,因此 我们也不需要担心这个资源不够用 或者是带宽受限的问题,而刚刚所讲的客户服务器这种模型当中的,它会有响应和带宽的限制 因此是只能接受一定数量的客户请求的
  • 什么叫做网络健壮性 健壮就是说这个网络不容易瘫掉 不容易全部坏掉 也就是说一台主机,退出了 或者是一个节点坏掉了 对于整个网络其实是没有什么影响的 因为每一台主机 它们都是一个对等的关系 而不像刚才的客户/服务器这种模型,如果服务器它坏掉了 所有的主机都没有办法访问这个网站

6.2.1 域名系统(DNS)

网民在访问网站的过程当中 其实就是主机和另一台主机 进行一个远程之间的通信以及资源的交换过程,那我们的主机是怎么找到对方的这个网站的主机?

是通过IP地址 就是我们网络层所学到的这样一个内容 通过IP地址这样一个全球唯一的标志符 我们就可以找到对应的那个网站,并且和这个网站进行一个信息的交换

可是我们先想一下 如果你要访问王道论坛这样一个网站 那你知道王道服务器的IP地址吗?

当然是不可能的,因为这个IP地址 它太长了,它是一个点分十进制的 很多个数字的组合 那如果我们都这样去记忆的话 我们要记多少个IP地址,所以说人们通过记忆IP地址,并且根据IP地址去寻址 找这个网站是很困难的 是做不到的,因此 就会有一个东西来替代IP地址 也就是这节课要学习的这样一个域名

DNS系统

在这里插入图片描述

  • 其实这个域名我们就可以想象成是以上这些网站 他们自己的一个名字 那通过我们记住这个名字 我们就可以找到这个网站
  • 那我们刚才说了 两个节点之间进行信息交换 归根结底还是要知道彼此之间的IP地址 那我们不去记忆这个IP地址,由谁来实现这样一个域名到IP地址的转换呢?那这就是我们这节课要讲的内容,也就是DNS系统

在这里插入图片描述

域名

在这里插入图片描述
在这里插入图片描述

域名服务器

在这里插入图片描述
在这里插入图片描述

  • 当一个主机他要访问一个网站的时候 就要先发送一个DNS查询请求,那首先发给的就是这个本地域名服务器,那如果这个本地域名服务器的缓存当中不清楚这个主机所发出的DNS请求当中IP地址和域名的一个解析,他就要向别人求助 向谁求助 首先就要向这个根域名服务器来求助,也就是这些域名服务器当中的老大 这个本地域名就会问老大,所以说 根域名服务器是最高层次的域名服务器 也是最重要的一种域名服务器
  • 那这个根域名服务器 他知道什么 他知道所有顶级域名服务器的域名和IP地址,也就是知道每一个顶级域名服务器以及它所对应的IP地址是什么
  • 在很多情况下 这个根域名服务器并不是直接把要查询的域名转换成IP地址,因为它并不知道这个具体的信息 它只知道一个顶级域名所对应的IP地址是多少 也就说 它只知道接下来应该寻找哪一个顶级域名服务器

域名解析过程

在这里插入图片描述

  • 那递归查询和迭代查询 他们最开始 都是要由主机来查询本地域名服务器 那这样一个过程 都是使用的递归查询
  • 比如说我在访问一个网站的时候 首先要进行这个DNS的查询请求 首先就要查询的是这个本地域名服务器 那如果本地域名服务器解析不到这个域名 ,它接下来要寻求别人的帮助 那寻求谁的帮助 寻求的就是根域名服务器的帮助 那如果这个根域名服务器还是无法解析完整,这样一个域名的话 也就是说 它只能解析这个顶级域名,那接下来 根域名服务器要请求顶级域名服务器的一个帮助 那如果顶级域名服务器还不能,解析完整这个域名的话 就要继续请求权限域名服务器的帮助 那就是这样一个接着一个寻求另一个人的帮助 那这样一个过程就是递归查询那一过程
  • 那返回呢 也就是按照刚才的一个顺序 从权限域名服务器返回给顶级域名服务器 再返回给根域名服务器 最后再返回给本地域名服务器,然后就返回给主机查询到的IP地址
  • 那第二种查询方式叫做迭代查询 那这种查询和递归查询的区别就是在于,它是一种靠自己的方式 什么叫靠自己呢 这里面的自己还是别人说的 就是本地域名服务器,迭代查询的方式就是 如果本地域名服务器当中并没有这个域名他所对应的IP地址 它首先就要查询根域名服务器 那如果根域名服务器没有,就不是由根域名来去查询了 而是由本地域名服务器再去查询顶级域名服务器,那它是怎么知道要找哪个顶级域名服务器呢 这个是由根域名告诉它的,根域名说 你去找哪个顶级域名服务器 那本地域名服务器就会去找相应的顶级域名服务器 那如果那个顶级域名服务器它也不知道这个域名所对应的IP地址 那它就会告诉本地域名服务器让他再去找哪一个具体的权限域名服务器 那这个时候本地域名服务器 再去找权限域名服务器 这样就能解析出来域名所对应的IP地址了

在这里插入图片描述

  • 那主机和本地域名服务器之间的都是递归查询的方式 只不过根据其他服务器之间查询方式的不同 我们分成了递归以及迭代
  • 那递归查询 我们刚才说了 它是一个靠别人的一个方式 那靠别人 就是主机 先查询本地域名服务器 如果本地域名服务器当中查不到 那这个本地域名服务器 就作为一个客户的一个角色再向根域名服务器进行查询,那如果这个根域名服务器查询不到 那根域名服务器就变成了一个客户的角色,再去往下查询 查询顶级域名服务器 以此类推 一直查询到权限域名服务器,那最终这个权限域名服务器 它就能找到一个域名所对应的IP地址,并将这个IP地址返回给最终的主机
  • 迭代查询,一直都是由这个本地域名服务器在进行一个DNS的查询请求
  • 高速缓存 它可以用来存放最近查过的域名 以及从哪里获得这个域名映射信息的记录,比如说 在这样一个迭代的查询过程当中 如果我刚刚就登录了这样一个网址,y.abc.com 也就是说 我实现了这个网址的域名解析,那这个域名以及IP地址的映射关系 就存储在了本地域名服务器当中 那如果我现在又再次去访问这个网站 是需要先搜索本地域名服务器当中的高速缓存是不是有这样一个项,如果有这样一个项 就可以把对应的IP地址直接返回给主机 ,而不需要接下来经过根域名服务器 顶级 权限域名服务器等等,进行一个请求的查找
  • 那如果这个本地域名服务器当中并没有他所对应的IP地址,但是 它是有顶级域名服务器 这个dns.com的 它的IP地址 那也就不需要再经过根域名服务器了,就可以直接去往这个顶级域名服务器 从它这再来获得下一步的信息 你该往哪里走 也就是找到下一步的权限域名服务器的IP地址
  • 通过使用高速缓存可以大大的减轻域名服务器的负荷 同时也可以使得我们这个DNS查询请求和回答报文的数量大大减少 还可以加快这个DNS请求的速度,当然 这高速缓存它不能一直保持不变 还是要动态更新的,为了保证这个高速缓存当中所存的内容基本都是正确的 所以它要定期的更新,也就是为每一项内容 都会设置一个计时器 并且处理超过合理时间的项 比如说每一个表项 每一个项目只放两天
  • 当然不仅在这个本地域名服务器当中有这个高速缓存,在主机当中 也很需要这种高速缓存 许多主机会在开机的时候,就会从本地域名服务器当中下载这个域名和地址的这样一个对应数据库 ,并且放到自己的这个本机的高速缓存当中,也就是如果要访问一个网站 首先最应该先看的是主机的高速缓存,如果没有 再去查看本地域名服务器的高速缓存 如果还是没有 就要接下来查询根域名服务器 顶级域名服务器 权限域名服务器等等

6.3.1 文件传输协议(FTP)

文件传输协议

在这里插入图片描述

FTP服务器和用户端

在这里插入图片描述

FTP工作原理

在这里插入图片描述

  • FTP服务器 可有一个或者是多个 而这个客户端也可以是有一个或多个
  • 一个FTP服务器 或者说一个FTP服务器的进程 可以同时为多个客户进程来提供服务
  • 主进程 它可以负责接收新的请求,它的工作步骤 主要是首先要先打开服务器的一个熟知端口,也就是这个FTP服务器,它实现文件传输的一个熟知端口 端口号是21,那这个端口打开之后 就可以使客户进程成功的连接上,那接下来 它只需要等待客户进程发出一个连接的请求 然后再进行数据的连接和传送
  • 那接下来它就可以启动从属进程 也就是这n个从属进程,而这每一个从属进程的都可以处理单个的客户请求

在这里插入图片描述

在这里插入图片描述

  • 图中的这两个圆柱 就表示系统中正在运行的进程 那图中这样一个服务器它是会有两个从属进程的 分别是控制进程 以及数据传送的进程
  • 那要注意的是 这个控制进程和数据传送进程都属于从属进程 而并不是主进程 这里面只是没有画出来而已
  • 用户界面 就可以用来和用户接口 也就是用户在文件传送过程当中所使用的一个操作界面
  • 客户端和服务器端的控制进程 它们就建立了一个控制连接,而这个客户端和服务器端的数据传送进程 就建立了一个TCP的数据连接
  • 那这个控制连接 在整个会话 就是在整个文件传送过程当中是会一直保持打开的,那FTP客户 它发出的传送请求 都要通过这个控制连接来发送给服务器端的控制进程,所以这个控制连接 相当于正式传送文件之前的一个准备步骤
  • 而这个数据连接才是实际当中用于传送文件的连接,而且 服务器端的控制进程 会在接收到FTP客户端它发来的文件传输请求之后 就创建这样一个数据传送进程,并且创建这个数据连接
  • 因此我们总结一下 这个控制连接它传的是请求 数据连接传的就是文件 那要注意的一点是 这个控制连接是在全程都打开的,那在文件传送完毕之后 就会关闭这个数据连接并且结束运行,那要注意的是这个控制连接 它是一直打开的 始终保持的

6.4.1 电子邮件

电子邮件系统概述

在这里插入图片描述

电子邮件系统概述–电子邮件的信息格式

在这里插入图片描述

电子邮件系统概述–组成结构

在这里插入图片描述

  • 用户代理 就是用户和电子邮件系统的一个接口 那通常情况下 它就是运行在你电脑当中的一个程序
  • 那用户代理 就可以为我们的用户 也就是为客户提供一个比较友好的接口 目前就是给你一个窗口的界面,通过这个界面你就可以写邮件并且发邮件和接收邮件
  • 邮件服务器 作为服务器来讲 他一定要长时间的工作 他就会保持24小时的不间断工作,并且 它会有大容量的一个邮件信箱来容纳大量的信件
  • 用户代理的发送邮件是指把这个邮件从客户端 也就是从我自己的这个电脑上发给邮件服务器,而这个邮件服务器的发送邮件是指 我把这个邮件从邮件服务器发送到接收方的邮件服务器,那这个接收邮件指的就是 接收方的邮件服务器来接收这个发送方邮件服务器传过来的邮件
  • 那邮件服务器 它采用的是一个客户和服务器的方式,而且每一个邮件服务器 它可以同时充当服务器或者是客户 比如说,当这个邮件服务器向另一个邮件服务器发送邮件 也就是这一个过程的时候,那这个发送方的邮件服务器就作为客户 那这个接收方的邮件服务器 就作为服务器端

在这里插入图片描述

  • 发送方通过用户代理把写好的邮件,发送给这个发送端的邮件服务器,那就会把这个邮件的放到这个服务器当中的邮件缓存里,那如果现在可以发送出去 就会从邮件缓存当中取出信件,并且发送给接收端的邮件服务器,那这样过程的都是在发送邮件 所以使用的都是SMTP协议
  • 那接下来 这个邮件到了接收端的邮件服务器当中 就放入这个服务器的缓存里面
  • 那如果这个接收方他现在有时间来阅读邮件 他就会通过用户代理,并且使用这个POP3协议从接收端的邮件服务器当中读取邮件 那这三段 都使用的是TCP的连接,为了保证这个邮件传输是可靠的 所以我们才会使用TCP连接

简单邮件传送协议SMTP

在这里插入图片描述
在这里插入图片描述

  1. 连接建立:
  • 发送方先写邮件 如果这个邮件写好 就会发送给发送方的邮件服务器,那就放到这个邮件服务器的邮件缓存
  • 那SMTP客户 也就是现在的发送方邮件服务器 每隔一定的时间,就会对这个邮件缓存里面的邮件进行一个扫描
  • 那如果发现有邮件 它要准备发送 使用SMTP协议,并且使用熟知端口号25号与接收方的这个邮件服务器的SMTP服务器,建立一个TCP的连接,那这个连接建立之后 接收方的这个邮件服务器就要发出一个应答信息 也就是220 service ready 也就告诉发送方现在已经可以准备接收了
  • SMTP客户就会向SMTP服务器来发送一个HELLO的命令,并且 会附上发送方的一个主机名,那SMTP服务器如果它现在有能力接收邮件 它就会返回一个这样一个应答就是250 ok ,就是说我可以接收邮件了,那如果它现在没有能力接收邮件,就会回答这样一个421 service not available,服务不可用
  • 那如果在一定时间内 比如说三天 如果发送不了邮件 邮件服务器就会把这个情况告诉给这个发件人 也就是告诉给发送方
  1. 是邮件发送
  • 用A和B来分别表示发送方的邮件服务器和接收方的邮件服务器
  • 首先 发送方邮件服务器就会发送这样一个命令是mail from 谁,那这个 其实说的就是发送方他的这个电子邮件的地址
  • 那如果这个接收方服务器他已经准备好了 他就会返回一个250 ok,但如果没有准备好 他也会返回数字加上一定的英文信息说明,也就是这一个环节 是让SMTP服务器告知这个发送方的邮件服务器是否已经准备好接收邮件
  • 那接下来这个发送方如果收到了这个250 ok之后 他就会发送这样一个或者是多个这个 RCPT 命令,这个RCPT是收件人英文的缩写,为什么说这个RCPT可以有多个命令 这是因为RCPT他表示的是要发送给谁,当然你可以群发 过年的时候你就要发很多邮件 那这里面的RCPT命令就可以有多条
  • 那每发送一个RCPT命令的 都会有相应的一个信息从这个SMTP服务器当中返回 并且显示的是250 ok,或者是返回这样一个550 No such user here,这样一个过程 就是让这个接收方邮件服务器也是SMTP服务器 告知发送方是否有这样一个用户,那如果这个收件人的地址错误的话 应该返回的是550,那如果这个收件人的地址正确 就会返回一个250 ok 也就是确定是有这样的一个用户 才可以进行接下来的步骤 那接下来就是正式传送数据的过程了
  • 那接下来 A就会发送一个DATE命令 那这个DATE命令 表示他准备要开始正式的传输邮件了,那如果这个接收方服务器 他返回这样一个命令就表示,他同意传输 那接下来 A就开始正式的传输邮件的内容,当然 发送完毕之后 也要返回这个东西表示的就是我这个传输已经结束了,那如果接收方邮件服务器就是这个SMTP的服务器端,他发现有这样一个回车的部分 他就确定这个邮件的内容已经完全传输结束 因此他就会返回一个250 ok
  1. 连接释放
  • 只要这个邮件发完 SMTP的客户 也就是现在的发送方邮件服务器端,他就会发送一个QUIT命令,SMTP服务器会返回一个221表示同意释放这个TCP的连接

MIME

在这里插入图片描述

  • MIME我们可以给它理解成一个协议 或者说是在SMTP协议上面进行扩充的一种手段,它的主要功能就是会把一些非ASCII码的内容 比如说其他国家的文字 或者是一些可执行文件 转换成这个七位的ASCII码,再通过SMTP协议来进行邮件的发送和接收
  • 所以说 它是在SMTP协议基础之上的一个功能上的扩展 它可以使得电子邮件系统支持声音 图像 视频 以及多种的国家语言等等 所以说MIME它的主要功能 就是可以使传输内容变得更加的丰富多彩 种类更加多样

邮局协议POP3

在这里插入图片描述

  • 那由于我们之前提到过 在整个三个环节当中 我们使用的都是TCP连接,所以不出例外的是 这个POP3的也是建立在TCP连接之上,实现可靠传输 ,端口号是110,那POP3也使用的是客户和服务器的方式
  • 提供服务的就是这个接收端邮件服务器 也就是他作为POP3的服务器,那这个用户代理 也就是接收方 他就可以作为POP3的客户

网际报文存取协议IMAP

在这里插入图片描述

  • 那IMAP协议 它是在读取邮件当中所使用的协议,所以它的环节 也是从这个接收端邮件服务器到用户代理这一块所使用的一种协议

基于万维网的电子邮件

在这里插入图片描述

  • 这种基于万维网的电子邮件 只要是与用户代理接触的 这样两个环节都使用HTTP协议 但是在中间这个发送邮件的环节 使用的是SMTP协议

脑图时刻

在这里插入图片描述

6.5.1 万维网和HTTP协议

万维网概述

在这里插入图片描述

  • HTTP协议 它是可以规定这个资源到达使用者中间这样一个过程,那这个过程 就很像是服务器在为客户提供服务 因此万维网也是用客户服务器的方式来工作的

超文本传输协议HTTP

在这里插入图片描述

  • 简单点说 HTTP协议 它就是规定你如何上网 以及这个服务器如何提供你请求的资源的 这样一个过程
  • 服务器当中 就会运行着服务器的一些进程,每一个万维网的网点都会有一个服务器的进程 那这个进程 它会不断监听TCP的80端口 以便发现是不是有万维网的客户来请求我的服务
  • 那一旦这个服务器监听到了连接建立请求 并且和这个客户之间建立好了一个TCP连接之后 浏览器就可以开始向万维网服务器发出浏览界面的请求了
  • 也就是开始发送一个HTTP的请求报文来请求相关的文档,那这个服务器收到请求报文之后,就会把请求的资源以文档的形式,放入这个HTTP的响应报文当中 返回给客户端,最后就可以释放TCP连接 并且在客户机的界面上显示出来

HTTP协议的特点

在这里插入图片描述

  • 无状态: 同一个客户第二次访问同一个服务器上的界面的时候 服务器的响应是和第一次被访问的时候,这个响应是相同的 也就是说是没有记忆的、无状态的

HTTP协议的连接方式

在这里插入图片描述

  • 持久连接它的特点 就是在服务器发送响应之后 在一段时间内仍然保持着这条连接,这样就可以使得客户 也就是这个浏览器和服务器 可以继续在这条连接之上传送后续的一些HTTP的请求报文以及响应报文

超文本传输协议HTTP – 报文结构

在这里插入图片描述

  • 方法: 其实就是一些命令 也就是告诉要对所请求的对象进行哪些操作 是获取还是删除
  • 回车换行:是必备的 相当于是标识请求还是结束 首部行的开始、
  • 首部行:这个首部行是用来说明浏览器 服务器和报文主体的一些相关信息,那这个首部 它可以有好多行 但是也可以不用,并且在每一行结束都会有一个回车换行 而且在整个首部行的结束之后 也会有一个回车换行来标识首部行的结束 实体主体的开始

超文本传输协议HTTP–报文结构

在这里插入图片描述

  • 第一行 就是请求报文当中的请求行,用的是get方法get命令 那这个命令什么意思呢?它就是请求读取 由这个URL所标识的信息 就是一个获取的意思。那接下来这个index.html就是指的URL 那这个版本就是HTTP/1.1
  • Host后面接了这样一个域名,指的就是说现在要请求的这样一个html,它是存在于存放在这样一个网址上这样一个域名上
  • connection它指的是具体的连接方式 close就是非持续的连接
  • cookie字段后面标识的是123456 也就是说明这个用户它的这样一个标识,或者说它的一个识别码就是123456
  • 那如果出现了cookie 就是说明这个用户或者说这个浏览器曾经访问过这个 www.test.edu.cn 所以才会有cookie这样一个字段

总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值