




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网络应用层协议.txt铁饭碗的真实含义不是在一个地方吃一辈子饭,而是一辈子到哪儿都有饭吃。就算是一坨屎,也有遇见屎壳郎的那天。所以你大可不必为今天的自己有太多担忧。15.3 网络应用层协议15.3.1 网络应用与应用层协议在过去的20多年中,人们已经发明了许多非常富有创造性的和奇妙的应用。例如,Web、文件传输、电子邮件、网络新闻和远程存取等等,以及现在正在构思和开发的应用,例如声音点播、网际多目标网络广播(IP multicasting)、影视点播和因特网电话等等,这些叫做网络应用(networking applications)。这些网络应用通过相应的应用层协议(application-layer protocol)来支持。例如,HTTP,FTP,SMTP,网络新闻传输协议(Network News Transfer Protocol,NNTP)和Telnet等等。这些应用层协议的主要职责是把文件从一台主机传送到另一台主机,协议的主要内容是定义:(1) 消息的内容,例如请求消息和响应消息。(2) 各种消息类型的语法结构,也就是消息中的域(field)以及如何描述消息中的域。(3) 域的语义,也就是域所包含的信息的含义。(4) 确定通信程序何时发送消息和接收消息的规则。表15-03列出了流行的部分应用层协议。这些应用层协议留驻在协议堆的最高层(层5),它们依赖传输层(层4)提供两种类型的服务,一种是使用TCP的面向连接服务,另一种是使用用户数据包(User Datagram Protocol,UDP)的无连接服务。例如,HTTP使用TCP协议提供可靠的面向连接的服务,而为多媒体应用制定的协议一般都使用UDP协议提供不可靠的服务,所谓不可靠是指不保证在传输过程不丢失信息包,出现的错误数据既不纠正也不重传。表15-03 流行的部分应用层协议网络应用 应用层(层5)协议 传输层(层4)协议 电子邮件(e-mail) SMTP(RFC 821) TCP 远程存取 Telnet(RFC 854) TCP 万维网(WWW) HTTP(RFC 2068) TCP 文件传输 FTP(RFC 959) TCP 流式多媒体(streaming multimedia) (如Real Network公司的)专用协议 UDP或者TCP 因特网电话(Internet telephony) (如Vocaltec公司的)专用协议 UDP 网络应用和网络应用层协议是两个不同的概念。例如,万维网(Web,World Wide Web,WWW)是环球超媒体信息网,是网络应用的典范,它可让用户从Web服务器上得到文档资料,它所运行的模式叫做客户机/服务机(Client/Server)模式,如图15-12所示。Web应用主要由下面几个部分组成:文档格式标准(如HTML),Web浏览器(如Netscape Navigator,Internet Explorer),Web服务器(如Microsoft公司和Netscape公司的服务器),应用层上的协议HTTP。Web系统是负责把以HTML语言编写的多媒体文件从运行Web服务器的服务机上传送到运行Web浏览器的客户机,而Web的超文本传输协议(Hypertext Transfer Protocol,HTTP)是网络应用的一小部分。又如电子邮件系统是负责把电子邮件从源端电子邮件服务器(mail server)传送到终端电子邮件服务器,而简单邮件传输协议(Simple Message Transfer Protocol,SMTP)是该应用系统的一部分。图15-12 客户机/服务机模式因特网的许多协议都定义在征求评议文件(Request For Comments,RFC)中。例如,应用层协议HTTP/1.1定义在RFC 2068中,简单邮件传输协议SMTP定义在RFC 821中。随着技术的不断更新,RFC也在不断修改。RFC经过讨论和实践之后就成为标准,并用“STD XXXX”来命名。执行应用层协议的软件有两个单独的部分:一部分在服务机上运行,通常称为server(服务器),另一部分在客户机上运行。例如,执行HTTP协议的软件,在服务机上的软件叫做HTTP服务器或者叫做WWW服务器,在客户机上的软件通常称为浏览器(browser)。许多软件包都组合了执行多种协议的应用程序。例如Microsoft公司的Internet Explorer和Netscape公司的Netscape Communicator就有Web浏览器、电子邮件读写器、新闻阅读器等应用程序,这样就把用户、应用程序、应用层协议和传输层协议链在一起,如图15-13所示。图15-13 “用户应用程序包协议”链15.3.2 超文本传送协议HTTP1989年1991年在欧洲粒子物理研究所(Conseil Europen pour la Recherche Nuclaire,the European Laboratory for Particle Physics,CERN)由Tim Berners-Lee构思了万维网(Web),它的4个核心部分是HTML,HTTP,Web服务器和Web浏览器。超文本传输协议(Hypertext Transfer Protocol,HTTP)是应用层协议,它定义Web页面如何从Web服务器传送到Web浏览器。直到1997年,几乎所有Web浏览器和Web服务器都使用HTTP/1.0,该协议定义在RFC 1945中。从1998年开始Web浏览器和Web服务器开始执行HTTP/1.1,该协议定义在RFC 2068中。1. HTTP的执行过程在服务机向客户机传送文档之前,客户机和服务机需要建立TCP连接(参考下一节的介绍)。TCP连接由客户机上的Web浏览器使用URL中的域名地址(如)或者叫做服务器的地址来启动(编者已注意到URL中的这个域的英文名称很多,因此中文的名称也很多,但它们的含义都相同)。与TCP的连接一旦建立,Web浏览器就发送一个HTTP请求消息(HTTP Request Message)到这个连接上,服务器接收到请求之后就给Web浏览器回送一个HTTP响应消息(Response Message),在服务器发送响应信息之后就断开TCP连接。Web服务器和Web浏览器之间的通信如图15-14所示。图15-14 Web服务器和Web浏览器之间的通信一个典型的Web页面(Web page)由许多Web对象组成,这些对象通常存储在服务机的文件系统中。所谓Web对象是指用URL标识的HTML文件、GIF图象文件、JPEG图象文件、电视图象、声音文件或者Java小应用程序等等,Web网页本身也是Web对象。例如,Web页面可由HTML格式的文本、JPEG格式的图象和Java小应用程序组成。在传送Web网页时,传送一个对象需要建立一次TCP连接,如图15-15。图15-15 使用TCP连接传送对象当客户机接收到Web页面之后,Web浏览器就显示该网页。但不同公司开发的浏览器解释Web页面时,在客户机上显示出的格式可能会有些不相同。HTTP对如何在客户机上显示Web页面不做任何事情,HTTP仅仅定义在客户机和服务机之间如何传送数据。2. HTTP请求消息HTTP协议(RFC 1945和RFC 2068)定义了两种消息格式:HTTP请求消息(HTTP Request Message)格式和HTTP响应消息(HTTP Response Message)格式。HTTP消息请求格式如图15-16所示,如前所述,当用户点击超链接以请求Web页面时,首先与相应的Web服务器建立TCP连接,然后经TCP连接把HTTP请求消息发送给Web服务器。图15-16 HTTP请求消息格式请求消息由请求行、标题行中的各种标题域和实体主体(entity body)组成。请求行和标题行由ASCII字符组成。图中的sp域、cr域和if域分别代表空格(space)字符、回车-换行(carriage-return)字符和换行(line-feed)字符。我们先看请求行中的那些域:(1) 统一资源地址域是用户请求访问的Web页面的路径和文件名,而服务器的名称和应用层协议的名称(如http:/)是系统自动设置的。如域包含chinese/internet/search.html(2) 版本域是客户机使用的HTTP的版本号。1997年是使用HTTP/1.0(RFC 1945),1998年开始使用HTTP/1.1(RFC 2068),它向后兼容HTTP/1.0。(3) 方法域有很重要的意义,它的值描述请求的方法,两个普通的值是GET和POST: GET:如果客户请求一个Web页面就把GET写入域,在这种情况下实体主体域是空的。 POST:如果客户已经填写了一张表单,例如填写了一个搜索关键字“多媒体”或者“multimedia”,就把POST填入域,然后把这表单送给给服务器,再由服务器交给检索软件(如Yahoo)。如果方法域中的值是POST,实体主体域就包含用户写入表单域中的内容。在消息请求格式中的其余行是标题行。尽管标题行是可选择的,但客户一般都要在请求消息时插入许多标题行。每一标题行都包含两个部分:标题域名和相关的值。下面是一个使用GET方法向Web服务器请求对象的一个例子。*GET normal/html_design.html HTTP/1.1 Connection:close User-agent:Netscape Communicator/4.5Accept:text/html, image/gif, image/jpeg Accept-language:cn(extra carriage return, line feed)*这个请求消息包含一行请求行和4行标题行,整个消息共有5行ASCII文本。 请求行(GET normal/html_design.html HTTP/1.1)用来告诉服务器:浏览器使用GET方法想要得到的对象是“normal/html_design.html”,使用的应用层协议是HTTP/1.1。标题行共有4行,分别是: 标题行“Connection:close”用来告诉服务器:浏览器不想采用持续连接,在发送请求对象之后服务器就可断开连接。 标题行“User-agent:Netscape Communicator/4.5”用来告诉服务器用户代理的类型,也就是用户使用的浏览器的类型,在这个例子中的用户代理是Communicator/4.5。 标题行“Accept:text/html, image/gif, image/jpeg”用来告诉服务器浏览器准备接收对象的类型。 标题行“Accept-language:cn”用来告诉服务器如果有中文版的对象就发送中文版的对象,没有就发送服务器默认的对象。3. HTTP响应消息服务器接收到客户的HTTP请求消息(HTTP Request Message)之后进行分析,将分析和操作结果返回给客户机,具体做法就是发送一条HTTP响应消息(HTTP Response Message),然后断开相应的TCP连接。响应消息的一般格式如图15-17所示。 图15-17 HTTP响应消息格式从图中可以看到,除了状态行之外,响应消息的格式与请求消息的格式相同。实体主体(entity body)包含有请求消息要求获得的对象,即文件。除了HTTP的版本号之外,状态行还包含状态码和短语,它们组合起来表示客户请求所获得的结果。例如,如果请求文件存放在Web服务器的文件系统中,而且可发送给客户机,状态码和短语就分别包含“200”和“Document follows”(文档如下)或“OK”。如果客户机请求的文件没有得到的授权,这两个域中的值就分别为“403”和“Forbidden”(禁止),而实体主体可能有一个解释,例如“your client does not have permission to get this URL”(你的客户没有得到允许去访问这个URL)。一般情况下,3位状态码中的第1位包含一般信息。“1”表示信息码,“2”表示访问成功,“3”表示重定向(即URL已经改变),“4”表示你的请求有误,“5”Web服务器出错。当你存取某个文件时有可能看到下面的一些信息:200: 表示你的请求得到满足,信息在响应消息中返回。 301: 表示请求的对象已经被删除;新的URL放在响应消息标题中,客户的软件将自动转到新的URL.。 400: 表示服务器不能理解你的请求。 404: 表示服务器没有找到请求的文件,请求的文件不存在。 505: 表示服务器不支持浏览器请求使用的的HTTP版本号。 一个HTTP响应消息的例子如下:*HTTP/1.1 200 OK Connection: close Date: Thu, 08 Jan 1999 12:00:15 GMT Server: XXXX Last-Modified: Mon, 22 Jun 1998 09:23:24 GMT Content-Length: 3456 Content-Type: text/html data data data .*在这个例子中,除了状态行之外还包含6行标题行,而且大多数都自含解释。最后一行标题行的“data data data ”是传送的实际对象。服务器一旦发送响应消息,就断开TCP连接。如果HTML文件包含其他对象(如GIF图,JPG图象,AVI文件等),HTTP就对每个对象分别打开一个TCP连接进行传送。HTTP服务器软件不保留任何客户机的状态信息,它只是简单地接收在TCP连接上的对象请求,从文件系统中获取对象,把响应消息中的对象传送给同一TCP连接,然后断开TCP连接。由于HTTP服务器不保留客户的状态信息,所以把HTTP协议称为无状态协议(stateless protocol)。4. 条件获取使用过Web浏览器的用户可能已经知道,Web浏览器有一个功能可供用户进行设置,即把客户访问过的Web对象存放在高速缓存(cache)中,Web的高速缓存留驻在客户机上或者留驻在网络上的代理服务机(proxy server)中。浏览器的这种功能是减少已经阅读的对象的时延和减轻Web网络交通负担的一种非常重要的手段,这也是用户(特别是调制解调器用户)省钱的好办法,尤其是对网络速度很低的国家和地区显得更为重要。使用Web页面缓存有一个危险,就是留驻在缓存中的对象副本会过时,因此用户对一些经常会作修改的网页(如公告栏)需要使用浏览器界面上的刷新操作(如IE浏览器的或者网景公司的)重新获取。幸运的是HTTP有一种措施来保证递送给Web浏览器的页面是最新的,这个措施叫做条件获取(conditional GET)。如果请求消息使用GET方法并且包含If-Modified-Since(如果从之后修改)标题行,这个HTTP请求就是条件获取。 例如,一个Web浏览器希望得到一个对象,Web浏览器首先检查本机Web浏览器的缓存中是否有此对象。如果请求的对象不在缓存中,Web浏览器就使用标准的GET方法,即不包含If-Modified-Since的标题行;如果对象已经在缓存中,Web浏览器就发送一条带标题行的条件GET消息到原来的Web服务器,如,If-Modified-Since: Wed, 27 May 1998 10:15:30 GMT这行标题行表示缓存中的对象是在1998年5月27日格林尼治标准时间10:15:30存储的。当Web服务器接收到这个条件获取消息(conditional GET message)时,如果对象已经修改,就发送这个对象的拷贝给客户机,否则就给客户机发送一条对象没有被修改的响应消息。 5 HTTP/1.0与HTTP/1.1如前所述,Web服务器和Web浏览器从1998年开始执行新的协议HTTP/1.1。它是向后兼容HTTP/1.0的协议,即执行HTTP/1.0的Web浏览器能够与执行HTTP/1.1的服务器进行通信,而执行HTTP/1.1的Web浏览器能够与执行HTTP/1.0的服务器进行通信。HTTP/1.0和HTTP/1.1都有
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 矿场井下维修方案(3篇)
- 水电房屋维修方案(3篇)
- 皮毛制品仓库管理方案(3篇)
- 2025-2030年中国高端装备制造产业现状调查及未来趋势研判报告
- 媒介机构运营方案模板(3篇)
- 家具采购方案模板(3篇)
- 2025年事业单位工勤技能-山西-山西检验员三级(高级工)历年参考题库含答案解析(5套)
- 社区物业共管方案(3篇)
- 机场物业安保方案(3篇)
- 美工部门激励方案(3篇)
- 防火门、防火卷帘工程施工组织设计方案
- 职业技术学院《智慧养老照护技术》课程标准
- JGJ64-2017饮食建筑设计标准(首发)
- 临床血常规检验中质量控制
- 日喀则市重点中学2024年八年级数学第二学期期末统考试题含解析
- 血管活性药物静脉输注护理方法(中华护理学会团体标准T CNAS 22-2021)
- 如何预防和治疗肾结石
- 电子电工实训报告-大二
- 2023年国债资金管理办法
- 公路工程试验及检测收费标准
- 情归巴黎英语文本及语法详细讲解
评论
0/150
提交评论