第六章: 应用层

6.1 应用层概述

  • 常见网络应用:

    万维网WWW、多媒体网络应用、域名系统DNS、网络应用、文件传送FTP和P2P文件共享、动态主机配置DKCP、电子邮件。

  • 应用层功能:

    对应用程序的通信提供服务。

    主要解决以下问题:

    应用进程交换的报文类型;

    各种报文类型的语法,如报文中的各个字段及其详细描述;

    字段的语义,即包含在字段中的信息的含义;

    进程何时、如何发送报文,以及对报文进行响应的规则。

6.2 网络层应用模型

  • 概述:

    网络应用程序运行在处于网络边缘的不同的端系统上,通过彼此间的通信来共同完成某项任务。

    开发一种新的网络应用首先要考虑的问题就是网络应用程序在各种端系统上的组织方式和它们之间的关系。

  • 客户/服务器 (C/S) 方式:

    • 角色

      客户和服务器是指通信中所涉及的两个应用进程。

      主机运行客户程序即为客户。不需要提供访问地址,不能与其他客户端直接通信。(正在运行的服务器程序称之为客户进程。)

      主机运行服务器程序即为服务器。正常情况下,永不关闭,需要提供永久性访问地址(域名),用于处理来自客户端的请求。(正在运行的服务器程序称之为服务器进程。)

    • C/S方式

      描述的是进程之间服务和被服务的关系。客户是服务求方,服务器是服务提供方。

      在C/S方式下,客户向服务器请求服务,服务器收到请求后向客户提供服务服务器总是处于运行状态,并等待客户的服务请求。

      服务器具有固定端口号(例如HTTP服务器的默认端口号为80),运行服务器的主机也具有固定的IP地址。

    • 应用
      万维网WWW、电子邮件、文件传输FTP等采用的都是C/S方式。
    • 特点

      基于C/S方式的应用服务通常是服务集中型的,即应用服务集中在网络中比客户计算机少得多的服务器计算机上。

      由于一台服务器计算机要为多个客户机提供服务,在C/S应用中,常会出现服务器计算机跟不上众多客户机请求的情况。为此,在C/S应用中,常用计算机群集 (或服务器场)构建一个强大的虚拟服务器。

  • 对等 (P2P)方式:

    • 角色
      没有固定的服务请求者和服务提供者,分布在网络边缘各端系统中的应用进程是对等的,被称为对等方。
    • P2P方式
      对等方相互之间直接通信,每个对等方既是服务的请求者,又是服务的提供者。
    • 应用

      流行的P2P应用主要包括P2P文件共享、即时通信、P2P流媒体、分布式存储等。

    • 特点

      基于P2P的应用是服务分散型的,因为服务不是集中在少数几个服务器计算机中,而是分散在大量对等计算机中。

      这些计算机并不为服务提供商所有,而是个人控制的桌面计算机和笔记本电脑。

      P2P方式的最突出特性之一就是可扩展性。系统每增加一个对等方,不仅增加的是服务的请求者,同时也增加了服务的提供者,系统性能不会因规模的增大而降低。

      P2P方式具有成本上的优势,它通常不需要庞大的服务器设施和服务器带宽。因此服务提供商对于将P2P方式用于应用的兴趣越来越大。

6.3 动态主机配置协议DHCP

  • DHCP的作用

    要使用户主机能正常访问Web服务器,需要给各主机正确配置IP地址、子网掩码、默认网关、DNS服务器等相关配置信息。

    各主机自动启动DHCP程序,向DHCP服务器请求自己的网络配置信息,从而在DHCP服务器处自动获取网络配置信息。

  • DHCP的工作过程

    • 设定:

      假设网络中有两台DHCP服务器和多台用户主机。

      在DHCP服务器上运行DHCP服务器进程,简称为DHCP服务器。

      在用户主机上运行DHCP客户进程,简称为DHCP客户。

      在这里插入图片描述

    • DHCP报文逐层封装的过程:

      DHCP是TCP/P协议体系应用层中的协议 , 使用运输层的UDP所提供的服务。

      DHCP报文在运输层会被封装成为UDP用户数据报,UDP用户数据报在网络层会被封装成IP数据报,根据所使用的网络接口封装成数据链路层的帧进行发送。

    • DHCP客户与DHCP服务器的交互过程:
      • 第一阶段:寻找DHCP服务器
        • DHCP客户:

          DHCP客户广播发送DHCP发现报文。

      • 第二阶段:提供IP地址租用
        • 所有设备:

          都收到封装DHCP发现报文的IP数据报,并对其层层解封 , 解封出封装有DHCP发现报文的UDP用户数据报。

        • DHCP客户:

          DHCP客户应用层没有监听该UDP用户数据报目的端口67的进程,因此无法交付DHCP发现报文,只能丢弃。

        • DHCP服务器:

          DHCP服务器应用层始终运行着DHCP服务器进程 , 因此会接受该DHCP发现报文。

          根据其中封装的DHCP客户端的MAC地址来查找自己的数据库 , 看是否有针对该MAC地址的配置信息。

          有则使用配置信息来构建并发送DHCP提供报文 , 无则采用默认配置信息来构建并发送DHCP提供报文。

        • DHCP提供报文的内容:

          DHCP提供报文中封装有配置信息,例如IP地址、子网掩码、地址租期、默认网关、DNS服务器等。

      • 第三阶段:接受IP地址租约
        • 所有设备:

          都收到封装DHCP提供报文的IP数据报,并对其层层解封 , 解封出封装有DHCP提供报文的UDP用户数据报。

        • DHCP客户:

          DHCP客户应用层始终运行着DHCP客户进程,如果DHCP提供报文中的事物ID与自己之前所发送的DHCP发现报文中封装的事物ID相等,表明是自己所请求的报文,就可以接收该报文,否则丢弃。

          对于本例,DHCP客户会收到两个DHCP服务器发来的DHCP提供报文,DHCP客户会从中选择一个,一般先到先得,并向所选择的DHCP服务器发送DHCP请求报文。

        • DHCP服务器:

          DHCP服务器,其应用层没有监听该UDP用户数据报目的端口68的进程,也就是DHCP客户进程,因此无法交付DHCP提供报文,只能丢弃。

        • DHCP请求报文的内容:

          DHCP请求报文中封装有事物ID、DHCP客户端MAC地址、接受的租约中的IP地址、提供次租约的DHCP服务器端的IP地址等信息。

      • 第四阶段:确认IP地址租约
        • DHCP服务器:

          对于本例,假设DHCP客户选择DHCP服务器1作为自己的DHCP服务器,并且DHCP服务器1接受该请求。

          DHCP服务器1给DHCP客户发送DHCP确认报文。

        • DHCP客户:

          DHCP客户收到该确认报文后,使用ARP检测该IP地址是否已经被网络中的其他主机占用。

          若未占用,DHCP客户就可以使用租约中的IP地址与网络中其他主机通信。

          若被占用,DHCP客户给DHCP服务器发送DHCP DECLINE报文撤销IP地址租约,并重新发送DHCP发现报文。

        • DHCP确认报文的内容:

          DHCP请求报文中封装有事物ID、DHCP客户端MAC地址、接受的租约中的IP地址、提供次租约的DHCP服务器端的IP地址等信息。

      • 第五阶段:IP地址续约
        • DHCP客户:

          当租用期过一半时,DHCP客户会向DHCP服务器1发送DHCP请求报文,来请求更新租用期。

        • DHCP服务器:

          DHCP服务器若同意则发回DHCP确认报文,这样DHCP就得到了新的租用期。

          DHCP服务器若不同意则发送DHCP否认报文,则DHCP客户必须停止使用之前租用到的IP地址,并重新发送DHCP发现报文申请IP地址。

          若DHCP服务器未响应,则在租用期过了87.5%时,DHCP客户必须重新发送DHCP请求报文,然后继续等待DHCP服务器。

          若DHCP服务器还是未响应,则租用期结束后,DHCP客户必须立即停止使用之前租用的IP地址,并重新发送DHCP发现报文来重新申请IP地址。

      • 第六阶段:解除IP地址租约
        • DHCP客户:

          DHCP客户可以随时提前终止DHCP服务器所提供的租用期,只需要向DHCP发送DHCP释放报文。

    • 涉及报文的源地址和目的地址:
      在这里插入图片描述
  • DHCP中继代理

    • 图示:

      在这里插入图片描述

    • 设置DHCP中继代理的目的:

      由于路由器隔绝广播域该网络中的主机广播发送的DHCP发现报文不会被路由器转发,而是丢弃。

      解决方法是给该路由器配置DHCP服务器的IP地址并使之成为DHCP中继代理,且有利于减少DHCP服务器的数量。

6.4 域名系统DNS

  • DNS的作用:
    相对于长、难以记忆的IP地址,人们更喜欢使用具有特定含义的字符串来标识主机(例如 www.baidu.com)。

    但最终通信时仍然需要IP地址,所以DNS可以实现将网址 (域名)转换为其对应的IP地址。

  • 访问网址的过程:

    用户在浏览器地址栏中输入某个Web服务器的域名,主机首先会在自己的DNS高速缓存中查找该域名对应的IP地址。

    如果没有找到则会向网络中的某台DNS服务器查询,DNS服务器中有域名和IP地址映射关系的数据库。

    当DNS服务器收到DNS查询报文,查询其数据库,之后将查询结果发送给用户主机。

    用户主机中的浏览器就可以通过Web服务器的IP地址访问网站。

  • DNS设置规则:

    因特网采用层次树状结构的域名结构。

    域名的结构由若干个分量组成,各分量之间用“点”隔开,分别代表不同级别的域名。 eg,三级域名.二级域名.顶级域名

    每一级的域名都由英文字母和数字组成,不超过63个字符,不区分大小写字母。

    级别最低的域名写在最左边,而级别最高的顶级域名写在最右边。

    完整的域名不超过255个字符。

    域名系统既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。

    各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由因特网名称与数字地址分配机构ICANN进行管理。

  • 顶级域名TLD分三类:

    • 国家顶级域名nTLD:

      .cn : 中国

      .us : 美国

      .uk : 英国

    • 常见通用顶级域名gTLD:

      .com : 公司企业

      .net : 网络服务机构

      .org : 非营利性组织

      .int : 国际组织

      .edu : 美国教育机构

      .gov : 美国政府部门

      .mil : 美国军事部门

    • 反向域arpa :

      用于反向域名解析,即IP地址反向解析为域名。

  • 我国二级域名:

    在国家顶级域名下注册的二级域名均由该国家自行确定。例如,顶级域名为jp的日本,将其教育和企业机构的二级域名定为ac和co,而不用edu和com。

    我国则将二级域名划分为以下两类:类别域名和行政区域名。

    • 7个类别域名

      .ac : 科研机构

      .com : 工、商、金融等企业

      .edu : 教育机构

      .gov : 政府部门

      .net : 提供网络服务的机构

      .mil : 军事机构

      .org : 非营利性组织

    • 34个行政区域名

      适用于我国的各省、自治区、直辖市。

      例如: bj为北京市、sh为上海市、js为江苏省等。

  • 因特网的域名空间

    这种按等级管理的命名方法便于维护名字的唯一性,并且也容易设计出一种高效的域名查询机制。

    域名只是个逻辑概念,并不代表计算机所在的物理地点。

  • 域名服务器分类

    域名和IP地址的映射关系必须保存在域名服务器中,供所有其他应用查询。

    DNS使用分布在各地的域名服务器来实现域名到IP地址的转换。

    域名服务器可以划分为四种不同的类型:根域名服务器、顶级域名服务器、权限域名服务器和本地域名服务器。

    • 根域名服务器

      根域名服务器是最高层次的域名服务器。

      每个根域名服务器都知道所有的顶级域名服务器的域名及其IP地址,因特网上共有13个不同IP地址的根域名服务器。

      “每台服务器”实际上是由许多分布在世界各地的计算机构成的服务器群集。

      当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离这个DNS客户最近的一个根域名服务器。

      这就加快了DNS的查询过程,更合理利用了因特网的资源。

      根域名服务器通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的IP地址。

    • 顶级域名服务器

      负责管理在该顶级域名服务器注册的所有二级域名。

      收到DNS查询请求时就给出相应的回答(可能是最后的结果,也可能是下一级权限域名服务器的IP地址)。

    • 权限域名服务器

      负责管理某个区的域名。

      每一个主机的域名都必须在某个权限域名服务器处注册登记。因此权限域名服务器知道它管辖的域名与IP地址的映射关系。

      权限域名服务器还知道其下级域名服务器的地址。

    • 本地域名服务器

      每个因特网服务提供者(ISP),都可以拥有一个本地域名服务器。

      当一台主机发出DNS查询请求时,这个查询请求报文就发送给该主机的本地域名服务器。

      在Windows系统中配置“本地连接”时填写的DNS地址,就是本地DNS(域名服务器)的地址。

  • 域名解析过程:

      • 定义:

        把域名映射成为IP地址或把IP地址映射成域名的过程。

        当客户端需要域名解析时,通过本机的DNS客户端构造一个DNS请求报文,以UDP数据报方式发往本地域名服务器。

      • 分类:

        域名解析有以下两种方式:递归查询、迭代查询。

        • 递归查询:

          主机首先向其本地域名服务器进行递归查询。

          本地域名服务器收到递归查询委托后,也采用递归查询的方式向某个根 域名服务器查询。

          根域名服务器收到递归查询委托后,也采用递归查询的方式向某个顶级域名服务器查询。

          顶级域名服务器收到递归查询委托后,也采用递归查询的方式向某个权限域名服务器查询。

          当查询到域名所对应的IP地址后,查询结果会在之前受委托的各域名服务器间传递,最终传回用户主机。

          在这里插入图片描述

      • 迭代查询:

        由于递归查询对于被查询的域名服务器负担太大,通常采用以下模式:从请求主机到本地域名服务器的查询是递归查询,而其余的查询是迭代查询。

        主机首先向其本地域名服务器进行递归查询。

        本地域名服务器向根域名服务器采用迭代查询,根域名服务器告诉本地域名服务器下次应该查询的顶级域名服务器IP地址。

        本地域名服务器向顶级域名服务器采用迭代查询,顶级域名服务器告诉本地域名服务器下次应该查询的权限域名服务器IP地址。

        本地域名服务器向权限域名服务器采用迭代查询,权限域名服务器告诉本地域名服务器所查询域名的IP地址,本地域名服务器最后把查询结果告诉主机。

        在这里插入图片描述

  • DNS的高速缓存机制:

    为了提高DNS的查询效率,并减轻根域名服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存。

    高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。

    由于域名到IP地址的映射关系并不是永久不变,为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器并删除超过合理时间的项 (例如,每个项目只存放两天)。

    许多用户主机在启动时从本地域名服务器下载域名和IP地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到域名时才向域名服务器查询。同理,主机也需要保持高速缓存中内容的正确性。

6.5 文件传送协议FTP

  • 文件传送的定义:

    将某台计算机中的文件通过网络传送到可能相距很远的另一台计算机中,是一项基本的网络应用,即文件传送。

  • 文件传送协议FTP:

    文件传送协议FTP是因特网上使用最广泛的文件传送协议。

    FTP提供交互式的访问,允许客户指明文件的类型与格式 (如指明是否使用ASCII码),并允许文件具有存取权限 (如访问文件的用户必须经过授权,并输入有效的口令)。

    FTP屏蔽各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件

  • 文件传送协议FTP的应用:

    在计算机之间传输文件,用于批量传输文件。

    让网站设计者将构成网站内容的大量文件批量上传到他们的Web服务器。

  • 文件传送协议FTP的工作原理:

    • 主动模式:

      FTP服务器监听熟知端口号21。

      FTP客户随机选择一个临时端口号与其建立TCP连接。这条TCP连接用于FTP客户与服务器之间传送FTP的相关控制命令,是FTP客户与服务器之间的命令通道。

      当有数据要传输时,FTP客户通过命令通道告知FTP服务器,来与自己的另一个临时端口号建立TCP连接。

      FTP服务器使用自己的熟知端口号20与FTP客户随机选择的另一个端口号建立TCP连接。这条TCP连接用于FTP客户与服务器之间传送文件,是FTP客户与服务器之间的数据通道。

      控制连接在整个会话期间一直保持打开,用于传送FTP相关控制命令。数据连接用于文件传输,在每次文件传输时才建立,传输结束就关闭。

      由于在建立数据通道时,FTP服务器主动连接FTP客户,因此称为主动模式。

    • 被动模式:

      过程相同,区别在于:当有数据要传输时,FTP客户通过命令通道通知FTP服务器,开启某个协商好的临时端口,被动等待来自FTP客户的TCP连接以建立数据通道,因此称为“被动模式”。

      在这里插入图片描述

6.6 电子邮件系统

  • 电子邮件系统的通信模式:

    电子邮件系统采用客户/服务器方式。

  • 电子邮件系统的主要组成构件:

    用户代理、邮件服务器、电子邮件所需的协议。

    • 用户代理:

      是用户与电子邮件系统的接口,又称为电子邮件客户端软件。

    • 邮件服务器:

      电子邮件系统的基础设施。因特网上所有的ISP都有邮件服务器,其功能是发送和接收邮件,同时还要负责维护用户的邮箱。

    • 电子邮件所需的协议:
      • 概述:

        发送方使用用户代理通过邮件发送协议(如SMTP)将邮件发送给邮件服务器。

        发送方邮件服务器通过邮件发送协议(如SMTP)将该邮件发送给接收方邮件服务器。

        接收方在方便时使用用户代理通过邮件读取协议(例如POP3) 从接收方邮件服务器读取邮件。

      • 简单邮件传送协议SMTP:
        • 特点:

          SMTP协议只能传送ASCII码文本数据,不能传送可执行文件或其他的二进制对象。

          SMTP不能满足传送多媒体邮件(例如带有图片、音频或视频数据)的需要。

          许多其他非英语国家的文字(例如中文、俄文、甚至带有重音符号的法文或德文)无法用SMTP传送。

        • 工作原理:

          发送方邮件服务器周期性扫描邮件缓存。

          如果发现有待转发邮件,则发送方邮件服务器中的SMTP客户会与接收方邮件服务器中的SMTP服务器进行TCP连接(端口号为25)。

          SMTP客户基于这条TCP连接给SMTP服务器发送SMTP命令,共14条。

          SMTP服务器也会给SMTP客户发送相应的应答,共21种。

        • 工作过程:

          当TCP连接建立成功后,SMTP服务器主动推动服务就绪应答给SMTP客户。应答代码220后可能跟有描述信息。

          SMTP客户收到该应答后,向服务器表明身份,告知自己SMTP服务器的域名,具体命令为 HELO,其后为命令参数。

          SMTP服务器若认为身份有效,则发回应答代码250,否则发回其他代码。

          SMTP客户收到该应答后,使用命令 RCPT TO 来告知服务器邮件去往何地,也即收件人邮箱。

          SMTP服务器中如果有该收件人邮箱,则发回应答代码250,否则发回其他代码。

          SMTP客户收到该应答后,使用命令 DATA 来告知服务器准备发送邮件内容。

          SMTP服务器中如果准备好接收,则发回应答代码354,否则发回其他代码。

          SMTP客户收到该应答后,就向服务器发送邮件内容。

          SMTP客户发送完邮件内容后,还要发送结束符。

          SMTP如果收件成功,则发回应答代码250,否则发回其他代码。

          SMTP客户收到该应答后,使用命令 QUIT 向服务器请求断开连接。

          SMTP服务器发回应答代码221表示接受请求并主动断开连接。

                为了简单起见,省略了认证过程。             
                应答代码后面一般都跟有简单的描述信息。             
                不同的SMTP服务器给出的相同应答代码的描述信息可能不同。
    
        • 多用途因特网邮件扩展MIME:
          • 特点:

            为解决SMTP传送非ASCII码文本的问题,提出多用途因特网邮件扩展MIME。

            MIME不仅仅用于SMTP,也用于后来的同样面向ASCII字符的HTTP。

          • 变化:

            增加了5个新的邮件首部字段,这些字段提供了有关邮件主体的信息。

            定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。

            定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。

      • 邮件读取协议
        • 邮局协议POP:

          POP3是其第三个版本,是因特网正式标准,是一个非常简单、功能有限的邮件读取协议。

          用户只能以下载并删除方式或下载并保留方式从邮件服务器下载邮件到用户方计算机,不允许用户在邮件服务器上管理自己的邮件。(例如创建文件夹,对邮件进行分类管理等。)

          • 下载并保留: 用户从邮件服务器上读取邮件后,邮件依然会保存在邮件服务器上,用户可再次从服务器上读取该邮件。
          • 下载并删除: 邮件一旦被读取,就从邮件服务器上删除,用户不能再次从服务器上读取。
        • 因特网邮件访问协议IMAP:

          IMAP4是其第四个版本,目前还只是因特网建议标准,是一个功能比POP3强大的邮件读取协议。

          用户在自己的计算机上就可以操控邮件服务器中的邮箱,就像在本地操控一样,因此IMAP是一个联机协议。

        • 共同点和区别:

          POP3和IMAP4都采用基于TCP连接的客户/服务器方式。

          POP3使用熟知端口110、IMAP4使用熟知端口143。

  • 电子邮件的信息格式:

    并不是由SMTP定义的,而是在RFC822中单独定义的。 (在2008年更新为RFC5322。)

    一个电子邮件有信封和内容两部分,内容由首部和主体两部分构成。首部和主体的信息需要用户填入。

    首部中包含一些关键字,后面加上冒号,例如:

    1. From: 发件人邮件地址 (一般由邮件系统自动填入)
    2. To (必填) :一个或多个收件人的邮件地址
    3. Cc:一个或多个收件人以外的抄送人的邮件地址。
    4. subject (必填) : 填入邮件主题,反映了邮件的主要内容。
  • 邮件发送和接收过程:

    发送方的用户代理作为SMTP客户与发送方邮件服务器中的SMTP服务器进行TCP连接。

    基于这条连接,使用SMTP协议来发送邮件到发送方邮件服务器。

    发送方邮件服务器中的SMTP客户与接收方邮件服务器中的SMTP服务器进行TCP连接。

    基于这条连接,使用SMTP协议来发送已经收到的待转发邮件给接收方邮件服务器。

    接收方的用户代理作为POP3客户,与接收方邮件服务器中的POP3服务器进行TCP连接。

    基于这条连接,使用POP3协议从接收方邮件服务器中读取邮件。

    在这里插入图片描述

  • 基于万维网的电子邮件:

      • 定义:

        通过浏览器登录(提供用户名和口令)邮件服务器万维网网站就可以撰写、收发、阅读和管理电子邮件,而不需要将邮件下载到本地进行管理。

        与IMAP不同的是用户计算机无需安装专门的用户代理程序,只需要使用通用的万维网浏览器。

      • 两种情况收发示例图:

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

6.7 万维网WWW

  • 定义:

    万维网WWW是一个大规模的、联机式的信息储藏所,是运行在因特网上的一个分布式应用。

    万维网利用网页之间的超链接将不同网站的网页链接成一张逻辑上的信息网。

    万维网是欧洲粒子物理实验室的Tim Berners-Lee最初于1989年3月提出的。

  • 浏览器:

    浏览器最重要的部分是渲染引擎,即浏览器内核,负责对网页内容进行解析和显示。

    不同的浏览器内核对网页内容的解析也有不同,因此同一网页在不同内核的浏览器里的显示效果可能不同。网页编写者需要在不同内核的浏览器中测试网页显示效果。

  • URL:

    为了方便地访问在世界范围的文档,万维网使用统一资源定位符来指明因特网上任何种类“资源”的位置。

    URL的一般形式由以下四个部分组成 : <协议>://<主机>:<端口>/<路径>

  • URI:

    URI: 统一资源标识符。表示的是网上每一种可用的资源,如 HTML文档、图像、视频片段、程序等都由一个URI进行标识的。

    通过定位的方式标识资源,即统一资源定位符URL。

    通过命名的方式标识资源,即统一资源命名符URN。

    URL和URN都是URI概念的一种实现方式。

  • 万维网文档:

    由以下三个部分构成,所形成的文档由浏览器内核负责解析和渲染。

    超文本标记语言HTML : 使用多种“标签”来描述网页的结构和内容。

    层叠样式表CSS : 从审美的角度来描述网页的样式。

    一种脚本语言JavaScript : 控制网页的行为。(和Java没有任何关系)

  • 超文本传输协议HTTP:

    • 功能:

      HTTP定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及万维网服务器怎样把万维网文档传送给浏览器。

    • 过程分析:

      浏览器进程首先发起向服务器进程的TCP连接,使用熟知端口号80。

      基于这条已建立好的TCP连接,浏览进程向服务器进程发送HTTP请求报文。

      服务器进程收到后执行相应操作,给浏览器进程发回HTTP响应报文。

    • 非持续连接方式与持续连接方式:

      HTTP/1.0采用非持续连接方式。

      在该方式下,每次浏览器要请求一个文件都要与服务器建立TCP连接,当收到响应后就立即关闭连接。每请求一个文档就要有两倍的RTT的开销。为了减小时延,浏览器通常会建立多个并行的TCP连接同时请求多个对象。但是,这会大量占用万维网服务器的资源,使其负担很重。

      HTTP/1.1采用持续连接方式。

      在该方式下,万维网服务器在发送响应后仍然保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。这并不局限于传送同一个页面上引用的对象,而是只要这些文档都在同一个服务器上就行。

      为了进一步提高效率,HTTP/1.1的持续连接还可以使用流水线方式工作,即浏览器在收到HTTP的响应报文之前就能够连续发送多个请求报文。这样的一个接一个的请求报文到达服务器后,服务器就发回一个接一个的响应报文。

      这样就节省很多个RTT时间,使TCP连接中的空闲时间减少,提高下载文档的效率。

  • HTTP的报文格式:
    HTTP是面向文本的,其报文中的每一个字段都是一些ASCII码串,并且每个字段的长度都是不确定的。

    • HTTP请求报文格式:
      在这里插入图片描述

在这里插入图片描述

    • HTTP响应报文格式:
      在这里插入图片描述
  • Cookie:

    • 定义:

      Cookie提供了一种机制使得万维网服务器能够“记住”用户,而无需用户主动提供用户标识信息。Cookie是一种对无状态的HTTP进行状态化的技术。

    • 工作原理:

      用户主机中的浏览器进程与万维网服务器中的服务器进程建立TCP连接。

      当用户的浏览器进程初次向服务器进程发送HTTP请求报文时,服务器进程就会为其产生一个唯一的Cookie识别码。并以此为索引在服务器的后端数据库中创建一个项目,用来记录该用户访问该网站的各种信息。

      接着给浏览器进程发回HTTP响应报文。响应报文中包含有一个首部字段为Set-Cookie的首部行,该字段的取值就是Cookie识别码。

      当浏览器进程收到该响应报文后,就在一个特定的Cookie文件中添加一行,记录该服务器的域名和Cookie识别码。

      当用户再次使用该浏览器访问这个网站时,每发送一个HTTP请求报文,浏览器都会从Cookie文件中取出该网站的Cookie识别码,并放到HTTP请求报文的Cookie首部行中。

      服务器根据Cookie识别码就可以识别出该用户,并返回该用户的个性化网页。

  • 万维网缓存与代理服务器:

    • 定义:

      使用缓存机制以提高万维网的效率。

      万维网缓存又称Web缓存,可位于客户机,也可位于中间系统上。

      位于中间系统上的Web缓存又称为代理服务器 。

      Web缓存把最近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按URL的地址再次去因特网访问该资源。

    • 过程分析:

      当校园网中的某台主机要访问因特网上的原始服务器时,它首先会向校园网中的代理服务器发送请求。

      若代理服务器中存放有所请求的对象,则代理服务器会向该主机发回包含所请求对象的响应。

      若代理服务器中没有所请求的对象,则代理服务器会向因特网上的原始服务器发送请求。

      原始服务器将包含有所请求对象的响应发回给代理服务器。

      代理服务器将该响应存入Web缓存,给主机发回该响应。

      如果Web缓存的命中率比较高,则路由器R1和R2之间的链路上的通信量将大大减少,因而可以减少校园网各主机访问因特网的时延。

      原始服务器通常会为每个响应的对象设定一个修改时间字段和一个有效日期字段。

      当校园网中的某主机要请求原始服务器中的该文档时,它首先向校园网中的代理服务器发送请求。

      若代理服务器中的该文档未过期,则代理服务器将其封装在响应报文中发回给主机。

      若代理服务器中的该文档已过期,则代理服务器会向因特网上的原始服务器发送请求。

      请求报文中有一个首部字段为lf-modified-since的首部行,该字段的取值就是该文档的修改日期。原始服务器根据该文档的修改日期,就可判断出代理服务器中存储的该文档是否与自己存储的该文档一致。

      一致则原始服务器给代理服务器发送不包含实体主体的响应,状态码为304,短语为Not Modified。代理服务器会重新更新该文档的有效日期,将该文档封装在响应报文中发向给主机。

      不一致则原始服务器给代理服务器发送封装有该文档的响应报文,代理服务器将更新后的该文档封装在响应报文中发回给主机。

      在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值