网络应用层协议

网络应用层协议

ID:36971372

大小:39.00 KB

页数:8页

时间:2019-05-05

上传者:asd881529
网络应用层协议_第1页
网络应用层协议_第2页
网络应用层协议_第3页
网络应用层协议_第4页
网络应用层协议_第5页
资源描述:

《网络应用层协议》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

网络应用层协议.txt铁饭碗的真实含义不是在一个地方吃一辈子饭,而是一辈子到哪儿都有饭吃。就算是一坨屎,也有遇见屎壳郎的那天。所以你大可不必为今天的自己有太多担忧。15.3网络应用层协议15.3.1网络应用与应用层协议在过去的20多年中,人们已经发明了许多非常富有创造性的和奇妙的应用。例如,Web、文件传输、电子邮件、网络新闻和远程存取等等,以及现在正在构思和开发的应用,例如声音点播、网际多目标网络广播(IPmulticasting)、影视点播和因特网电话等等,这些叫做网络应用(networkingapplications)。这些网络应用通过相应的应用层协议(application-layerprotocol)来支持。例如,HTTP,FTP,SMTP,网络新闻传输协议(NetworkNewsTransferProtocol,NNTP)和Telnet等等。这些应用层协议的主要职责是把文件从一台主机传送到另一台主机,协议的主要内容是定义:(1)消息的内容,例如请求消息和响应消息。(2)各种消息类型的语法结构,也就是消息中的域(field)以及如何描述消息中的域。(3)域的语义,也就是域所包含的信息的含义。(4)确定通信程序何时发送消息和接收消息的规则。表15-03列出了流行的部分应用层协议。这些应用层协议留驻在协议堆的最高层(层5),它们依赖传输层(层4)提供两种类型的服务,一种是使用TCP的面向连接服务,另一种是使用用户数据包(UserDatagramProtocol,UDP)的无连接服务。例如,HTTP使用TCP协议提供可靠的面向连接的服务,而为多媒体应用制定的协议一般都使用UDP协议提供不可靠的服务,所谓不可靠是指不保证在传输过程不丢失信息包,出现的错误数据既不纠正也不重传。表15-03流行的部分应用层协议网络应用应用层(层5)协议传输层(层4)协议电子邮件(e-mail)SMTP(RFC821)TCP远程存取 Telnet(RFC854)TCP 万维网(WWW)HTTP(RFC2068)TCP文件传输FTP(RFC959)TCP流式多媒体(streamingmultimedia)(如RealNetwork公司的)专用协议UDP或者TCP因特网电话(Internettelephony)(如Vocaltec公司的)专用协议UDP网络应用和网络应用层协议是两个不同的概念。例如,万维网(Web,WorldWideWeb,WWW)是环球超媒体信息网,是网络应用的典范,它可让用户从Web服务器上得到文档资料,它所运行的模式叫做客户机/服务机(Client/Server)模式,如图15-12所示。Web应用主要由下面几个部分组成:①文档格式标准(如HTML),②Web浏览器(如NetscapeNavigator,InternetExplorer),③Web服务器(如Microsoft公司和Netscape公司的服务器),④应用层上的协议HTTP。Web系统是负责把以HTML语言编写的多媒体文件从运行Web服务器的服务机上传送到运行Web浏览器的客户机,而Web的超文本传输协议(HypertextTransferProtocol,HTTP)是网络应用的一小部分。又如电子邮件系统是负责把电子邮件从源端电子邮件服务器(mailserver)传送到终端电子邮件服务器,而简单邮件传输协议(SimpleMessageTransferProtocol,SMTP)是该应用系统的一部分。图15-12客户机/服务机模式因特网的许多协议都定义在征求评议文件(RequestForComments,RFC)中。例如,应用层协议HTTP/1.1定义在RFC2068中,简单邮件传输协议SMTP定义在RFC821中。随着技术的不断更新,RFC也在不断修改。RFC经过讨论和实践之后就成为标准,并用“STDXXXX”来命名。执行应用层协议的软件有两个单独的部分:一部分在服务机上运行,通常称为server(服务器),另一部分在客户机上运行。例如,执行HTTP协议的软件,在服务机上的软件叫做HTTP服务器或者叫做WWW服务器,在客户机上的软件通常称为浏览器(browser)。 许多软件包都组合了执行多种协议的应用程序。例如Microsoft公司的InternetExplorer和Netscape公司的NetscapeCommunicator就有Web浏览器、电子邮件读写器、新闻阅读器等应用程序,这样就把用户、应用程序、应用层协议和传输层协议链在一起,如图15-13所示。图15-13“用户-应用程序包-协议”链 15.3.2超文本传送协议HTTP1989年~1991年在欧洲粒子物理研究所(ConseilEuropéenpourlaRechercheNucléaire,theEuropeanLaboratoryforParticlePhysics,CERN)由TimBerners-Lee构思了万维网(Web),它的4个核心部分是HTML,HTTP,Web服务器和Web浏览器。超文本传输协议(HypertextTransferProtocol,HTTP)是应用层协议,它定义Web页面如何从Web服务器传送到Web浏览器。直到1997年,几乎所有Web浏览器和Web服务器都使用HTTP/1.0,该协议定义在RFC1945中。从1998年开始Web浏览器和Web服务器开始执行HTTP/1.1,该协议定义在RFC2068中。1.HTTP的执行过程在服务机向客户机传送文档之前,客户机和服务机需要建立TCP连接(参考下一节的介绍)。TCP连接由客户机上的Web浏览器使用URL中的域名地址(如www.tsinghua.edu.cn)或者叫做服务器的地址来启动(编者已注意到URL中的这个域的英文名称很多,因此中文的名称也很多,但它们的含义都相同)。与TCP的连接一旦建立,Web浏览器就发送一个HTTP请求消息(HTTPRequestMessage)到这个连接上,服务器接收到请求之后就给Web浏览器回送一个HTTP响应消息(ResponseMessage),在服务器发送响应信息之后就断开TCP连接。Web服务器和Web浏览器之间的通信如图15-14所示。图15-14Web服务器和Web浏览器之间的通信一个典型的Web页面(Webpage)由许多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协议(RFC1945和RFC2068)定义了两种消息格式:HTTP请求消息(HTTPRequestMessage)格式和HTTP响应消息(HTTPResponseMessage)格式。HTTP消息请求格式如图15-16所示,如前所述,当用户点击超链接以请求Web页面时,首先与相应的Web服务器建立TCP连接,然后经TCP连接把HTTP请求消息发送给Web服务器。图15-16HTTP请求消息格式请求消息由请求行、标题行中的各种标题域和实体主体(entitybody)组成。请求行和标题行由ASCII字符组成。图中的sp域、cr域和if域分别代表空格(space)字符、回车-换行(carriage-return)字符和换行(line-feed)字符。我们先看请求行中的那些域:(1)统一资源地址域是用户请求访问的Web页面的路径和文件名,而服务器的名称和应用层协议的名称(如http://)是系统自动设置的。如域包含chinese/internet/search.html(2)版本域是客户机使用的HTTP的版本号。1997年是使用HTTP/1.0(RFC1945),1998年开始使用HTTP/1.1(RFC2068),它向后兼容HTTP/1.0。(3)方法域有很重要的意义,它的值描述请求的方法,两个普通的值是GET和POST:①GET:如果客户请求一个Web页面就把GET写入域,在这种情况下实体主体域是空的。②POST:如果客户已经填写了一张表单,例如填写了一个搜索关键字“多媒体”或者“multimedia”,就把POST填入域,然后把这表单送给给服务器,再由服务器交给检索软件(如Yahoo)。如果方法域中的值是POST,实体主体域就包含用户写入表单域中的内容。在消息请求格式中的其余行是标题行。尽管标题行是可选择的,但客户一般都要在请求消息时插入许多标题行。每一标题行都包含两个部分:标题域名和相关的值。下面是一个使用GET方法向Web服务器请求对象的一个例子。**************************************** GETnormal/html_design.htmlHTTP/1.1Connection:closeUser-agent:NetscapeCommunicator/4.5Accept:text/html,image/gif,image/jpegAccept-language:cn(extracarriagereturn,linefeed)****************************************这个请求消息包含一行请求行和4行标题行,整个消息共有5行ASCII文本。请求行(GETnormal/html_design.htmlHTTP/1.1)用来告诉服务器:浏览器使用GET方法想要得到的对象是“normal/html_design.html”,使用的应用层协议是HTTP/1.1。标题行共有4行,分别是:①标题行“Connection:close”用来告诉服务器:浏览器不想采用持续连接,在发送请求对象之后服务器就可断开连接。②标题行“User-agent:NetscapeCommunicator/4.5”用来告诉服务器用户代理的类型,也就是用户使用的浏览器的类型,在这个例子中的用户代理是Communicator/4.5。③标题行“Accept:text/html,image/gif,image/jpeg”用来告诉服务器浏览器准备接收对象的类型。④标题行“Accept-language:cn”用来告诉服务器如果有中文版的对象就发送中文版的对象,没有就发送服务器默认的对象。3.HTTP响应消息服务器接收到客户的HTTP请求消息(HTTPRequestMessage)之后进行分析,将分析和操作结果返回给客户机,具体做法就是发送一条HTTP响应消息(HTTPResponseMessage),然后断开相应的TCP连接。响应消息的一般格式如图15-17所示。图15-17HTTP响应消息格式从图中可以看到,除了状态行之外,响应消息的格式与请求消息的格式相同。实体主体(entity body)包含有请求消息要求获得的对象,即文件。除了HTTP的版本号之外,状态行还包含状态码和短语,它们组合起来表示客户请求所获得的结果。例如,如果请求文件存放在Web服务器的文件系统中,而且可发送给客户机,状态码和短语就分别包含“200”和“Documentfollows”(文档如下)或“OK”。如果客户机请求的文件没有得到的授权,这两个域中的值就分别为“403”和“Forbidden”(禁止),而实体主体可能有一个解释,例如“yourclientdoesnothavepermissiontogetthisURL”(你的客户没有得到允许去访问这个URL)。一般情况下,3位状态码中的第1位包含一般信息。“1”表示信息码,“2”表示访问成功,“3”表示重定向(即URL已经改变),“4”表示你的请求有误,“5”Web服务器出错。当你存取某个文件时有可能看到下面的一些信息:200:表示你的请求得到满足,信息在响应消息中返回。301:表示请求的对象已经被删除;新的URL放在响应消息标题中,客户的软件将自动转到新的URL.。400:表示服务器不能理解你的请求。404:表示服务器没有找到请求的文件,请求的文件不存在。505:表示服务器不支持浏览器请求使用的的HTTP版本号。一个HTTP响应消息的例子如下:****************************************HTTP/1.1200OKConnection:closeDate:Thu,08Jan199912:00:15GMTServer:XXXXLast-Modified:Mon,22Jun199809:23:24GMT Content-Length:3456Content-Type:text/htmldatadatadata...****************************************在这个例子中,除了状态行之外还包含6行标题行,而且大多数都自含解释。最后一行标题行的“datadatadata……”是传送的实际对象。服务器一旦发送响应消息,就断开TCP连接。如果HTML文件包含其他对象(如GIF图,JPG图象,AVI文件等),HTTP就对每个对象分别打开一个TCP连接进行传送。HTTP服务器软件不保留任何客户机的状态信息,它只是简单地接收在TCP连接上的对象请求,从文件系统中获取对象,把响应消息中的对象传送给同一TCP连接,然后断开TCP连接。由于HTTP服务器不保留客户的状态信息,所以把HTTP协议称为无状态协议(statelessprotocol)。4.条件获取使用过Web浏览器的用户可能已经知道,Web浏览器有一个功能可供用户进行设置,即把客户访问过的Web对象存放在高速缓存(cache)中,Web的高速缓存留驻在客户机上或者留驻在网络上的代理服务机(proxyserver)中。浏览器的这种功能是减少已经阅读的对象的时延和减轻Web网络交通负担的一种非常重要的手段,这也是用户(特别是调制解调器用户)省钱的好办法,尤其是对网络速度很低的国家和地区显得更为重要。使用Web页面缓存有一个危险,就是留驻在缓存中的对象副本会过时,因此用户对一些经常会作修改的网页(如公告栏)需要使用浏览器界面上的刷新操作(如IE浏览器的或者网景公司的)重新获取。幸运的是HTTP有一种措施来保证递送给Web浏览器的页面是最新的,这个措施叫做条件获取(conditionalGET)。如果请求消息使用GET方法并且包含If-Modified-Since(如果从…之后修改)标题行,这个HTTP请求就是条件获取。例如,一个Web浏览器希望得到一个对象,Web浏览器首先检查本机Web浏览器的缓存中是否有此对象。如果请求的对象不在缓存中,Web浏览器就使用标准的GET方法,即不包含If-Modified-Since的标题行;如果对象已经在缓存中,Web浏览器就发送一条带标题行的条件GET消息到原来的Web服务器,如,If-Modified-Since:Wed,27May199810:15:30GMT这行标题行表示缓存中的对象是在1998年5月27日格林尼治标准时间10:15:30存储的。当Web服务器接收到这个条件获取消息(conditionalGETmessage)时,如果对象已经修改,就发送这个对象的拷贝给客户机,否则就给客户机发送一条对象没有被修改的响应消息。5HTTP/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都有非持续连接(non-persistentconnection)和持续连接(persistentconnection)功能。非持续连接是指启动一次TCP连接服务机就向客户机传送一个对象,而持续连接是指服务机可在相同的TCP连接上向客户机发送多个对象。HTTP/1.0的默认设置是非持续连接,而HTTP/1.1的默认设置是持续连接。在使用HTTP/1.0的情况下,如果打开一个包含一个HTML文件和10个内联图象对象的网页时,HTTP就要建立11次TCP连接才能把文件从服务机传送到客户机。而使用HTTP/1.1的情况下,如果打开同样的文件时,HTTP建立一次TCP连接就可把文件从服务机传送到客户机。使用一次TCP连接传送一个对象的效率比较低,这体现在下列几个方面:(1)每次TCP连接必需要建立和断开。客户机和服务机建立一次连接需要执行三向沟通连接法(three-wayhandshake),服务机在对象递送之后要断开TCP连接。在建立和断开连接时要占用CPU的资源。如果使用一次连接代替11次连接的话,占用客户机和服务机的CPU时间可大大减少。(2)对每次连接,客户机和服务机都必须分配发送和接收缓存。这就意味着要影响客户机和服务机的存储器资源,这同样要占用CPU的时间。(3)对由大数量对象组成的文件,TCP的低速启动算法(slowstart-upalgorithm)会限制服务机向客户机传送对象的速度。使用HTTP/1.1之后,大多数对象都可以尽最大的速率传送。由于HTTP/1.1允许持续连接,文件中的所有对象都可在相同的TCP连接上传送。HTTP/1.1也允许在客户机接收到服务机的消息响应之前发送多个消息请求,这叫做流水线式请求(pipelinedrequest)。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭