计算机网络第六弹——应用层

彩蛋

计算机网络谢希仁第七版原版ppt获取方式:公众号后台回复”N3“即可获取。

由于公众号不支持显示LaTeX公式且公众号排版混乱,建议大家关注微信公众号"IT工匠",后台回复"N4-5"获取xmind源文件以及本文原文pdf文件获取更佳阅读体验。

本文主要内容:

每个应用层协议都是为了解决某一类应用问题,而问题的解决又往往是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。应用层的具体内容就是规定应用进程在通信时所遵循的协议,应用层的许多协议都是基于客户服务器方式,客户 (client) 和服务器 (server) 都是指通信中所涉及的两个应用进程。

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

域名系统DNS

DNS概述

许多应用层软件经常直接使用域名系统 DNS (Domain Name System),但计算机的用户只是间接而不是直接使用域名系统。

互联网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统 DNS, 名字到 IP 地址的解析是由若干个域名服务器程序完成的,域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器

互联网的域名结构

互联网采用了层次树状结构的命名方法,任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名,域名的结构由标号序列组成,各标号之间用点隔开:

三级域名二级域名顶级域名

各标号分别代表不同级别的域名。

注意域名只是个逻辑概念,并不代表计算机所在的物理地点。 变长的域名和使用有助记忆的字符串,是为了便于人来使用,而 IP 地址是定长的 32 位二进制数字则非常便于机器进行处理。 域名中的“点”和点分十进制 IP 地址中的“点”并无一一对应的关系。点分十进制 IP 地址中一定是包含三个“点”,但每一个域名中“点”的数目则不一定正好是三个。

互联网的域名空间

图2-1

域名服务器

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

域名服务器的种类

根域名服务器

根域名服务器最高层次的域名服务器,也是最重要的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器域名IP 地址。 不管是哪一个本地域名服务器,若要对互联网上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器。 在互联网上共有 13 个不同 IP 地址的根域名服务器,它们的名字是用一个英文字母命名,从 a 一直到 m(前 13 个字母)。

根域名服务器共有 13 套装置,不是 13 个机器。 这些根域名服务器相应的域名分别是:

  1. a.rootservers.net

  2. b.rootservers.net

  3. m.rootservers.net

到2016年2月,全世界已经在 588 个地点安装了根域名服务器,使世界上大部分 DNS 域名服务器都能就近找到一个根域名服务器。

根域名服务器并不直接把域名转换成 IP 地址。 在使用迭代查询时,根域名服务器把下一步应当找的顶级域名服务器的 IP 地址告诉本地域名服务器

顶级域名服务器

顶级域名服务器(即 TLD 服务器)负责管理在该顶级域名服务器注册的所有二级域名。 当收到 DNS 查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的 IP 地址)。

权限域名服务器

负责一个的域名服务器。 当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的 DNS 客户,下一步应当找哪一个权限域名服务器。

本地域名服务器

本地域名服务器对域名系统非常重要, 当一个主机发出 DNS 查询请求时,这个查询请求报文就发送给本地域名服务器。 每一个互联网服务提供者 ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器, 这种域名服务器有时也称为默认域名服务器

树状结构的 DNS 域名服务器

图2-2

DNS 域名服务器都把数据复制到几个域名服务器来保存,其中的一个是主域名服务器,其他的是辅助域名服务器。 当主域名服务器出故障时,辅助域名服务器可以保证 DNS 的查询工作不会中断,主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行,这样就保证了数据的一致性

域名的解析过程

这里首先要注意两点:

  1. 主机本地域名服务器的查询一般都是采用递归查询。如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文(一次得到结果)。

  2. 本地域名服务器向根域名服务器的查询通常是采用迭代查询。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”,然后让本地域名服务器进行后续的查询(可能需要多次查询)。

这里用一个例子进行说明:

图2-3:DNS查询举例

假定域名为m.xyz.com的主机想知道另一台主机(域名为y.abc.com)的IP地址。例 如,主机m.xyz.com打算发送邮件给主机y.abc.com,这时就必须知道主机y.abc.com的IP 地址。下面是图2-3的几个查询步骤:

  1. 主机m.xyz.com先向其本地域名服务器dns.xyz.com进行递归查询

  2. 本地域名服务器采用迭代查询。它先向一个根域名服务器查询。

  3. 根域名服务器告诉本地域名服务器,下一次应查询的顶级域名服务器dns.com的IP 地址。

  4. 本地域名服务器顶级域名服务器dns.com进行查询。

  5. 顶级域名服务器dns.com告诉本地域名服务器,下一次应查询的权限域名服务器 dns.abc.com的IP地址。

  6. 本地域名服务器权限域名服务器dns.abc.com进行查询。

  7. 权限域名服务器dns.abc.com告诉本地域名服务器,所查询的主机的IP地址。

  8. 本地域名服务器最后把查询结果告诉主机m.xyz.como

    我们注意到,这8个步骤总共要使用8个UDP用户数据报的报文。本地域名服务器经 过三次迭代查询后,从权限域名服务器dns.abc.com得到了主机y.abc.com的IP地址,最后 把结果返回给发起查询的主机m.xyz.como 图2-3(b)是本地域名服务器采用递归查询的情况,在这种情况下,本地域名服务器只 需向根域名服务器查询一次,后面的几次查询都是在其他几个域名服务器之间进行的(步 骤3至6)。只是在步骤7,本地域名服务器从根域名服务器得到了所需的IP地址。最后 在步骤9,本地域名服务器把查询结果告诉主机m.xyz.com。整个的查询也是使用8个UDP 报文。

    为了提高DNS的查询效率,并减轻根域名服务器的负荷和减少互联网上的DNS查询报文数量,每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录,为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时 器,并处理超过合理时间的项(例如,每个项目只存放两天)。 当权限域名服务器回答一个查询请求时,在响应中都指明绑定有效存在的时间值,增加此时间值可减少网络开销,而减少此时间值可提高域名转换的准确性。

    文件传送协议

    FTP概述

    文件传送协议 FTP (File Transfer Protocol) 是互联网上使用得最广泛的文件传送协议。 FTP 提供交互式的访问,允许客户指明文件的类型格式(如指明是否使用ASCII码),并允许文件具有存取权限(如访问文件的用户必须经过授权,并输入有效的口令)。 FTP 屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件

    在下面两节分别介绍基于TCF的FTP和基于UDP的简单文件传送协议TFTP,它们都是文件共享协议中的一大类,即复制整个文件,其特点是若要存取一个文件,就必须先获得一个本地的文件副本,如果要修改文件,只能对文件的副本进行修改,然后再将修改后的文件副本传回到原节点。

    文件共享协议中的另一大类是联机访问(on-line access),联机访问意味着允许多个程序同时对一个文件进行存取。和数据库系统的不同之处是用户不需要调用一个特殊的客户进程,而是由操作系统提供对远地共享文件进行访问的服务,就如同对本地文件的访问一样,这就使用户可以用远地文件作为输入和输出来运行任何应用程序,而操作系统中的文件系统则提供对共享文件的透明存取。透明存取的优点是将原来用于处理本地文件的应用程序用来处理远地文件时,不需要对该应用程序作明显的改动。属于文件共享协议的有网络文件系统NFS(Network File System)

    FTP原理

    网络环境中的一项基本应用就是将文件从一台计算机中复制到另一台可能相距很远的计算机中, 初看起来,在两个主机之间传送文件是很简单的事情,其实这往往非常困难,原因是众多的计算机厂商研制出的文件系统多达数百种,且差别很大,经常遇到的问题是:

    1. 计算机存储数据的格式不同。

    2. 文件的目录结构文件命名的规定不同。

    3. 对于相同的文件存取功能,操作系统使用的命令不同。

    4. 访问控制方法不同。

    FTP特点:

    1. 文件传送协议 FTP 只提供文件传送的一些基本的服务,它使用 TCP 可靠的运输服务

    2. FTP 的主要功能是减少或消除在不同操作系统下处理文件的不兼容性

    3. FTP 使用客户-服务器方式。

    4. 一个 FTP 服务器进程可同时为多个客户进程提供服务。

    5. FTP 的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求

    主进程的工作步骤:

    1. 打开熟知端口(端口号为 21),使客户进程能够连接上。

    2. 等待客户进程发出连接请求。

    3. 启动从属进程处理客户进程发来的请求

    4. 从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。

    5. 回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发地进行。

    FTP的工作情况如图3-1所示,途中的椭圆圈表示在系统中运行的进程,图中的服务器端有两个从属进程:控制进程数据传送进程,为简单起见,服务端的主进程没有画上。

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

    图3-1:FTP使用的2个TCP连接

    当客户进程向服务器进程发出建立连接请求时,要寻找连接服务器进程的熟知端口 (21),同时还要告诉服务器进程自己的另一个端口号码,用于建立数据传送连接。 接着,服务器进程用自己传送数据的熟知端口 (20) 与客户进程所提供的端口号码建立数据传送连接。 由于 FTP 使用了两个不同的端口号,所以数据连接与控制连接不会发生混乱。

    使用两个端口(两个连接)的好处是可以使协议更加简单和更容易实现,而且在传输文件时还可以利用控制连接对文件的传输进行控制(例如,客户发送请求终止传输)

    FTP并非对于所有的数据传送都是最佳的,比如计算机A上有一个很大的文件,计算机B想在A的那个大文件的最后添加一行,如果使用FTP就必须B先把A的那个大文件整个拿到,最最后一行的修改后再回传给A,这样做其实很浪费时间,而且这种传送时不必要的,因为B并没有使用该文件的其他内容。

    然而网络文件系统NFS则采用另一种思路:

    NFS 允许应用进程打开一个远地文件,并能在该文件的某一个特定的位置上开始读写数据,这样, NFS 可使用户只复制一个大文件中的一个很小的片段,而不需要复制整个大文件。 例如,计算机 A 的 NFS 客户软件,把要添加的数据和在文件后面写数据的请求一起发送到远地的计算机 B 的 NFS 服务器,NFS 服务器更新文件后返回应答信息,这样在网络上传送的只是少量的修改数据

    简单文件传送协议TFTP

    TFTP (Trivial File Transfer Protocol) 是一个很小且易于实现的文件传送协议, TFTP 使用客户服务器方式和使用 UDP 数据报,因此 TFTP 需要有自己的差错改正措施, TFTP 只支持文件传输而不支持交互, TFTP 没有一个庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别

    TFTP的主要优点有两个:

    1. TFTP采用UDP环境

      例如,当文件或者程序需要面向许多及其下载时往往就需要TFTP。

    2. TFTP所占的内存较小

      这对较小的计算机或某些特殊用途的设备是很重要的。这些设备不需要硬盘,只需要固化了TFTP、UDP和IP的小容量只读存储器即可,当接通电源后,设备执行只读存储器中的代码,在网络上广播一个TFTP请求,网络上的TFTP服务器就发送响应,其中包括可执行二禁止程序。设备收到此文件后将其放入内存,然后开始运行程序。这种方式增加了灵活性,也减少了开销。

    TFTP的主要特点:

    1. 每次传送的数据 PDU 中有 512 字节的数据,但最后一次可不足 512 字节。

    2. 数据 PDU 也称为文件块 (block),每个块按序编号,从 1 开始。

    3. 支持 ASCII 码或二进制传送。

    4. 可对文件进行读或写。

    5. 使用很简单的首部。

    TFTP 的工作很像停止等待协议,发送完一个文件块后就等待对方的确认,确认时应指明所确认的块编号。 发完数据后在规定时间内收不到确认就要重发数据 PDU。 发送确认 PDU 的一方若在规定时间内收不到下一个文件块,也要重发确认 PDU。这样就可保证文件的传送不致因某一个数据报的丢失而告失败。开始工作时,TFTP 客户进程发送一个读请求 PDU 或写请求 PDU 给 TFTP 服务器进程,其熟知端口号码为 69。 TFTP 服务器进程要选择一个新的端口和 TFTP 客户进程进行通信。 若文件长度恰好为 512 字节的整数倍,则在文件传送完毕后,还必须在最后发送一个只含首部而无数据的数据 PDU。 若文件长度不是 512 字节的整数倍,则最后传送数据 PDU 的数据字段一定不满 512 字节,这正好可作为文件结束的标志。

    远程终端协议TELNET

    TELNET 是一个简单的远程终端协议,也是互联网的正式标准。 用户用 TELNET 就可在其所在地通过 TCP 连接注册(即登录)到远地的另一个主机上(使用主机名或 IP 地址)。 TELNET 能将用户的击键传到远地主机,同时也能将远地主机的输出通过 TCP 连接返回到用户屏幕,这种服务是透明的,因为用户感觉到好像键盘和显示器是直接连在远地主机上,因此,TELNET又称为终端仿真协议

    现在由于 PC 的功能越来越强,用户已较少使用 TELNET 了。

    TELNET 也使用客户服务器方式:

    在本地系统运行 TELNET 客户进程,而在远地主机则运行 TELNET 服务器进程。 和 FTP 的情况相似,服务器中的主进程等待新的请求,并产生从属进程来处理每一个连接。

    图4-1:TELNET使用网络虚拟终端NVT格式

    如图4-1所示,客户软件把用户的击键和命令转换成 NVT 格式,并送交服务器。 服务器软件把收到的数据和命令,从 NVT 格式转换成远地系统所需的格式。 向用户返回数据时,服务器把远地系统的格式转换为 NVT 格式,本地客户再从 NVT 格式转换到本地系统所需的格式。

    这一机制的原因是不同计算机或操作系统具有很大的差异性,同一个命令可能在不同的操作系统对应不同的字符,所以使用NAT消除这种差别性。

    万维网www

    万维网概述

    万维网 WWW (World Wide Web) 并非某种特殊的计算机网络,而是一个大规模的、联机式的信息储藏所。 万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息, 这种访问方式称为“链接”,图5-1说明了万维网提供分布式服务的特点。

    图5-1:万维网提供分布式服务

    万维网是分布式超媒体 (hypermedia) 系统,它是超文本 (hypertext) 系统的扩充。

    一个超文本由多个信息源链接成,利用一个链接可使用户找到另一个文档,这些文档可以位于世界上任何一个接在互联网上的超文本系统中。

    超文本是万维网的基础, 超媒体与超文本的区别是文档内容不同,超文本文档仅包含文本信 息,而超媒体文档还包含其他表示方式的信息,如图形、图像、声 音、动画,甚至活动视频图像。

    万维网以客户 - 服务器方式工作, 浏览器就是在用户计算机上的万维网客户程序,万维网文档所驻留的计算机则运行服务器程序,因此这个计算机也称为万维网服务器。 客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档, 在一个客户程序主窗口上显示出的万维网文档称为页面 (page)

    万维网必须解决的问题:

    1. 怎样标志分布在整个互联网上的万维网文档?

      使用统一资源定位符 URL (Uniform Resource Locator) 来标志万维网上的各种文档, 使每一个文档在整个互联网的范围内具有唯一的标识符 URL

    2. 用何协议实现万维网上各种超链的链接?

      在万维网客户程序与万维网服务器程序之间进行交互所使用的协议,是超文本传送协议 HTTP (HyperText Transfer Protocol)。 HTTP 是一个应用层协议,它使用 TCP 连接进行可靠的传送。

    3. 怎样使各种万维网文档都能在互联网上的各种计算机上显示出来,同时使用户清楚地知道在什么地方存在着超链?

      超文本标记语言 HTML (HyperText Markup Language) 使得万维网页面的设计者可以很方便地用一个超链从本页面的某处链接到互联网上的任何一个万维网页面,并且能够在自己的计算机屏幕上将这些页面显示出来。

    4. 怎样使用户能够很方便地找到所需的信息?

    5. 为了在万维网上方便地查找信息,用户可使用各种的搜索工具(即搜索引擎)

    统一资源定位符URL

    资源定位符 URL 是对可以从互联网上得到的资源的位置和访问方法的一种简洁表示。 URL 给资源的位置提供一种抽象的识别方法,并用这种方法给资源定位。 只要能够对资源定位,系统就可以对资源进行各种操作,如存取、更新、替换和查找其属性。 URL 相当于一个文件名在网络范围的扩展,因此 URL 是与互联网相连的机器上的任何可访问对象的一个指针

    URL格式

    URL由以冒号隔开的两大部分组成,并且在 URL 中的字符对大写或小写没有要求。 URL 的一般形式:

    协议:主机端口路径

    • URL的第一部分是<协议>,指使用什么协议来获取万维网文档,现在最常用的是http(超文本传输协议),其次是ftp(文件传送协议FTP)

    • 在<协议>后面的//是规定的格式

    现在有些浏览器为了方便用户,在输入 URL 时,可以把最前面的“http://”甚至把主机名最前面的“www”省略,然后浏览器替用户把省略的字符添上。 例如,用户只要键入 ctrip.com,浏览器就自动把未键入的字符补齐,变成http://www.ctrip.com

    使用HTTP的URL

    对于万维网的网点的访问要使用HTTP协议,HTTP协议的URL的一般形式是:

    主机端口路径

    HTTP默认的端口号是80,通常可以省略,若再省略文件的路径项,则URL就指到互联网上的某个主页(home page)

    超文本传输协议HTTP

    HTTP的操作过程

    为了使超文本的链接能够高效率地完成,需要用 HTTP 协议来传送一切必须的信息。 从层次的角度看,HTTP 是面向事务 (transaction-oriented) 的应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。

    万维网的大致工作过程如图5-2所示:

    图5-2:万维网的工作过程

    大致分为以下几步:

    1. 每个万维网网点都有一个服务器进程,它不断地监听 TCP 的端口 80,以便发现是否有浏览器向它发出连接建立请求。

    2. 一旦监听到连接建立请求并建立了 TCP 连接之后,浏览器就向万维网服务器发出浏览某个页面的请求,服务器接着就返回所请求的页面作为响应。

    3. 最后,TCP 连接就被释放了。

    在浏览器和服务器之间的请求和响应的交互,必须按照规定的格式和遵循一定的规则。这些格式和规则就是超文本传送协议 HTTP。 HTTP 规定在 HTTP 客户与 HTTP 服务器之间的每次交互,都由一个 ASCII 码串构成的请求和一个类似的通用互联网扩充,即“类 MIME (MIME-like)”的响应组成。 HTTP 报文通常都使用 TCP 连接传送。

    HTTP的主要特点:

    HTTP 使用了面向连接的 TCP 作为运输层协议,保证了数据的可靠传输

    HTTP 协议本身也是无连接的,虽然它使用了面向连接的 TCP 向上提供的服务,但是通信双方在交换HTTP报文之前不需要先建立HTTP连接。

    HTTP协议是无状态的,也就是说,同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次访问时的相同,因为服务器并不记得曾经访问过的这个用户,也不记得为该客户服务过多少次。HTTP的无状态特性简化了服务器的设计,使服务器更容易支持大量并发的HTTP请求。

    HTTP 是面向事务的客户服务器协议。

    事物:指一系列信息的交换,而这一系列的信息交换是一个不可分割的整体,也就是说,要么所有的信息交换都完成,要么一次交换都不进行。

    下面我们来估算一下,从浏览器请求一个万维网文档到收到整个文档所需的时间,如图5-3所示:

    图5-3:请求一个万维网文档所需的时间

    HTTP协议首先要和服务器建立TCP连接,这需要三次握手,当建立TCP连接的三次握手的前两部分完成后(即经过一个RTT时间后),万维网客户就把HTTP请求报文作为建立连接的三报文握手中的第三个报文中的数据发送给万维网服务器,服务器收到HTTP请求报文后,就把请求的文档作为响应报文返回客户。

    从图5-3可看出,请求一个万维网文档所需的时间是该文档的传输时间(与文档大小成正比)加上两倍往返时间RTT(一个RTT用于连接TCP连接,另一个RTT用于请求和接收万维网文档)。TCP建立连接的三报文握手的第三个报文段中的数据,就是客户对万维网文档的请求报文)。

    HTTP 1.0的主要缺点,就是每请求一个文档就要有两倍RTT的开销。若一个主页上有很多链接的对象(如图片等)需要依次进行链接,那么每一次链接下载都导致2 ×RTT的开销。另一种开销就是万维网客户和服务器每一次建立新的TCP连接都要分配缓存和变量,特别是万维网服务器往往要同时服务于大量客户的请求,所以这种非持续连接会使万维网服务器的负担很重。好在浏览器都能够打开5~10个并行的TCP连接,而每一个TCP连接处理客户的一个请求。因此,使用并行TCP连接可以缩短响应时间。

    HTTP/1.1协议较好地解决了这个问题,它使用了持续连接(persistent connection)。所谓持续连接就是万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文,这并不局限于传送同一个页面上链接的文档,而是只要这些文档都在同一个服务器上就行。目前一些流行的浏览器(如IE 11.0)的默认设置就使用了HTTP/1.1。如果用户不愿意使用持续连接的浏览器,可以选择IE浏览器上面的"工具->Internet选项->高级"等项目,把"HTTP 1.1设置"的选择取消即可。

    HTTP/1.1协议的持续连接有两种工作方式,即非流水线方式(without pipelining)流水线方式(with pipelining):

    1. 非流水线方式的特点,是客户在收到前一个响应后才能发出下一个请求。因此,在TCP连接已建立后,客户每访问一次对象都要用去一个往返时间RTT,这比非持续连接要用去两倍RTT的开销节省了建立TCP连接所需的一个RTT时间。但非流水线方式还是有缺点的,因为服务器在发送完一个对象后,其TCP连接就处于空闲状态,浪费了服务器资源。

    2. 流水线方式的特点,是客户在收到HTTP的响应报文之前就能够接着发送新的请求报文。于是一个接一个的请求报文到达服务器后,服务器就可连续发回响应报文。因此,使用流水线方式时,客户访问所有的对象只需花费一个RTT时间。流水线工作方式使TCP连接中的空闲时间减少,提高了下载文档效率。

    代理服务器

    代理服务器 (proxy server) 又称为万维网高速缓存 (Web cache),它代表浏览器发出 HTTP 请求。 万维网高速缓存把最近的一些请求和响应暂存在本地磁盘中, 当与暂时存放的请求相同的新请求到达时,万维网高速缓存就把暂存的响应发送出去,而不需要按 URL 的地址再去互联网访问该资源。代理服务器可在客户端或服务端工作,也可在中间系统上工作,下面我们用例子来说明他的作用:

    图5-4:代理服务器的作用

    设图5-4(a)是校园网不使用代理服务器的情况。这时,校园网中所有的计算机都通过2Mbit/s专线链路(R1,R2)与互联网上的源点服务器建立TCP连接。因而校园网各计算机访问互联网的通信量往往会使这条2 Mbit/s的链路过载,使得时延大大增加。

    图5-4(b)是校园网使用代理服务器的情况。这时,访问互联网的过程是这样的:

    1. 校园网的计算机中的浏览器向互联网的服务器请求服务时,就先和校园网的代理服务器建立Tcp连接,并向代理服务器发出HTTP请求报文(见图5-4(b)中的1。

    2. 若代理服务器已经存放了所请求的对象,代理服务器就把这个对象放入HTTP响应报文中返回给计算机的浏览器。

    3. 否则,代理服务器就代表发出请求的用户浏览器,与互联网上的源点服务器(originserver)建立TCP连接(如图6-11(b)中的2所示),并发送HTTP请求报文。

    4. 源点服务器把所请求的对象放在HTTP响应报文中返回给校园网的代理服务器

    5. 代理服务器收到这个对象后,先复制在自己的本地存储器中(留待以后使用),然后再把这个对象放在HTTP相应报文中,通过已经建立的TCP连接(见图5-4(b)中的1),返回给请求该对象的浏览器。

    HTTP的报文结构

    HTTP 有两类报文:

    1. 请求报文——从客户向服务器发送请求报文。

    2. 响应报文——从服务器到客户的回答。

    由于 HTTP 是面向正文 (text-oriented)的,因此在报文中的每一个字段都是一些 ASCII 码串,因而每个字段的长度都是不确定的

    图5-5:HTTP的报文结构

    HTTP的请求报文和响应报文都是由三个部分组成的,可以看出,这两种报文的区别就是开始行不同。

    1. 开始行,用于区分是请求报文还是响应报文。在请求报文中的开始行叫做请求行(Request-Line),而在响应报文中的开始行叫做状态行(Status-Line)。在开始行的三个字段之间都以空格分隔开,最后的“CR”和“LF”分别代表"回车""换行“

    2. 首部行,用来说明浏览器、服务器或报文主体的一些信息。首部可以有好几行,但也可以不使用。在每一个首部行中都有首部字段名和它的值,每一行在结束的地方都要有"回车"和"换行”。整个首部行结束时,还有一空行将首部行和后面的实体主体分开。

    3. 实体主体(entity body),在请求报文中一般都不用这个字段,而在响应报文中也可能没有这个字段。

    我们来看一下请求报文的组成:

    1. 方法

      “方法”是面向对象技术中使用的专门名词。所谓“方法”就是对所请求的对象进行的操作,因此这些方法实际上也就是一些命令,因此,请求报文的类型是由它所采用的方法决定的,HTTP请求报文的一些常见方法如下表所示:

    2. URL:所请求的资源的 URL。

    3. 版本:HTTP 的版本。

    对于响应报文,开始行是状态行。 状态行包括三项内容,即 HTTP 的版本状态码,以及解释状态码的简单短语

    状态码都是三位数字:

    • 1xx 表示通知信息的,如请求收到了或正在进行处理。

    • 2xx 表示成功,如接受或知道了。

    • 3xx 表示重定向,表示要完成请求还必须采取进一步的行动。

    • 4xx 表示客户的差错,如请求中有错误的语法或不能完成。

    • 5xx 表示服务器的差错,如服务器失效无法完成请求。

    在服务器上存放用户信息

    万维网站点可以使用 Cookie 来跟踪用户。 Cookie 表示在 HTTP 服务器和客户之间传递的状态信息。 使用 Cookie 的网站服务器为用户产生一个唯一的识别码,利用此识别码,网站就能够跟踪该用户在该网站的活动

    电子邮件

    电子邮件概述

    电子邮件 (e-mail):指使用电子设备交换的邮件及其方法。 电子邮件是互联网上使用得最多的和最受用户欢迎的一种应用。 优点:使用方便,传递迅速,费用低廉,可以传送多种类型的信息(包括:文字信息,声音和图像等)。

    电子邮件的重要标准

    1. 简单邮件发送协议:SMTP

    2. 互联网文本报文格式

    3. 通用互联网邮件扩充 MIME

    4. 邮件读取协议:POP3 和 IMAP

    图6-1:电子邮件的最主要的组成构建

    电子邮件的最主要的组成构建如图6-1所示:用户代理邮件服务器邮件发送和读取协议

    用户代理 UA (User Agent)

    用户代理 UA 就是用户与电子邮件系统的接口,是电子邮件客户端软件。 用户代理的功能:撰写、显示、处理和通信。 邮件服务器的功能是发送接收邮件,同时还要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等), 邮件服务器按照客户 - 服务器方式工作,邮件服务器需要使用发送(SMTP)读取(POP3)两个不同的协议。

    邮件发送和读取使用不同的协议协议:

    • 简单邮件发送协议 SMTP:用于在用户代理向邮件服务器或邮件服务器之间发送邮件

    • 邮局协议 POP3:用于用户代理从邮件服务器读取邮件

    SMTP和POP3(或IMAP)都是使用TCP连接来传送邮件的,目的是为了可靠地传送邮件

    注意:一个邮件服务器既可以作为客户,也可以作为服务器。 例如,当邮件服务器 A 向另一个邮件服务器 B 发送邮件时,邮件服务器 A 就作为 SMTP 客户,而 B 是 SMTP 服务器。 当邮件服务器 A 从另一个邮件服务器 B 接收邮件时,邮件服务器 A 就作为 SMTP 服务器,而 B 是 SMTP 客户。

    发送和接收电子邮件的几个重要步骤

    1. 发件人调用 PC 中的用户代理撰写和编辑要发送的邮件。

    2. 发件人的用户代理把邮件用 SMTP 协议发给发送方邮件服务器。

    3. SMTP 服务器把邮件临时存放在邮件缓存队列中,等待发送。

    4. 发送方邮件服务器的 SMTP 客户与接收方邮件服务器的 SMTP 服务器建立 TCP 连接,然后就把邮件缓存队列中的邮件依次发送出去。

    5. 运行在接收方邮件服务器中的SMTP服务器进程收到邮件后,把邮件放入收件人的用户邮箱中,等待收件人进行读取。

    6. 收件人在打算收信时,就运行PC机中的用户代理,使用POP3(或 IMAP)协议读取发送给自己的邮件。

    电子邮件的组成

    电子邮件由信封 (envelope)内容 (content) 两部分组成。 电子邮件的传输程序根据邮件信封上的信息来传送邮件。用户在从自己的邮箱中读取邮件时才能见到邮件的内容。 在邮件的信封上,最重要的就是收件人的地址。

    TCP/IP 体系的电子邮件系统规定电子邮件地址的格式如下:

    收件人邮箱名邮箱所在主机的域名

    符号“@”读作“at”,表示“在”的意思。

    简单邮件传送协议SMTP

    SMTP 规定了在两个相互通信的 SMTP 进程交换信息的方法,使用客户–服务器方式,基于 TCP 实现客户与服务器的通信。

    SMTP 是一个基于文本的 (即 ASCII 码) 的协议,SMTP 客户与服务器之间采用命令-响应方式进行交互。

    SMTP 通信的三个阶段

    1. 连接建立:连接是在发送主机的 SMTP 客户接收主机的 SMTP 服务器之间建立的,SMTP不使用中间的邮件服务器。

    2. 邮件传送

    3. 连接释放:邮件发送完毕后,SMTP 应释放 TCP 连接

       

    写不动了,不写了哼