第6章应用层
    6.1网络应用模型
    一、客户/服务器模型(Client/Server, C/S)
    客户/服务器模型的工作流程:
    (D服务器处于接收请求的状态。
    (2) 客户机发出服务请求,并等待接收结果。
    (3) 服务器收到请求后,分析请求,进行必要的处理,得到结果并发送给客户机。
    客户程序必须知道服务器程序的地址,客户机上一般不需要特殊的硬件和复杂的操作系统。而服务器上运行的软件则是专门用来提供某种服务的程序,
    可同时处理多个远程或本地客户的要求,服务器程序不需要知道客户程序的地址。
    客户/服务器模型最主要的特征:
    客户是服务请求方,月艮务器是服务提供方。常见的使用客户/服务器模型的应用包括Web、文件传输协议(FTP)、远程登录和电子邮件等。
    客户/服务器模型的主要特点还有:
    (1) 网络中各计算机的地位不平等。服务器可以通过对用户权限的限制来达到管理客户机的目的,使它们不能随意存储/删除数据,或进行其他受限的网络
    活动。整个网络的管理工作由少数服务器担当,因此网络的管理非常集中和方便。
    (2) 客户机相互之间不直接通信。
    (3) 可扩展性不佳。受服务器硬件和网络带宽的限制,服务器支持的客户机数有限。
    二、P2P模型
    在P2P模型中,各计算机没有固定的客户和服务器划分。相反,任意一对计算机称为对等方(Peer),直接相互通信。实际上,P2P模型从本质上来看
    仍然使用客户/服务器方式,每个结点既作为客户访问其他结点的资源,也作为服务器提供资源给其他结点访问。当前比较流行的P2P应用有PPlive、
    Bittorrent和电驴等。
    (1) 减轻了服务器的计算压力,消除了对某个服务器的完全依赖,可以将任务分配到各个结点上,因此大大提高了系统效率和资源利用率。
    (2) 多个客户机之间可以直接共享文档。
    ⑶可扩展性好,传统服务器有响应和带宽的限制,因此只能接受一定数量的请求。
    (4)网络健壮性强,单个结点的失效不会影响其他部分的结点。
    P2P模型也有缺点:在获取服务的同时,还要给其他结点提供服务,因此会占用较多的内存,影响整机速度。
    6.2域名系统(DNS)
    域名系统(Domain Name System, DNS)是因特网使用的命名系统,用来把便于人们记忆的具有特定含义的主机名转换为便于机器处理的IP地址。
    DNS系统采用客户/服务器模型,其协议运行在UDP之上,使用53号端口。从概念上可将DNS分为3部分:层次域名空间、域名服务器和解析器。
    _、层次域名空间
    (1)国家顶级域名。 国家和某些地区的域名,如“.cn”表示中国, “.US”表ZF美国。
    (2) 通用顶级域名。常见的有“.com”(公司)、“.net”(网络服务机构)、“.org”(非营利性组织)和“.gov”(国家或政府部门)等。
    (3) 基础结构域名。这种顶级域名只有一个,即arpa,用于反向域名解析,因此又称反向域名。
    U在域名系统中,每个域分别由不同的组织进行管理。每个组织都可以将它的域再分成一定数目的子域,并将这些子域委托给其他组织去管理。
    二、域名服务器
    域名到IP地址的解析是由运行在域名服务器上的程序完成的,一个服务器所负责管辖的(或有权限的)范围称为区(不以“域”为单位),各单位根据
    具体情况来划分自己管辖范围的区,但在一个区中的所有结点必须是能够连通的,每个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到
    IP地址的映射。每个域名服务器不但能够进行一些域名到IP地址的解析,而且还必须具有连向其他域名服务器的信息。当自己不能进行域名到IP地址的转换
    时,能够知道到什么地方去找其他域名服务器。
    DNS使用了大量的域名服务器,它们以层次方式组织。
    1. 根域名服务器
    根域名服务器是最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的IP地址。根域名服务器也是最重要的域名服务器,不管是
    哪个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先要求助于根域名服务器。因特网上有13个根域名服务器,尽管
    我们将这B个根域名服务器中的每个都视为单个服务器,但每个“服务器”实际上是冗余服务器的集群,以提供安全性和可靠性。需要注意的是,根域名
    服务器用来管辖顶级域(如-com),通常它并不直接把待查询的域名直接转换成IP地址,而是告诉本地域名服务器下一步应当找哪个顶级域名服务器进行查
    询。
    2. 顶级域名服务器
    这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。收到DNS查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应
    当查找的域名服务器的P地址)0
    3. 授权域名服务器(权限域名服务器)
    每台主机都必须在授权域名服务器处登记。为了更加可靠地工作,一台主机最好至少有两个授权域名服务器。实际上,许多域名服务器都同时充当本地
    域名服务器和授权域名服务器。授权域名服务器总能将其管辖的主机名转换为该主机的IP地址。
    4. 本地域名服务器
    当一台主机发出DNS查询请求时,这个查询请求报文就发送给该主机的本地域名服务器。事实上,我们在Windows系统中配置“本地连接”时,就需
    要填写DNS地址,这个地址就是本地DNS (域名服务器)的地址。每个因特网服务提供者(ISP),或一所大学,甚至一所大学中的各个系,都可以拥有一
    个本地域名服务器。
    三、域名解析a程
    域名解析是指把域名映射成为ip地址或把ip地址映射成域名的过程。前者称为正向解析,后者称为反向解析。当客户端需要域名解析时,通过本机的
    DNS客户端构造一个DNS请求报文,以UDP数据报方式发往本地域名服务器。
    1.递归查询
    递归査询
    本地域名服务器只需向根域名服务器查询一次,后面的几次查询都是递归地在其他几个域名服务器之间进行的[步骤③〜⑥]。在步骤⑦中,本地域名服
    务器从根域名服务器得到了所需的IP地址,最后在步骤⑧中,本地域名服务器把查询结果告诉发起查询的主机。由于该方法给根域名服务造成的负载过大,
    所以在实际中几乎不使用。
    2.递归与迭代相结合的查询(常用)
    该方式分为两个部分:
    (1) 主机向本地域名服务器的查询采用的是递归查询
    也就是说,如果本地主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向根域名服务器继续发出
    查询请求报文(即替该主机继续查询),而不是让该主机自己进行下一步的查询。两种查询方式的这一步是相同的。
    (2) 本地域名服务器向根域名服务器的查询采用迭代查询
    当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器:“你下一步应当向哪个顶级
    域名服务器进行查询”。然后让本地域名服务器向这个顶级域名服务器进行后续的查询,同样,顶级域名服务器收到查询报文后,要么给出所要查询的IP地
    址,要么告诉本地域名服务器下一步应向哪个权限域名服务器查询。最后,知道所要解析的域名的IP地址后,把这个结果返回给发起查询的主机。
    域名解析的过程(共使用了8个UDP报文)如下:(假定某客户机想获知域名为y.abc.com主机的IP地址)
    ①客户机向其本地域名服务器发出DNS请求报文(递归查询)。
    ②本地域名服务器收到请求后,查询本地缓存,若没有该记录,则以DNS客户的身份向根域名服务器发出解析请求报文(迭代查询)。
    ③根域名服务器收到请求后,判断该域名属于.com域,将对应的顶级域名服务器dns.com的IP地址返回给本地域名服务器。
    ④本地域名服务器向顶级域名服务器dns.com发出解析请求报文(迭代查询)。
    ⑤顶级域名服务器dns.com收到请求后,判断该域名属于abc.com域,因此将对应的授权域名服务器dns.abc.com的IP地址返回给本地域名服务器。
    ⑥本地域名服务器向授权域名服务器dns.abc.com发起解析请求报文(迭代查询)。
    ⑦授权域名服务器dns.abc.com收到请求后,将查询结果返回给本地域名服务器。
    ⑧本地域名服务器将查询结果保存到本地缓存,同时返回给客户机。
    为了提高DNS的查询效率,并减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存。当一个DNS服务器接收到DNS查询结果时,
    它能将该DNS信息缓存在高速缓存中。这样,当另一个相同的域名查询到达该DNS服务器时,该服务器就能够直接提供所要求的IP地址,而不需要再去向其
    他DNS服务器询问。因为主机名和IP地址之间的映射不是永久的,所以DNS服务器将在一段时间后丢弃高速缓存中的信息。
    6.3文件传输协议(FTP)
    一、FTP的工作原理
    文件传输协议(File Transfer Protocol, FTP)是因特网上使用得最广泛的文件传输协议。FTP提供交互式的访问,允许客户指明文件的类型与格式,并
    允许文件具有存取权限。它屏蔽了各计算机系统的细节,因而适合于在异构网络中的任意计算机之间传送文件。
    FTP提供以下功能:
    1. 提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力。
    2. 以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力。
    3. 以匿名FTP的方式提供公用文件共享的能力。
    FTP采用客户/服务器的工作方式,它使用TCP可靠的传输服务。一个FTP服务器进程可同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:
    一个主进程,负责接收新的请求;另外有若干从属进程,负责处理单个请求。
    其工作步骤如下:
    1. 打开熟知端口21 (控制端口),使客户进程能够连接上。
    2. 等待客户进程发连接请求。
    3. 启动从属进程来处理客户进程发来的请求。主进程与从属进程并发执行,从属进程对客户进程的请求处理完毕后即终止。
    4. 回到等待状态,继续接收其他客户进程的请求。
    FTP服务器必须在整个会话期间保留用户的状态信息。特别是服务器必须把指定的用户账户与控制连接联系起来,服务器必须追踪用户在远程目录树上
    的当前位置。
    二、控制连接与数据连接
    FTP在工作时使用两个并行的TCP连接:一个是控制连接(端口号21), —个是数据连接(端口号20)。使用两个不同的端口号可使协议更加简单和更
    容易实现。
    1. 控制连接
    月艮务器监听21号端口,等待客户连接,建立在这个端口上的连接称为控制连接,控制连接用来传输控制信息(如连接请求、传送请求等),并且控制
    信息都以7位ASCII格式传送。FTP客户发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件。在传输文件时还可以使
    用控制连接(如客户在传输中途发一个中止传输的命令),因此控制连接在整个会话期间一直保持打开状态。
    2. 数据连接
    月艮务器端的控制进程在接收到FTP客户发来的文件传输请求后,就创建“数据传送进程”和“数据连接”。数据连接用来连接客户端和服务器端的数据
    传送进程,数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行。
    数据连接有两种传输模式:主动模式PORT和被动模式PASV。PORT模式的工作原理:客户端连接到服务器的21端口,登录成功后要读取数据时,客户
    端随机开放一个端口,并发送命令告知服务器,服务器收到PORT命令和端口号后,通过20端口和客户端开放的端口连接,发送数据。PASV模式的不同点
    是,客户端要读取数据时,发送PASV命令到服务器,服务器在本地随机开放一个端口,并告知客户端,客户端再连接到服务器开放的端口进行数据传输。
    可见,是用PORT模式还是PASV模式,选择权在客户端。简单概括为,主动模式传送数据是“服务器”连接到“客户端”的端口;被动模式传送数据是“客
    户端”连接到“服务器”的端口。
    因为FTP使用了一^分离的控制连接,所以也称FTP的控制信息是带外(Out-of-band)传送的。使用FTP时,若要修改服务器上的文件,则需要先将此
    文件传送到本地主机,然后再将修改后的文件副本传送到原服务器,来回传送耗费很多时间。网络文件系统(NFS)采用另一种思路,它允许进程打开一个
    远程文件,并能在该文件的某个特定位置开始读写数据。这样,NFS可使用户复制一个大文件中的一个很小的片段,而不需要复制整个大文件。
    6.4电子邮件
    一、电子邮件系统的组成结构
    —个电子邮件系统应具有三个最主要的组成构件,即用户代理(User Agent)、由P件服务器和电子邮件使用的协议,女口SMTP、POP3 (或IMAP)等。
    用户代理(UA):用户代理是用户与电子邮件系统的接口,向用户提供一个接口来发送和接收邮件,用户代理至少应当具有撰写、显示和邮件处理的功
    能。通常情况下,用户代理就是一个运行在PC上的程序(电子邮件客户端软件),常见的有Outlook和Foxmail等。
    邮件服务器:它的功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况。邮件服务器采用客户/服务器方式工作,但它必须能够同时充当客户和
    服务器。例如,当邮件服务器A向邮件服务器B发送邮件时,A就作为SMTP客户,而B是SMTP服务器;反之,当B向A发送邮件时,B就是SMTP客户,而A就
    是SMTP服务器。
    邮件发送协议和读取协议:邮件发送协议用于用户代理向邮件服务器发送邮件或在邮件服务器之间发送邮件,女DSMTP;邮件读取协议用于用户代理从邮件
    服务器读取邮件,如POP3。
    鑿DSMTP用的是“推” (Push)的通信方式,即用户代理向邮件服务器发送邮件及在邮件服务器之间发送邮件时,SMTP客户将邮件“推”送到SMTP服务
    器。而POP3用的是“拉”(Pull)的通信方式,即用户读取邮件时,用户代理向邮件服务器发出请求,“拉”取用户邮箱中的邮件。
    1. 发信人调用用户代理来撰写和编辑要发送的邮件。用户代理用SMTP把邮件传送给发送端邮件服务器。
    2. 发送端邮件服务器将邮件放入邮件缓存队列中,等待发送。
    3. 运行在发送端邮件服务器的SMTP客户进程,发现邮件缓存中有待发送的邮件,就向运行在接收端邮件服务器的SMTP服务器进程发起建立TCP连接。
    4. TCP连接建立后,SMTP客户进程开始向远程SMtP服务器进程发送邮件。当所有待发送邮件发完后,SMTP就关闭所建立的TCP连接。
    5. 运行在接收端邮件服务器中的SMTP服务器进程收到邮件后,将邮件放入收信人的用户邮箱,等待收信人在方便时进行读取。
    6. 收信人打算收信时,调用用户代理,使用POP3 (或IMAP)协议将自己的邮件从接收端邮件服务器的用户邮箱中取回(如果邮箱中有来信的话)。
    二、电子邮件格式与MIME
    i.电子邮件格式
    一个电子邮件分为信封和内容两大部分,邮件内容又分为首部和主体两部分。RFC822规定了邮件的首部格式,而邮件的主体部分则让用户自由撰写。
    用户写好首部后,邮件系统自动地将信封所需的信息提取出来并写在信封上,用户不需要亲自填写信封上的信息。邮件内容的首部包含一些首部行,每个
    首部行由一个关键字后跟冒号再后跟值组成。有些关键字是必需的(如To、From),有些则是可选的(如Subject)。
    2.多用途网际邮件扩充(MIME)
    SMTP的缺点:
    1. 无法传送可执行文件及其他二进制对象。
    2. 仅限于传送7位ASCII码,不能传送其他非英语国家的文字。
    3. SMTP服务器会拒绝超过一定长度的邮件。
    因此提出了多用途网络邮件扩充(MIME)。MIME并未改动SMTP或取代它。MIME继续使用目前的格式,但増加了邮件主体的结构,并定义了传送非
    ASCII码的编码规则,使得使电子邮件系统可以支持声音、图像、视频、多种国家语言等等。
    三、SMTP和POP3
    1. SMTP
    简单邮件传输协议(Simple Mail Transfer Protocol, SMTP)是一种提供可靠且有效的电子邮件传输的协议,它控制两个相互通信的SMTP进程交换信
    息。由于SMTP使用客户/服务器方式,因此负责发送邮件的SMTP进程就是SMTP客户,而负责接收邮件的SMTP进程就是SMTP服务器。SMTP用的是TCP连
    接,端口号为25。
    SMTP通信有以下三个阶段:
    (1)连接建立
    发件人的邮件发送到发送方邮件服务器的邮件缓存中后,SMTP客户就每隔一定时间对邮件缓存扫描一次。如发现有邮件,就使用SMTP的熟知端口号
    25与接收方邮件服务器的SMTP服务器建立TCP连接。连接建立后,接收方SMTP服务器发出220 Service ready (服务就绪)。然后SMTP客户向SMTP服务器
    发送HELLO命令,附上发送方的主机名。SMTP不使用中间的邮件服务器。TCP连接总是在发送方和接收方这两个邮件服务器之间直接建立,而不管它们相
    隔多远,不管在传送过程中要经过多少个路由器。当接收方邮件服务器因故障暂时不能建立连接时,发送方的邮件服务器只能等待一段时间后再次尝试连
    接。
    (2) 邮件传送
    A : MAIL FROM:wangdao@163.com
    B:250 0K/B:451 (452、500…) SMTP服务器是否已经准备好接收邮件
    A: RCPTTO:mooc@163.com 可以有多个RCPT命令
    B:250OK /B: 550 No such user here SMTP服务器确定是否有这个用户
    A:DA1A要开始传输邮件的内容了
    B : 354 start mail input; end with . SMTP服务器同意传输
    A : Date••••开始传输邮件内容
    B:2SOOK接收结束
    连接建立后,邮件的传送从MAIL命令开始,MAIL命令后面有发件人的地址。若SMTP服务器已准备好接收邮件,则回答250 OKo接着SMTP客户端发
    送一^或多个RCPT (收件人recipient的缩写)命令,格式为RCPTTO:〈收件人地址〉。每发送一^ RCPT命令,都应有相应的信息从SMTP服务器返回,如
    250 OKng550 No such user here。RCPT命令的作用是,先弄清接收方系统是否已做好接收邮件的准备,然后才发送邮件,以便不至于发送了很长的邮件后
    才知道地址错误,进而避免浪费通信资源。获得OK的回答后,客户端就使用DATA命令,表示要开始传输邮件的内容。正常情况下,SMTP服务器回复的信
    M>354 Start mail input; end with .表示回车换行。此时SMTP客户端就可开始传送邮件内容,并用.表示邮件内
    容的结束。
    (3) 连接释放
    邮件发完后,SMTP客户应发送QUIT命令。SMTP服务器返回221 (服务关闭),表示SMTP同意释放TCP连接。
    2. POP3和IMAP
    邮局协议(POP)的第3个版本POP3。POP3采用的是“拉”(Pull)的通信方式,当用户读取邮件时,用户代理向邮件服务器发出请求,“拉”取用户
    邮箱中的邮件。POP也使用客户/服务器的工作方式,在传输层使用TCP,端口号为110。接收方的用户代理上必须运行POP客户程序,而接收方的邮件服务
    器上则运行POP服务器程序。POP有两种工作方式:“下载并保留”和“下载并删除”。在“下载并保留”方式下,用户从邮件服务器上读取邮件后,邮件
    依然会保存在邮件服务器上,用户可再次从服务器上读取该邮件;而使用“下载并删除”方式时,邮件一旦被读取,就被从邮件服务器上删除,用户不能
    再次从服务器上读取。
    另一个邮件读取协议是因特网报文存取协议(IMAP),比POP复杂。IMAP为用户提供了创建文件夹、在不同文件夹之间移动邮件及在远程文件夹中
    査询邮件等联机命令,为此IMAP服务器维护了会话用户的状态信息。IMAP的另^性是允许用户代理只获取报文的某些部分,这非常适用于低带宽的情
    况,用户可能并不想取回邮箱中的所有邮件,尤其是包含很多音频或视频的大邮件。
    如Hotmail、Gmail等。这种电子邮件的特点是,用户浏览器与Hotmai域Gmail的邮件服务器之间的由P件发送或接收使用的是HTTP,而仅在不同邮件服
    务器之间传送邮件时才使用SMTP。
    6.5万维网(WWW)
    一、WWW的概念与组成结构
    万维网(WorldWideWeb, WWW)是一个分布式、联机式的信息存储空间,是无数个网络站点和网页的集合。
    万维网的内核部分是由三个标准构成的:
    1. 统一资源定位符(URL)。负责标识万维网上的各种文档,并使每个文档在整个万维网的范围内具有唯一的标识符URL。
    2. 超文本传输协议(HTTP)。一个应用层协议,它使用TCP连接进行可靠的传输,HTTP是万维网客户程序和服务器程序之间交互所必须严格遵守的协
    议。
    3. 超文本标记语言(HTML)。一种文档结构的标记语言,它使用一些约定的标记对页面上的各种信息(包括文字、声音、图像、视频等)、格式进行描
    述。
    URL的一般形式是:
    〈协议>://〈主机〉:〈端口 >/<路径〉。
    • <协议>指用什么协议来获取万维网文档,常见的协议有http: ftp等;
    • <主机> 是存放资源的主机在因特网中的域名或IP地址;
    • <端口>和<路径>有时可省略。在URL中不区分大小写。
    万维网以客户/服务器方式工作。浏览器是在用户主机上的万维网客户程序,而万维网文档所驻留的主机则运行服务器程序,这台主机称为万维网服务
    器。客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。
    二、超文本传输协议(HTTP)
    HTTP定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。从层次的角度看,HTTP是面向事
    务的(Transaction-oriented)应用层协议,它规定了在浏览器和服务器之间的请求和响应的格式与规则,是万维网上能够可靠地交换文件(包括文本、声
    音、图像等各种多媒体文件)的重要基础。
    1. HTTP的操作过程
    从协议执行过程来说,浏览器要访问wwW服务器时,首先要完成对WWW服务器的域名解析。一旦获得了服务器的IP地址,浏览器就通过TCP向服务器
    发送连接建立请求。
    万维网的大致工作过程如图所示。每个万维网站点都有一个服务器进程,它不断地监听TCP的端口80 (默认),当监听到连接请求后便与浏览器建立
    TCP连接。然后,浏览器就向服务器发送请求获取某个Web页面的HTTP请求。服务器收到请求后,将构建所请求Web页的必需信息,并通过HTTP响应返回
    给浏览器。浏览器再将信息进行解释,然后将Web页显示给用户。最后,TCP连接释放。
    在浏览器和服务器之间的请求与响应的交互,必须遵循规定的格式和规则,这些格式和规则就是HTTP。因此HTTP有两类报文:请求报文(从Web客户
    端向Web服务器发送服务请求)和响应报文(从Web服务器对Web客户端请求的回答)。
    {施狀避饰沿捌跑饰J
    (1)浏览器分析链接指向页面的URL。
    (2)浏览器向DNS请求解析IP地址。
    (3)域名系统DNS解析出IP地址。
    (4)浏览器与该服务器建立TCP连接(默认端口号为80)。
    (5)浏览器发出HTTP GET请求。
    ⑹ 服务器通过HTTP响应把文件index.htm发送给浏览器。
    (7)释放TCP连接。
    ⑻浏览器解释文件index.htm,并将Web页显示给用户。
    2. HTTP的特点
    HTTP使用TCP作为运输层协议,保证了数据的可靠传输。HTTP不必考虑数据在传输过程中被丢弃后又怎样被重传。但是,HTTP本身是无连接的(务
    必注意)。也就是说,虽然HTTP使用了TCP连接,但通信的双方在交换HTTP报文之前不需要先建立HTTP连接。
    HTTP是无状态的。HTTP的无状态特性简化了服务器的设计,使服务器更容易支持大量并发的HTTP请求。在实际应用中,通常使用Cookie加数据库的
    方式来跟踪用户的活动(如记录用户最近浏览的商品等)。
    Cookie的工作原理:
    当用户浏览某个使用Cookie的网站时,该网站服务器就为用户产生一个唯一的识别码,接着在给用户的响应报文中添加一个Set-cookie的首部行。用户
    收到响应后,就在它管理的特定Cookie文件中添加这个服务器的主机名和Cookie识别码,当用户继续浏览这个网站时,会取出这个网站的识别码,并放入
    请求报文的Cookie首部行,月艮务器根据请求报文中的Cookie识别码就能从数据库中查询到该用户的活动记录。
    HTTP既可以使用非持久连接,也可以使用持久连接(HTTP/1.1支持):
    非持久连接:每个网页元素对象的传输都需要单独建立一个TCP连接,如图6.12所示(第三次握手的报文段中捎带了客户对万维网文档的请求)。也就
    是说,请求一个万维网文档所需的时间是该文档的传输时间(与文档大小成正比)加上两倍往返时间RTT (—个RTT用于TCP连接,另一个RTT用于请求和接
    收文档)。每个对象引用都导致2xRTT的开销,此外每次建立新的TCP连接都要分配缓存和变量,使万维网服务器的负担很重。
    持久连接:是指万维网服务器在发送响应后仍然保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求和响
    应报文。持久连接又分为非流水线和流水线两种方式。对于非流水线方式,客户在收到前一个响应后才能发出下一个请求,0艮务器发送完一个对象后,其
    TCP连接就处于空闲状态,浪费了服务器资源。HTTP/1.1的默认方式是使用流水线的持久连接,这种情况下,客户每遇到一个对象引用就立即发出一个请
    求,因而客户可以逐个地连续发出对各个引用对象的请求。如果所有的请求和响应都是连续发送的,那么所有引用的对象共计经历1个RTT延迟,而不是像
    非流水线方式那样,每个引用都必须有1个RTT延迟。这种方式减少了TCP连接中的空闲时间,提高了效率。
    3. HTTP的报文结构
    HTTP是面向文本的,因此报文中的每个字段都是一些ASCII码串,并且每个字段的长度都是不确定的。有两类HTTP报文:
    •请求报文:从客户向服务器发送的请求报文。
    •响应报文:从服务器到客户的回答。
    HTTP请求报文和响应报文都由三个部分组成,这两种报文格式的区别就是开始行不同。
    •开始行:用于区分是请求报文还是响应报文。在请求报文中的开始行称为请求行,而在响应报文中的开始行称为状态行。开始行的三个字段之间都以空
    格分隔,最后的“CR”和“LF”分别代表“回车”和“换行”。请求报文的“请求行”有三个内容:方法、请求资源的URL及HTTP的版本。其中,
    “方法”是对所请求对象进行的操作,这些方法实际上也就是一些命令。表种给出了HTTP请求报文中常用的几个方法。
    •首部行:用来说明浏览器、服务器或报文主体的一些信息。首部可以有几行,但也可以不使用。在每个首部行中都有首部字段名和它的值,每一行在结
    束的地方都要有“回车”和“换行” o整个首部行结束时,还有一空行将首部行和后面的实体主体分开。
    •实体主体:在请求报文中一般不用这个字段,而在响应报文中也可能没有这个字段。
    某浏览器发出的请求报文