简单对象访问协议SOAP原理及抓包分析Word下载.docx
《简单对象访问协议SOAP原理及抓包分析Word下载.docx》由会员分享,可在线阅读,更多相关《简单对象访问协议SOAP原理及抓包分析Word下载.docx(28页珍藏版)》请在冰豆网上搜索。
6SOAP抓包分析实验25
7结论29
致谢30
参考文献31
摘 要
SOAP(SimpleObjectAccessProtocol),它是一种标准消息传递协议,通常是WebService的事实标准。
SOAP规范描述了四个主要的构件.使用信封形式的封装数据和路由路径的格式化规范,传输或是绑定协议,编码规则,RPC调用机制.信封定义一个为描述消息内容的规范,这个消息有一种轮流排队处理的含义.协议绑定能够使用低级别的HTTP协议传递SOAP消息提供一个一般的机制.编码规则提够一种规范为了映射各种各样应用数据到基于标签表现的TAG。
最后RPC机制提够了一种表示远程调用和他们返回值的方法。
网络中,不管你的Webservice是用什么工具,什么语言写出来的,只要你用SOAP协议通过HTTP来调用它,总体结构都一致。
通常,你用你自己喜欢的语言(如VB6或者VB.NET)来构建你的Webservice,然后用SOAPToolkit或者.NET的内建支持来把它暴露给Web客户。
于是,任何语言,任何平台上的客户都可以阅读其WSDL文档,以调用这个Webservice。
客户根据WSDL描述文档,会生成一个SOAP请求消息。
Webservice都是放在Web服务器(如IIS)后面的,客户生成的SOAP请求会被嵌入在一个HTTPPOST请求中,发送到Web服务器来。
Web服务器再把这些请求转发给Webservice请求处理器。
请求处理器的作用在于,解析收到的SOAP请求,调用Webservice,然后再生成相应的SOAP应答。
Web服务器得到SOAP应答后,会再通过HTTP应答的方式把它送回到客户端。
关键字:
RFC,WebService,HTTP,WSDL
Abstract
SOAP(SimpleObjectAccessProtocol),whichisastandardmessagingprotocol,communication.IsoftenthedefactostandardWebService.
SOAPspecificationdescribesfourmaincomponents.Usetheenvelopeformsofpackagingandroutingpathdataformatspecifications,transmissionorbindingagreement,codingrules,RPCcallmechanism.Envelopetodefineastandardfordescribingthemessagecontent,thenewsThereisarotationqueueprocessingmeans.protocolbindingstotheHTTPprotocolusinglow-levelSOAPmessagepassedtoprovideageneralmechanism.encodingrulesprovideenoughofastandardapplicationformappingdatatoavarietyoflabelsbasedontheperformanceofTAG.Finally,aRPCmechanismtoprovideenoughdistancecallandtheysaidthemethodreturnvalue.
WhetheryourWebserviceiswhattools,whatlanguagetowriteout,aslongasyouuseSOAPprotocolviaHTTPtocallit,areconsistentwiththeoverallstructure.Typically,youuseyourownpreferredlanguage(suchasVB6orVB.NET)tobuildyourWebservice,thenusetheSOAPToolkitor.NET'
sbuilt-insupporttoexposeittotheWebclient.Thus,anylanguage,anyplatform,customerscanreadtheWSDLdocumenttocalltheWebservice.CustomersundertheWSDLdescriptiondocument,willgenerateaSOAPrequestmessage.WebserviceareontheWebserver(suchasIIS)later,thecustomergeneratestheSOAPrequestwillbeembeddedinaHTTPo?
ö
Nù
[Ý
‹"
_„v¹
e__ø
v’N_Œ(u
ÿ
Sb4x†No?
N”^(u_0QÙ
zŒT_TÍ
y¾
‹_YKNô
•„v<
h<
hNeQ„v¶
r_`
ž[°
s"
_ú
WŽNW_E_B_à
e_Æ
–_b"
_„vî
v_h_0_W_e_b_g¡
R/f_bì
Ný
€Yù
[à
VyrQ_bQÜ
~N„v_N*Nù
[aŒÛ
?
LˆÜ
z_Œ(uR_P_C__ÿ
R_e_m_o_t_e__P_r_o_c_e_d_u_thengeneratetheappropriateSOAPresponse.WebservertogettheSOAPresponse,willthenrespondbywayofHTTPsenditbacktotheclient.bbs.bitsCN.comChinaWebmasterForum
KEYWORDS:
RFC,WebService,HTTP,WSDL
1引言
随着计算机技术的不断发展,现代企业面临的环境越来越复杂,其信息系统大多数为多平台、多系统的复杂系统。
这就要求今天的企业解决方案具有广泛的兼容能力,可以支持不同的系统平台、数据格式和多种连接方式,要求在Internet环境下,实现系统是松散耦合的、跨平台的,与语言无关的,与特定接口无关的,而且要提供对Web应用程序的可靠访问。
随着异种计算环境的不断增加,各种系统间的互操作性就愈显得必要,要求系统能够无缝地进行通信和共享数据,从而在Internet环境下,消除巨大的信息孤岛,实现信息共享、进行数据交换,达到信息的一致性。
Webservices希望实现不同的系统之间能够用"
软件-软件对话"
的方式相互调用,打破了软件应用、网站和各种设备之间的格格不入的状态,实现"
基于WEB无缝集成"
的目标。
Web服务是我们能够对因特网或网络上的一个对象进行远程调用RPC(RemoteProcedureCall)。
Web服务使用中性平台标准(例如:
HTTP和XML),这使我们可以对客户完全隐藏执行任务的细节,客户只需要知道这个服务的URL或方法调用使用的数据类型,而不需要知道该任务到底是一个在Linux上运行的还是一个在Windows上运行的用Java编程的ASP.NET服务。
本论文中所研究的就是网络中SOAP协议的应用,主要是更深刻的理解SOAP协议在网络中客户端和服务器端进行通信,信息交流的过程中如何实现,相对于其他协议有哪些优点。
而对于Web服务来讲,SOAP协议又有何独特的意义。
2概论
2.1WebService简介
Web服务(WebService)是基于XML和HTTPS的一种服务,其通信协议主要基于SOAP,服务的描述通过WSDL,通过UDDI来发现和获得服务的元数据。
Webservice到底是什么;
在什么情况下你应该使用Webservice。
分布式应用程序和浏览器
研究一下当前的应用程序开发,你会发现一个绝对的倾向:
人们开始偏爱基于浏览器的受客户应用程序。
这当然不是因为受客户能够提供更好的用户界面,而是因为它能够避免花在桌面应用程序发布上的高成本。
发布桌面应用程序成本很高,一半是因为应用程序安装和配置的问题,另一半是因为客户和服务器之间通信的问题。
传统的Windows富客户应用程序使用DCOM来与服务器进行通信和调用远程对象。
配置好DCOM使其在一个大型的网络中正常工作将是一个极富挑战性的工作,同时也是许多IT工程师的噩梦。
事实上,许多IT工程师宁愿忍受浏览器所带来的功能限制,也不愿在局域网上去运行一个DCOM。
在我看来,结果就是一个发布容易,但开发难度大而且用户界面极其受限的应用程序。
极端的说,就是你花了更多的资金和时间,却开发出从用户看来功能更弱的应用程序。
不信?
问问你的会计师对新的基于浏览器的会计软件有什么想法:
绝大多数商用程序用户希望使用更加友好的Windows用户界面。
关于客户端与服务器的通信问题,一个完美的解决方法是使用HTTP协议来通信。
这是因为任何运行Web浏览器的机器都在使用HTTP协议。
同时,当前许多防火墙也配置为只允许HTTP连接。
Web服务(WebServiceWS)通常指通过Web提供的各种服务。
一个典型的WS过程是:
一个业务应用通过使用HTTP的SOAP协议向某个指定URL上的一个服务发出请求,这个服务接受并且处理该请求后返回一个响应。
一个经常被引用的例子是股票报价服务,服务的请求是询问某股票的当前价格,服务的响应是该股票的价格。
这是最简单的WS例子,其请求几乎瞬间即可被满足,请求和响应是同一个方法调用的不同组成部分。
另外一个例子是指定货物高校配送线路的服务。
其中,商店发出的请求中包含递送的目的地,服务经过处理后确定成本最低的配送线路。
返回响应的时间取决于线路的复杂程度,因此有可能发送和相应的操作与请求分开进行。
WS和WS的消费者通常都是交易者,这使得WS的主流是企业对企业(B2B)间的业务处理。
一个企业有可能使某些WS的提供者,同时又是其他WS的消费者。
例如:
对于一个香料批发企业,当他使用WS核对香草豆是否有活的时候,其角色时WS的消费者;
当他把不同卖主的价格提供给未来消费者的时候,其角色又是WS的提供者。
2.2WS的体系结构
总的来说WebService的体系结构由简单对象访问模型而来,把所有的应用实体都抽象成服务,包括三个角色和三种基本此操作:
三个角色如下:
服务提供者(ServiceProvide):
从商务角度看,它是指服务的所有者,从体系结构上来看,它是指提供服务的平台。
服务请求者(ServiceRequester):
从商务角度看,它是指需要请求特定功能的企业,从体系结构看,它是指查找和调用服务的客户端应用程序。
服务代理(ServiceBroker):
它是指用来存储服务描述信息的信息仓库(Repository)。
它负责为服务提供方发布服务,为服务请求方查找服务,并且将获取服务的信息绑定给请求方。
三种基本操作如下:
发布(Publish):
服务提供者需要将服务进行一定的描述并发布到注册服务器上。
在发布操作中,服务提供者需要通过注册服务器的神恩验证才能对服务描述信息进行发布和修改。
查找(Find):
服务请求方根据注册服务器提供的规范接口发出查询请求,从而获取所需服务的相关信息。
在查找操作中,一般有两种查找模式。
一种是浏览模式(BrowsePattern),及服务请求方可以根据通用的分类标准来浏览或者通过一些关键词来搜索,逐步缩小查找的范围,直到找到满足需要的服务,其查找结果是一系列服务的集合。
另一种是直接获取模式(DrillDownPattern),即通过惟一的关键词直接得到特定服务的描述信息,其查找结果是唯一的。
绑定(Bind):
服务请求方通过分析从注册服务器中得到的服务绑定信息,例如服务访问路径、服务调用的参数、返回结果、传输协议、安全要求等,对自己的系统进行相应配置,进而可远程调用服务提供者所提供的服务。
对应上述三种操作,给出了三种标准如下:
SOAP(SimpleObjectAccessProtocol,简单对象访问协议),它实现的是低层协议,定义了服务请求者和服务提供者之间的消息传输规范。
SOAP用XML描述信息,用HTTP承贷消息。
SOAP包括四部分:
一是封皮,定义了描述消息和如何处理消息的框架;
二是表达应用程序定义的数据类型实例的编码规则(SOAP编码规则);
三是SOAPRPC表示,定义远程过程调用和应答的协议;
四是SOAP绑定(Bind),定义法如何使用底层传输协议进行SOAP消息的交换。
WSDL(WebServicesDescriptionLanguage,Web服务描述语言),它是Microsoft公司的SDL(ServicesDescriptionLanguage)、IBM公司的NASSL(Network-AccessibleServicesSpecificationLanguage)合并后被W3C接纳所形成的标准。
WSDL为服务提供者提供以XML格式描述WS请求的标准格式,将网络服务描述为能够进行消息交换的通信端点的集合,以表达一个WS能做什么,它的位置在哪里,如何调用它等。
UDDI(UniversalDiscover、Description、Integration通用发现、描述、集成)它是在原有Microsoft提供的DISCO(DiscriptionofWebServices)和IBM提出的。
2.3Web服务
Web服务是提供由HTML等语言描述的信息,Web浏览器是为了将这些信息提取出来在客户端运行的软件。
互联网是Web服务器的集合体。
从表面上看,Webservice就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。
这就是说,你能够用编程的方法通过Web来调用这个应用程序。
我们把调用这个Webservice的应用程序叫做客户。
例如,你想创建一个Webservice,它的作用是返回当前的天气情况。
那么你可已建立一个ASP页面,它接受邮政编码作为查询字符串,然后返回一个由逗号隔开的字符串,包含了当前的气温和天气。
要调用这个ASP页面,客户端需要发送下面的这个HTTPGET请求:
Webservice更精确的解释:
Webservices是建立可互操作的分布式应用程序的新平台。
作为一个Windows程序员,你可能已经用COM或DCOM建立过基于组件的分布式应用程序。
COM是一个非常好的组件技术,但是我们也很容易举出COM并不能满足要求的情况。
Web的服务器软件成为Web服务器软件,这种为了通过HTTP进行交换的后台程序也称为HTTPd(HTTPdaemon)。
如表2-1
表2-1Web服务器软件
Web服务器软件
运行环境
说明
IIS(InternetInformationSerber)
WindowsNT/2000Serber
是在Windows系列网络OS的NT或2000上运行的Web服务器软件同OS捆绑在一起或者实地安装提供ASP环境的服务器有增加的倾向
Apache
主要是UNIX系列的OS(也有对应于WindowsNT/2000/98/Me)
是以NCSAHTTPd的1.3版本为基础,进行了各种各样的功能扩展而发布了的Web服务器软件之一
3SOAP协议
3.1SOAP协议
今年四月份的时候,W3C联盟召开了第一次Web服务专题研讨会,目的为探索W3C应向哪个方向发展才能实现新兴的Web服务架构的标准化,期间提出了一个"
Web服务堆栈"
的构想,如下图,从图中可以看出,SOAP在WEB服务堆栈中作为用于XML消息传递的一种非常普遍的协议,发挥着十分重要的作用。
图3-1SOAP在WEB服务堆栈中的作用
3.2SOAP消息
1.第一个例子阐明了SOAP中一个简单的通信信息,包括了两个不是SOAP定义而是应用程序定义的元素:
头块元素alertcontrol和体块元素alert。
头块元素包括两个参数:
priority和expires。
体块元素包括的是实际传送的信息。
图3-2SOAP中一个简单的通信信息
2.SOAP通信与底层的不同协议和不同的交换格式有关,下面的例子SOAP使用HTTP作为底层通信协议,从而可以很好的使用request/response机制来传送信息。
SOAP/HTTP请求包括一个GetLastTradePrice的块元素,该请求携带一个字符串参数和ticker符号,在SOAP应答中返回一个浮点数。
XML名域用来区分SOAP标志符和应用程序特定的标志符。
图3-3使用HTTP作为底通信协议
3.例3展示的是StockQuoteSOAP服务信息,是对例2的请求作出的一条应答消息。
图3-4对于请求作出的一条应答消息
3.3SOAP=RPC+HTTP+XML
SOAP简单的理解,就是这样的一个开放协议SOAP=RPC+HTTP+XML:
采用HTTP作为底层通讯协议;
RPC作为一致性的调用途径,XML作为数据传送的格式,允许服务提供者和服务客户经过防火墙在INTERNET进行通讯交互。
RPC的描叙可能不大准确,因为SOAP一开始构思就是要实现平台与环境的无关性和独立性,每一个通过网络的远程调用都可以通过SOAP封装起来,包括DCE(DistributedComputingEnvironment) RPCCALLS,COM/DCOMCALLS,CORBACALLS,JAVACALLS,etc。
SOAP使用HTTP传送XML,尽管HTTP不是有效率的通讯协议,而且XML还需要额外的文件解析(parse),两者使得交易的速度大大低于其它方案。
但是XML是一个开放、健全、有语义的讯息机制,而HTTP是一个广泛又能避免许多关于防火墙的问题,从而使SOAP得到了广泛的应用。
但是如果效率对你来说很重要,那么你应该多考虑其它的方式,而不要用SOAP。
为了更好的理解SOAP,HTTP,XML如何工作的,不妨先考虑一下COM/DCOM的运行机制,DCOM处理网络协议的低层次的细节问题,如PROXY/STUB间的通讯,生命周期的管理,对象的标识。
在客户端与服务器端进行交互的时候,DCOM采用NDR(NetworkDataRepresentation)作为数据表示,它是低层次的与平台无关的数据表现形式。
DCOM是有效的,灵活的,但也是很复杂的。
而SOAP的一个主要优点就在于它的简单性,SOAP使用HTTP作为网络通讯协议,接受和传送数据参数时采用XML作为数据格式,从而代替了DCOM中的NDR格式,SOAP和DCOM执行过程是类似的,但是用XML取代NDR作为编码表现形式,提供了更高层次上的抽象,与平台和环境无关。
客户端发送请求时,不管客户端是什么平台的,首先把请求转换成XML格式,SOAP网关可自动执行这个转换。
为了保证传送时参数,方法名,返回值的唯一性,SOAP协议使用了一个私有标记表,从而服务端的SOAP网关可以正确的解析,这有点类似于COM/DCOM中的桩(STUB)。
转化成XML格式后,SOAP终端名(远程调用方法名)及其他的一些协议标识信息被封装成HTTP请求,然后发送给服务器。
如果应用程序要求,服务器返回一个HTTP应答信息给客户端。
与通常对HTML页面的HTTPGET请求不同的是,此请求设置了一些HTTPHEADER,标识着一个SOAP服务激发,和HTTP包一起传送。
对于一个询问股票价格的应用程序,服务器端具有组件提供某股票当前的价格,组件是COM或CORBA在服务器上建立的。
客户端发送一个SOAP请求给服务器询问股票价格。
服务器依赖于服务器上的SOAP网关,使用内嵌的HTML对象调用合适的方法,然后把得到的价格通过SOAP应答传给客户端。
3.4XML和HTML的差异
XML和HTML的不同可以归纳为3点:
1)XML扩展性比HTML强
XML(ExtensibleMarkupLanguages)是扩展标记语言的英语缩写,他可以创建个性化的标记语言,可以称之为元语言。
XML的标记语言可以自定义,这样可以提供更多的数据操作,而不像HTML一样,只能局限于按一定的格式在终端显示出来。
HTML的功能只有浏览器放入显示和打印,仅仅适合静态网页的要求。
2)XML的语法比HTML严格
由于XML的扩展性强,它需要稳定的基础规则来支持扩展。
它的严格规则为:
1、起始和结束的标签相匹配
2、嵌套标签不能相互嵌套
3、区分大小写
相对应XML的严格规则,HTML语言并没有规定标签的绝对位置,也不区分大小写,而这些全部由浏览器来完成识别和更正。
3)XML与HTML互补
XML可以获得应用之间的相应信息,提供终端的多项处理要求,也能被其他的解析器和工具所使用,在现阶段,XML可以转化成相应的HTML,来适应当前浏览器的需求。
XML工具
XML如果有一个好的编辑器就能够减少很多麻烦
3.5SOAP的前景
W3C于2000年5月8日发表了SimpleObjectAccessProtocol(SOAP)1.1版本,具体规范发布在下列