计算机网络第六章-应用层

计算机网络第六章 应用层

计算机学科基础:计算机网络第六章应用层的学习笔记

一.网络应用模型

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

  • 在客户/服务器(Client/Server,C/S)模型中,有一个总是打开的主机称为服务器,它服务于许多来自其他称为客户机的主机请求
    • 服务器的工作流程
      • 服务器处于接收请求的状态
      • 客户机发出服务请求,并等待接收结果
      • 服务器收到请求后,分析请求,进行必要的处理,得到结果并发送给客户机
  • 客户程序必须知道服务器程序的地址,客户机上一般不需要特殊的硬件和复杂的操作系统。
  • 而服务器上运行的软件则是专门用来提供某种服务的程序,可同时处理多个远程或本地客户的要求。
    系统启动后即自动调用并一直不断地运行着,被动地等待并接收来自各地客户的请求。因此,服务器程序不需要知道客户程序的地址
  • 客户/服务器模型的主要的特征
    • 客户是服务请求方,服务器是服务提供方
      常见的使用客户/服务器模型的应用包括Web、文件传输协议(FTP)、远程登录和电子邮件等
    • 网络中各计算机的地位不平等,服务器可以通过对用户权限的限制来达到管理客户机的目的,使它们不能随意存储/删除数据,
      或进行其他受限的网络活动。整个网络的管理工作由少数服务器担当,因此网络的管理非常集中和方便
    • 客户机相互之间不直接通信。例如,在Web应用中两个浏览器并不直接通信
    • 可扩展性不佳。受服务器硬件和网络带宽的限制,服务器支持的客户机数有限

2.P2P模型

  • P2P模型的思想是整个网络中的传输内容不再被保存在中心服务器上,每个结点都同时具有下载、上传的功能,其权利和义务都是大体对等的。

  • 在P2P模型中,各计算机没有固定的客户和服务器划分。相反,任意一对计算机一一称为对等方(Per),直接相互通信
    P2P模型从本质上来看仍然使用客户/服务器模式,每个结点既作为客户访问其他结点的资源,也作为服务器提供资源给其他结点访问。

  • P2P模型的优点
    • 减轻了服务器的计算压力,消除了对某个服务器的完全依赖,可以将任务分配到各个结点上,因此大大提高了系统效率和资源利用率
      例如,播放流媒体时对服务器的压力过大,而通过P2P模型,可以利用大量的客户机来提供服务
    • 多个客户机之间可以直接共享文档
    • 可扩展性好,传统服务器有响应和带宽的限制,因此只能接受一定数量的请求
    • 网络健壮性强,单个结点的失效不会影响其他部分的结点。
  • P2P模型的缺点
    • 在获取服务的同时,还要给其他结点提供服务,因此会占用较多的内存,影响整机速度。
      例如,经常进行P2P下载还会对硬盘造成较大的损伤。
    • 据某互联网调研机构统计,当前P2P程序已占互联网50%~90%的流量,使网络变得非常拥塞,
      因此各大ISP(互联网服务提供商,如电信、网通等)通常都对P2P应用持反对态度。

3.常见应用层协议端口号

  • pPuSIX9.png

二.域名系统(DNS✪)

1.DNS的概述

  • 域名系统(DNS)是因特网使用的命名系统,用来把便于人们记忆的具有特定含义的主机名转换为便于机器处理的IP地址。
    互联网上提供的主机一定要有IP地址,不一定要有域名
  • DNS系统采用客户/服务器模型,其协议运行在UDP之上,使用53号端口
  • 从概念上可将DNS分为3部分:层次域名空间、域名服务器和解析器。
  • 一个域名可以对应多个主机或IP地址,一个主机或IP地址也可以对应多个域名
  • 主机需要知道自己的本地域名服务器的IP地址,本地域名服务器需要知道根服务器的IP地址

2.层次域名空间

  • 因特网采用层次树状结构的命名方法。采用这种命名方法,任何一个连接到因特网的主机或路由器,都有一个唯一的层次结构名称,即域名(Domain Name)。
  • 域(Domain)是名字空间中一个可被管理的划分。域还可以划分为子域,而子域还可以继续划分为子域的子域,
    这样就形成了顶级域、二级域、三级域等。每个域名都由标号序列组成,而各标号之间用点(“.”)隔开pPn9vu9.png
  • 关于域名中的标号有以下几点需要注意
    • 标号中的英文不区分大小写
    • 标号中除连字符(-)外不能使用其他的标点符号
    • 每个标号不超过63个字符,多标号组成的完整域名最长不超过255个字符
    • 级别最低的域名写在最左边,级别最高的顶级域名写在最右边
  • 项级域名的分类(TLD)
    • 国家(地区)顶级域名:国家和某些地区的域名,如“.cn”表示中国,“.us”表示美国,“.uk”表示英国
    • 通用顶级域名:常见的有“.com”(公司)、“.net”(网络服务机构)、“.org”(非营利性组织)和“.gov”(国家或政府部门)等
    • 基础结构域名。这种顶级域名只有一个,即arpa,用于反向域名解析,因此又称反向域名
  • 在域名系统中,每个域分别由不同的组织进行管理。每个组织都可以将它的域再分成一定数目的子域,并将这些子域委托给其他组织去管理

3.域名服务器

  • 域名服务器的概述

    • 因特网的域名系统被设计成一个联机分布式的数据库系统,并采用客户/服务器模型。
    • 域名到IP地址的解析是由运行在域名服务器上的程序完成的,一个服务器所负责管辖的范围称为区(不以“域”为单位)
      各单位根据具体情况来划分自己管辖范围的区,但在一个区中的所有结点必须是能够连通的,
      每个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。
    • 每个域名服务器不但能够进行一些域名到IP地址的解析,而且还必须具有连向其他域名服务器的信息
      当自己不能进行域名到IP地址的转换时,能够知道到什么地方去找其他域名服务器
    • DNS使用了大量的域名服务器,它们以层次方式组织,采用分布式设计的DNS
      没有一台域名服务器具有因特网上所有主机的映射,相反,该映射分布在所有的DNS上。
  • 域名服务器的分类

    • 根域名服务器
      • 根域名服务器是最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的IP地址
      • 根域名服务器也是最重要的域名服务器,不管是哪个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先要求助于根域名服务器
      • 因特网上有13个根域名服务器,尽管我们将这13个根域名服务器中的每个都视为单个服务器,但每个“服务器”实际上是冗余服务器的集群,以提供安全性和可靠性
      • 根域名服务器用来管辖顶级域(如.com),通常它并不直接把待查询的域名直接转换成IP地址,
        而是告诉本地域名服务器下一步应当找哪个顶级域名服务器进行查询
    • 顶级域名服务器
      • 这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。
      • 收到DNS查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当查找的域名服务器的IP地址)
    • 授权域名服务器(权限域名服务器)
      • 每台主机都必须在授权域名服务器处登记。为了更可靠工作,一台主机最好至少有两个授权域名服务器。
      • 许多域名服务器都同时充当本地域名服务器和授权域名服务器。授权域名服务器总能将其管辖的主机名转换为该主机的IP地址
    • 本地域名服务器
      • 当一台主机发出DNS查询请求时,这个查询请求报文就发送给该主机的本地域名服务器
      • 在Windows系统中配置“本地连接”时,就需要填写DNS地址,这个地址就是本地DNS(域名服务器)的地址
    • 层次图片
      • pPnPJzD.png

4.域名解析过程(♚)

  • 两种查询方式

    • 递归查询(主机向本地域名服务器的查询)
      • 如果本地主机所询问的本地域名服务器不知道被查询域名的IP地址,
        那么本地域名服务器就以DNS客户的身份,向根域名服务器继续发出查询请求报文
    • 迭代查询(本地域名服务器向根域名服务器的查询)
      • 当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,
        要么告诉本地域名服务器:“你下一步应当向哪个顶级域名服务器进行查询”,然后让本地域名服务器向这个顶级域名服务器进行后续的查询
      • 顶级域名服务器收到查询报文后,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步应向哪个权限域名服务器查询。最后,知道所要解析的域名的IP地址后,把这个结果返回给发起查询的主机。
    • 图片
      • pPnF08f.png
  • 高速缓存

    • 为了提高DNS的查询效率,并减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存。
    • 当一个DNS服务器接收到DNS查询结果时,它能将该DNS信息缓存在高速缓存中。
    • 当另一个相同的域名查询到达该DNS服务器时,该服务器就能够直接提供所要求的IP地址,而不需要再去向其他DNS服务器询问。
    • 因为主机名和IP地址之间的映射不是永久的,所以DNS服务器将在一段时间后丢弃高速缓存中的信息。
  • 例题
    • 例1:最少情况:当本地域名服务器中有该域名的DNS信息时,不需要查询任何其他域名服务器,最少发出0次DNS查询
      最多情况:因为均采用迭代查询方式,在最坏情况下,本地域名服务器需要依次迭代地向根域名服务器、顶级域名服务器(.com)、权限域名服务器(xyz.com)、权限域名服务器(abc.xyz.com)发出DNS查询请求,因此最多发出4次DNS查询。
      • pPnAmfx.png
    • 例2:最短本地域名服务器已有缓存,只需访问其即可(10),此时再进行浏览(10)总共20;最长需要本地服务器依次访问根服务器、顶级域名服务器、域名服务器(30),加上之前访问本地服务器的时间以及主机向网站进行浏览的时间,共50
      • pPnAK1K.png

三.文件传输系统(FTP)

1.FTP的工作原理

  • FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限
    它屏蔽了各计算机系统的细节,因而适合于在异构网络中的任意计算机之间传送文件
  • FTP采用客户/服务器的工作方式,它使用TCP可靠的传输服务。一个FTP服务器进程可同时为多个客户进程提供服务。
  • FTP的服务器进程由两大部分组成:一个主进程,负责接收新的请求,另外有若干从属进程,负责处理单个请求。
  • FTP的功能
    • 提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力
    • 以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力
    • 以匿名FTP的方式提供公用文件共享的能力
  • FTP服务器的工作步骤
    • 打开熟知端口21(控制端口),使客户进程能够连接上
    • 等待客户进程发连接请求
    • 启动从属进程来处理客户进程发来的请求。主进程与从属进程并发执行,从属进程对客户进程的请求处理完毕后即终止
    • 回到等待状态,继续接收其他客户进程的请求。
    • FTP服务器必须在整个会话期间保留用户的状态信息。特别是服务器必须把指定的用户账户与控制连接联系起来,
      服务器必须追踪用户在远程目录树上的当前位置

2.控制连接与数据连接

  • FTP在工作时使用两个并行的TCP连接:一个是控制连接(服务器端口号21),
    一个是数据连接(服务器端口号20)。使用两个不同的端口号可以使协议更容易实现。

  • 控制连接(端口号21)

    • 服务器监听21号端口,等待客户连接,建立在这个端口上的连接称为控制连接
    • 控制连接用来传输控制信息(如连接请求、传送请求等),并且控制信息都以7位ASCII格式传送,
      FTP客户发出的传送请求,通过控制连接发送给服务器端的控制进程
    • 控制连接并不用来传送文件,但在传输文件时也可以使用控制连接(如客户在传输中途发一个中止传输的命令),
      因此控制连接在整个会话期间一直保持打开状态
  • 数据连接(端口号20)
    • 服务器端的控制进程在接收到FTP客户发来的文件传输请求后,就创建“数据传送进程”和“数据连接”。
    • 数据连接用来连接客户端和服务器端的数据传送进程,数据传送进程实际完成文件的传送,
      在传送完毕后关闭“数据传送连接”并结束运行
    • 数据连接的两种传输模式
      • 主动模式PORT
        • 客户端连接到服务器的21端口,登录成功后要读取数据时,客户端随机开放一个端口,并发送命令告知服务器
        • 服务器收到PORT命令和端口号后,通过20端口和客户端开放的端口连接,发送数据。
      • 被动模式PASV模式
        • 客户端要读取数据时,发送PASV命令到服务器,服务器在本地随机开放一个端口,并告知客户端,
          客户端再连接到服务器开放的端口进行数据传输。
  • 无论是用PORT模式还是PASV模式,选择权在客户端
  • 主动模式传送数据是“服务器”连接到“客户端”的端口,被动模式传送数据是“客户端”连接到“服务器”的端口。
  • TCP的20和21端口均为服务器的端口,客户进程的端口是客户进程自己提供的
  • 带外传送与NFS
    • 因为FTP使用了一个分离的控制连接,所以也称FTP的控制信息是带外(Out-of-band)传送的。
    • 使用FTP时,若要修改服务器上的文件,则需要先将此文件传送到本地主机,然后再将修改后的文件副本传送到原服务器,来回传送耗费很多时间。
    • 网络文件系统(NFS)采用另一种思路,它允许进程打开一个远程文件,并能在该文件的某个特定位置开始读写数据。
      此时NFS可使用户复制一个大文件中的一个很小的片段,而不需要复制整个大文件

四.电子邮件

1.电子邮件系统的组成结构

  • 电子邮件是一种异步通信方式,通信时不需要双方同时在场。电子邮件把邮件发送到收件人使用的邮件服务器,
    并放在其中的收件人邮箱中,收件人可以随时上网到自己使用的邮件服务器进行读取。
  • 电子邮件系统的主要的组成构件
    • 用户代理(User Agent)
      • 用户与电子邮件系统的接口。用户代理向用户提供一个很友好的接口来发送和接收邮件,
        用户代理至少应当具有撰写、显示和邮件处理的功能。
      • 通常情况下,用户代理就是一个运行在PC上的程序(电子邮件客户端软件),常见的有Outlook和Foxmail等。
    • 邮件服务器
      • 它的功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)。
      • 邮件服务器采用客户/服务器方式工作,但它必须能够同时充当客户和服务器。
        • 例如,当邮件服务器A向邮件服务器B发送邮件时,A就作为SMTP客户,而B是SMTP服务器
        • 反之,当B向A发送邮件时,B就是SMTP客户,而A就是SMTP服务器
    • 邮件发送协议和读取协议
      • SMTP(邮箱发送协议)
        • 用于用户代理向邮件服务器发送邮件或在邮件服务器之间发送邮件
        • SMTP用的是“推”(Push)的通信方式,即用户代理向邮件服务器发送邮件及在邮件服务器之间发送邮件时,
          SMTP客户将邮件“推”送到SMTP服务器
      • POP3(邮件读取协议)
        • 用于用户代理从邮件服务器读取邮件
        • POP3用的是“拉”(Pull)的通信方式,即用户读取邮件时,用户代理向邮件服务器发出请求,“拉”取用户邮箱中的邮件。
      • 在浏览器中时,HTTP协议也可以发送或接收邮件
  • 电子邮件的收发过程
    • 发信人调用用户代理来撰写和编辑要发送的邮件。用户代理用SMTP把邮件传送给发送端邮件服务器
    • 发送端邮件服务器将邮件放入邮件缓存队列中,等待发送
    • 运行在发送端邮件服务器的SMTP客户进程,发现邮件缓存中有待发送的邮件,
      就向运行在接收端邮件服务器的SMTP服务器进程发起建立TCP连接
    • TCP连接建立后,SMTP客户进程开始向远程SMTP服务器进程发送邮件。
      当所有待发送邮件发完后,SMTP就关闭所建立的TCP连接
    • 运行在接收端邮件服务器中的SMTP服务器进程收到邮件后,将邮件放入收信人的用户邮箱,等待收信人在方便时进行读取
    • 收信人打算收信时,调用用户代理,使用POP3(或IMAP)协议将自己的邮件从接收端邮件服务器的用户邮箱中取回(如果邮箱中有来信的话)

2.电子邮件格式与MIME

  • 电子邮件格式
    • 一个电子邮件分为信封和内容两大部分,邮件内容又分为首部和主体两部分
    • 邮件内容的首部包含一些首部行,每个首部行由一个关键字后跟冒号再后跟值组成。有些关键字是必需的,有些则是可选的。
      最重要的关键字是To和Subject.
    • To是必需的关键字,后面填入一个或多个收件人的电子邮件地址。电子邮件地址的规定格式为:收件人邮箱名@邮箱所在主机的域名,如abc@cskaoyan.com,其中收信人邮箱名即用户名,在邮件服务器上唯一
    • Subject是可选关键字,是邮件的主题,反映了邮件的主要内容
    • 还有一个必填的关键字是From,但它通常由邮件系统自动填入
  • 多用途网际邮件扩充(MIME)
    • 由于SMTP只能传送7位的ASCI码邮件,许多其他非英语国家的文字就无法传送,
      且无法传送可执行文件及其他二进制对象,因此提出了MIME
    • MIME并未改动SMTP或取代它。MIME的意图是继续使用目前的格式,但增加了邮件主体的结构,并定义了传送非ASCII码的编码规则,可以转换格式
    • MIME主要包括以下三部分内容
      • 5个新的邮件首部字段,包括MME版本、内容描述、内容标识、传送编码和内容类型
      • 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化
      • 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变

3.SMTP和POP3

  • 简单邮件传输协议 (SMTP)
    • SMTP用的是TCP连接,端口号为25,是一种提供可靠且有效的电子邮件传输的协议,
      它控制两个相互通信的SMTP进程交换信息。
    • 由于SMTP使用客户/服务器方式,因此负责发送邮件的SMTP进程就是SMTP客户,而负责接收邮件的SMTP进程就是SMTP服务
      器。
  • 邮局协议(POP)
    • 在传输层使用TCP,端口号为110,使用客户/服务器的工作方式,是一个非常简单但切能有限的邮件读取协议,
      现任使用的是它的第3个版本POP3.
    • POP3采用的是“拉”(Pull)的通信方式,当用户读取邮件时,用户代理向邮件服务器发出请求,“拉”取用户邮箱中的邮件。
      接收方的用户代理上必须运行POP客户程序,而接收方的邮件服务器上则运行POP服务器程序。
    • POP有两种工作方式:“下载并保留”和“下载并删除”。
      • 在“下载并保留”方式下,用户从邮件服务器上读取邮件后,邮件依然会保存在邮件服务器上,用户可再次从服务器上读取该邮件
      • 而使用“下载并删除”方式时,邮件一旦被读取,就被从邮件服务器上删除,用户不能再次从服务器上读取。

五.万维网(www✪)

1.www的概念与组成结构

  • 万维网是无数个网络站点和网页的集合,它们在一起构成了因特网最主要的部分
    (因特网也包括电子邮件、Usenet和新闻组)。

  • 万维网是一个分布式、联机式的信息存储空间,资源由一个全域“统一资源定位符”(URL)标识

  • 这些资源通过超文本传输协议(HTTP)传送给使用者,而后者通过单击链接来获取资源。
  • 万维网以客户/服务器方式工作。浏览器是在用户主机上的万维网客户程序,而万维网文档所驻留的主机则运行服务器程序,这台主机称为万维网服务器。
    客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档
  • 万维网的内核部分
    • 统一资源定位符(URL)
      • 负责标识万维网上的各种文档,并使每个文档在整个万维网的范围内具有唯一的标识符URL
      • URL的一般形式是:<协议>://<主机>:<端口>/<路径>
      • <协议>指用什么协议来获取万维网文档,常见的协议有http、fp等
      • <主机>是存放资源的主机在因特网中的域名或IP地址
      • <端口>和<路径>有时可省略。在URL中不区分大小写。
    • 超文本传输协议(HTTP)
      • 一个应用层协议,它使用TCP连接进行可靠的传输
      • HTTP是万维网客户程序和服务器程序之间交互所必须严格遵守的协议
    • 超文本标记语言(HTML)
      • 一种文档结构的标记语言,它使用一些约定的标记对页面上的各种信息(包括文字、声音、图像、视频等)、格式进行描述
      • 万维网页面的设计者可以很方便地用一个超链接从本页面的某处链接到因特网上的任何一个万维网页面,
        并能够在自己的计算机屏幕上显示这些页面。

2.超文本传输协议(HTTP)

  • HTTP的操作过程
    • 用户点击超链接或输网址后的过程
      • 1.浏览器分析URL
      • 2.浏览器向DNS请求解析URL的IP地址
      • 3.DNS解析出IP地址
      • 4.浏览器与服务器建立TCP连接
        • 每个万维网站点都有一个服务器进程,它不断地监听TCP的端口80(默认),
          当监听到连接请求后便与浏览器建立TCP连接
      • 5.浏览器发出HTTP请求
      • 6.服务器响应HTTP请求并发送相关文件给浏览器
      • 7.释放TCP连接
      • 8.浏览器解释文件并将web页显示给用户
    • 图片
      • pPnG99U.png
  • HTTP的特点
    • HTTP使用TCP作为传输层协议,保证了数据的可靠传输。但HTTP本身是无连接的,通信的双方在交换HTTP报文之前不需要先建立HTTP连接。
    • HTTP是无状态的,可使用Cookie(存储在用户主机中的文本文件),通过识别码记录一段时间内某用户的访问记录
    • HTTP的两种连接方式
      • 非持久连接(HTTP/1.0只能使用非持续连接)
        • 对于非持久连接,每个网页元素对象 (如JPEG图形、Flash等) 的传输都需要单独建立一个TCP连接
          第三次握手的报文段中捎带了客户对万维网文档的请求
        • 请求一个万维网文档所需的时间是该文档的传输时间(与文档大小成正比)加上两倍往返时间RTT
        • 每个对象引用都导致2×RTT的开销,此外每次建立新的TCP连接都要分配缓存和变量,使万维网服务器的负担很重。
        • 打开一个包含100张图片的web界面,需要打开和关闭101次TCP连接
      • 持久连接(持续连接为HTTP/1.1的默认方式)
        • 万维网服务器在发送响应后仍然保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求和响应报文
        • 分为了非流水线方式和流水线方式
          • 非流水线方式
            • 对于非流水线方式,客户在收到前一个响应后才能发出下一个请求(相当于浏览器要接收确认)
              服务器发送完一个对象后,其TCP连接就处于空闲状态,浪费了服务器资源
          • 流水线方式
            • HTTP/1.1的默认方式是使用流水线的持久连接,客户每遇到一个对象引用就立即发出一个请求,
              因而客户可以逐个地连续发出对各个引用对象的请求。
            • 如果所有的请求和响应都是连续发送的,那么所有引用的对象共计经历1个RTT延迟,
              而不是像非流水线方式那样,每个引用都必须有1个RTT延迟
            • 这种方式减少了TCP连接中的空闲时间,提高了效率。
      • 图片
        • pPnJiPf.png
  • HTTP的报文结构
    • HTTP是面向文本的,因此报文中的每个字段都是一些ASCII码串,并且每个字段的长度都是不确定的。
    • 分为请求报文(从客户向服务器发送的请求报文)和响应报文(从服务器到客户的回答)
    • pPnh6XQ.png
  • 例题
    • pPuSZe1.png
      • 答案:本题还要考虑慢开始的拥塞控制算法pPuSdfS.png
-------------本文结束-------------