1、2022-12-1分布式通信分布式通信分布式通信分布式通信主要内容主要内容2.1 通信基础2.2 客户/服务器模型2.3 套接字socket 2.4 远程过程调用2.5 Web Service 2.6 消息队列 2.7 分布式对象2.8 组通信分布式通信主要内容主要内容2.1 通信基础通信基础2.2 客户/服务器模型2.3 套接字socket 2.4 远程过程调用2.5 Web Service 2.6 消息队列 2.7 分布式对象2.8 组通信分布式通信2.1 通信基础通信基础l开放式系统:使用标准化规则与其它开放系统通信的系统 l协议:进程间通信所必须遵循的规则,消息的格式、内容和意义l协议
2、的种类面向连接、非面向连接l分层协议ISO OSI参考模型Internet分布式通信OSI参考模型分层协议参考模型分层协议进程A进程B分布式通信The Internet 协议协议NetworkIPTCP UDPApplicationTransportDatagramsMessages(UDP)Streams(TCP)分布式通信典型消息结构典型消息结构分布式通信网络技术的发展(网络技术的发展(1)l分组交换协议Dr.L.Kleinrock(MIT),1962lTCP/IP协议R.Kahn(MIT,ARPA),V,Cerf(UCB,Stanford),IEEE通信974lCDMA协议与Ethern
3、etDr.B.Metcalfe(HU,MIT,PARC),19733COM,以太网适配器分布式通信网络技术的发展(网络技术的发展(2)lARPANET与InternetIPTO,Dr.J.Licklider(1960),Dr.B.Taylor(1966)Dr.L.Roberts(MIT),BBN公司ARPANET(1969,UCB,SRI)lStanford校园网与LANL.Bosack,S.Lerner(Stanford),1980-1983Cisco(1984),Cisco路由器分布式通信ATM网络技术网络技术l分组交换、线路交换和信元交换l信元(cell):小的、定长的单元l信元交换:同
4、时支持点到点(point-point)和多播(multicast)功能分布式通信ATM参考模型参考模型l物理层:SONETOC-1(51.8M),OC-3c(155M)lATM层:信元传输和路由l适配层:VBR,CBR上面各层适配层ATM层物理层分布式通信信元头格式信元头格式分布式通信ATM交换网络及交换机内部构造交换网络及交换机内部构造分布式通信主要内容主要内容2.1 通信基础2.2 客户客户/服务器模型服务器模型2.3 套接字socket 2.4 远程过程调用2.5 Web Service 2.6 消息队列 2.7 分布式对象2.8 组通信分布式通信2.2 客户客户/服务器模型服务器模型v
5、 服务器:为用户提供服务的一组协同进程v 客户:代理用户分布式通信客户客户/服务器服务器(1-1)ServerClientClientinvocationresultServerinvocationresult分布式通信客户客户-服务器交互服务器交互(I)Remote procedure call分布式通信客户客户-服务器交互服务器交互(II)多层结构分布式通信客户客户-服务器交互服务器交互(III)异步 remote procedure call分布式通信客户客户/服务器服务器(1-N)分布式通信Example:Web proxy server分布式通信客户客户-服务器交互服务器交互(IV)
6、分布式通信Peer-to-Peer 合作合作分布式通信Mobile Code Example:Applet分布式通信瘦客户瘦客户ThinClientApplicationProcessNetwork computer or PCCompute servernetwork分布式通信消息格式消息格式struct message long source;/*发送者标识发送者标识*/long dest;/*接受者标识接受者标识*/long opcode;/*操作码:读、写、创建、删除操作码:读、写、创建、删除*/long result;/*返回结果代码返回结果代码:成功、失败:成功、失败*/long
7、offset;/*读写位置读写位置*/long count;/*读写计数读写计数*/char filenameMAX_PATH;/*文件名文件名*/char dataBUF_SIZE;/*数据区数据区*/分布式通信服务器程序服务器程序void main(void)struct message m1,m2;/*输入、输出的消息输入、输出的消息*/int r;/*返回的执行结果返回的执行结果*/while(1)receive(FILE_SERVER,&m1);/*等待客户请求等待客户请求*/case(m1.opcode)/*执行请求的操作执行请求的操作*/case READ:r=do_read(&
8、m1,&m2);break;:default:r=E_BAD_OPCODE;m2.result=r;send(m1.source,&m2);/*返回结果返回结果*/分布式通信客户程序客户程序int read(char*file,int position,int nbytes,char*buf)struct message m1;/*消息缓冲区消息缓冲区*/m1.opcode=READ;/*设置参数设置参数*/m1.offset =position;/*读位置读位置*/m1.count =nbytes;/*读长度读长度*/strcpy(&m1.filename,src)/*文件名文件名*/sen
9、d(FILE_SERVER,&m1);/*发送请求发送请求*/receive(CLIENT,&m1);/*等待服务器应答等待服务器应答*/if(m1.result=OK)strcpy(buf,&m1.data);/*置缓冲区置缓冲区*/return(m1.result);/*返回结果返回结果*/分布式通信寻址方式寻址方式(Addressing)1、机器号+本地标识号例:UNIX机器IP地址端口号(port)/*Socket address,internet style.*/struct sockaddr_in short sin_family;/*AF_INET*/u_short sin_po
10、rt;struct in_addr sin_addr;char sin_zero8;分布式通信2、广播定位进程全局唯一标识号分布式通信3、ASCII码进程名名字服务器分布式通信阻塞与非阻塞原语(1)阻塞发送原语 同步原语(2)非阻塞发送原语 异步原语在消息被发送之前,发送者不能修改消息缓冲区 时间时间时间时间分布式通信有缓冲与无缓冲型接收有缓冲与无缓冲型接收l无缓冲区发送比接收先发生?直接丢弃消息暂存“意外”消息l有缓冲区邮箱(mailbox):缓存所有的输入消息“溢出”问题分布式通信可靠的和非可靠的发送和接收可靠的和非可靠的发送和接收l非可靠的收发可能丢失消息由用户负责确认l独立的确认消息内
11、核-内核确认l应答用作请求的确认消息客户内核确认折衷方法l服务器端设置计时器,超时后,发确认消息分布式通信分布式通信实现技术小结实现技术小结项目选择1选择2 选择3寻址机器+进程共享进程地址ASCII名字通过服务器查找阻塞阻塞原语具有拷贝到核的非阻塞 具有中断的非阻塞原语无缓冲,丢弃不期望的消息无缓冲,临时保持不期望的消息邮箱可靠性非可靠请求-应答确认分布式通信客户客户/服务器协议中的包类型服务器协议中的包类型代码包类型来源至说明REQ请求客户服务器客户要求服务REP应答服务器客户服务器对客户的应答ACK确认服务器、客户其他前面的包已到达AYA你在这里吗?客户服务器查看服务器是否崩溃IAA我在
12、这里服务器客户服务器没有崩溃TA再试一次?服务器客户服务器没有空间AU地址未知服务器客户没有进程在使用此地址分布式通信包交换举例包交换举例分布式通信主要内容主要内容2.1 通信基础2.2 客户/服务器模型2.3 套接字套接字socket 2.4 远程过程调用2.5 Web Service 2.6 消息队列 2.7 分布式对象2.8 组通信分布式通信2.3 套接字套接字socket socket通信的基本原理 socket通信的工作过程分布式通信l 一个socket在逻辑上有三个特征(三要素):网域类型规程分布式通信l网域:表明一个socket用于哪一种网络或说哪一族网络规程。各种网络对节点地址
13、的命名方法不同,又称“地址族”或“规程族”。AF_INET表示Internet网插口,故各节点使用IP地址。AF_IPX为Novell的IPX网插口,AF_X25为X.25网插口,等等。其中的特殊,不走网络而在同 一 台 计 算 机 上 用 于 进 程 通 信,B S D 称 为A F _ U N I X,在 P O S I X 标 准 里 定 义 了 一 种AF_LOCAL域名。分布式通信l类型:表明网络中通信所遵循的模式“面向连接”:又叫“虚电路”模式,通信双方先要在互相之间建立起一种虚拟连接(线路),再通过虚拟线路进行通信。在通信过程中,所有报文传递保持原来次序,所以,报文之间是有关联的
14、,每个报文都不是孤立的。在这种模式中,所有报文的传递都是可靠的,由网络中物理线路引入差错控制来保证。“无连接”:事先不必建立虚线路,直接可发送和接收报文。但报文是孤立的,正确性没有保证,甚至可能丢失。由于网络延迟或路径不同,接收端收到报文的次序可能与发送端发送报文的次序不一样。这种模式传递的报文是不可靠的,无保证的。也没有“流量控制”手段,进程从系统调用返回时仅表明该socket会把报文发送去,并不表明报文已到达了接收方的socket。分布式通信l规程:表明具体网络规程。一般来说,网域与类型结合作一起就大体上决定了规程。如网域为AF_INET,而类型为“无连接”,则规程大致为UDP了。但有时,
15、还会有其他选择。分布式通信Berkeley Sockets APIlSocket primitives for TCP/IP.PrimitiveMeaningSocketCreate a new communication endpointBindAttach a local address to a socketListenAnnounce willingness to accept connectionsAcceptBlock caller until a connection request arrivesConnectActively attempt to establish a co
16、nnectionSendSend some data over the connectionReceiveReceive some data over the connectionCloseRelease the connection分布式通信基本的基本的socket调用调用recvsendsocketbindlocalhostsockaddr_in()listenacceptpeersockaddr_in()socketconnectrecvsendpeersockaddr_in()SERVERCLIENT分布式通信 服务器方客户方socket()建立数据报式套接字,返回套接字号socket
17、()建立数据报式套接字,返回套接字号bind()把套接字s与本地地址相连接bind()把套接字s与本地地址相连接recvfrom()/sendto()在s上读写数据,直至结束recvfrom()/sendto()在s上读写数据,直至结束closesocket()关闭套接字,服务结束closesocket()关闭套接字,结束对话无连接协议的套接字调用时序分布式通信 面向连接的套接字调用时序accept()接收连接,并得到第二个套接字nsrecev()/send()在ns上读写数据,直到结束Closesocket()关闭套接字s,结束TCP/IP对话服务器方客户方socket()建立流式套接字,返
18、回套接字号sbind()把套接字s与本地地址相连listen()通知TCP/IP,服务器准备好接收连接closesocket()关闭套接字nsclosesocket()关闭最初套接字ssocket()建立流式套接字,返回套接字号sconnect()把套接字s与远程主机相连send()/recev()在ns上读写数据,直到结束建立连接服务请求服务响应分布式通信Berkeley Sockets调用调用 lConnection-oriented communication pattern using sockets.分布式通信数据流数据流(1)lSetting up a stream between
19、 two processes across a network.分布式通信数据流数据流(2)lSetting up a stream directly between two devices.分布式通信数据流数据流(3)lAn example of multicasting a stream to several receivers.分布式通信定义定义 QoS(1)lA flow specification.Characteristics of the InputService Requiredmaximum data unit size(bytes)Token bucket rate(byt
20、es/sec)Toke bucket size(bytes)Maximum transmission rate(bytes/sec)Loss sensitivity(bytes)Loss interval(sec)Burst loss sensitivity(data units)Minimum delay noticed(sec)Maximum delay variation(sec)Quality of guarantee分布式通信定义定义 QoS(2)lThe principle of a token bucket algorithm.分布式通信配置流配置流lThe basic orga
21、nization of RSVP for resource reservation in a distributed system.分布式通信同步机制同步机制(1)lThe principle of explicit synchronization on the level data units.分布式通信同步机制同步机制(2)lThe principle of synchronization as supported by high-level interfaces.2-41分布式通信主要内容主要内容2.1 通信基础2.2 客户/服务器模型2.3 套接字socket 2.4 远程过程调用远程
22、过程调用2.5 Web Service 2.6 消息队列 2.7 分布式对象2.8 组通信分布式通信2.4 远程过程调用远程过程调用l允许程序去调用位于其它机器上的过程 调用者和被调者都不用考虑消息通信l举例:int read(int fd,char*buf,int nbytes);count=read(fd,buf,nbytes);l参数传递call-by-valuecall-by-reference分布式通信传统的过程调用传统的过程调用l本地过程调用中的参数传递:调用读前的堆栈l调用过程激活时的堆栈分布式通信软件层软件层Applications and ServicesRPC and RM
23、Irequest-reply protocolmarshalling and external data representationUDP and TCPmiddlewareRPC is more than a(transport)protocol:a structuring mechanism for distributed systems分布式通信RPC中的调用与消息中的调用与消息 客户机客户存根客户应用客户OS内核本地调用客户打包参数拆包参数返回结果OS内核服务器 本地调用服务存根服务应用服务过程打包参数拆包参数返回结果OS内核网络消息传送12345678910分布式通信RPC执行的主
24、要步骤执行的主要步骤1.客户过程以普通方式调用相应的客户存根。2.客户存根建立消息并激活内核陷阱。3.内核将消息发送到远程内核。4.远程内核将消息送到服务器存根。5.服务器存根取出消息中的参数后调用服务器的过程。6.服务器完成工作后将结果返回至服务器存根。7.服务器存根将它打包并激活内核陷阱。8.远程内核将消息发送至客户内核。9.客户内核将消息交给客户存根。10.客户存根从消息中取出结果返回给客户。分布式通信客户和服务客户和服务StubslPrinciple of RPC between a client&server program.分布式通信异步异步RPC(I)分布式通信异步异步RPC(I
25、I)分布式通信编写编写Client和和Server的步骤的步骤分布式通信RPC编程举例编程举例/*生成RPC程序*/rpcgen FILE_RPC.x=编译结果 /*参数定义*/FILE_RPC_xdr.c /*服务器端程序*/FILE_RPC_svc.c /*server存根*/FILE_RPC_server.c /*服务器模版程序*/*客户端程序*/FILE_RPC_clnt.c /*client存根*/FILE_RPC_client.c /*客户模版程序*/分布式通信RPC申明申明-File_RPC.x#define RPC_ARGSIZE 256#define RPC_RETSIZE
26、256/*the interface version number*/#define uSERVERVERS1/*program number range established by ONC*/#define uSERVERPROG 0 x20000051 struct CallArg_t char bodyRPC_ARGSIZE;/*RPCs arg data form*/struct Return_t char bodyRPC_RETSIZE;/*RPCs arg data form*/*program definition*/program SERVERPROG version SER
27、VERVERS Return_t FILE_CREATE(CallArg_t)=1;Return_t FILE_READ(CallArg_t)=2;Return_t FILE_WRITE(CallArg_t)=3;Return_t FILE_DEL(CallArg_t)=2;=uSERVERVERS;=uSERVERPROG;分布式通信RPC服务端程序服务端程序-FileRPC_svc.c.void main2()SVCXPRT*transp;transp=svcudp_create(RPC_ANYSOCK);svc_register(transp,SERVERPROG,SERVERVERS,
28、serverprog_1,IPPROTO_UDP);/*注册注册*/transp=svctcp_create(RPC_ANYSOCK,0,0);svc_register(transp,SERVERPROG,SERVERVERS,serverprog_1,IPPROTO_TCP);/*注册注册*/svc_run();/启动启动RPC exit(1);static void serverprog_1(struct svc_req*rqstp,SVCXPRT*transp)union CallArg_t file_create_1_arg;CallArg_t file_read_1_arg;:arg
29、ument;switch(rqstp-rq_proc):case FILE_READ:xdr_argument=xdr_CallArg_t;xdr_result=xdr_Return_t;local=(char*(*)(char*,struct svc_req*)file_read_1_svc;break;:default:svcerr_noproc(transp);return;分布式通信RPC客户端程序客户端程序-FileRPC_clnt.c ./*Default timeout can be changed using clnt_control()*/static struct time
30、val TIMEOUT=25,0;Return_t*file_read_1(CallArg_t*argp,CLIENT*clnt)static Return_t res;bzero(char*)&res,sizeof(res);if(clnt_call(clnt,FILE_READ,xdr_CallArg_t,argp,xdr_Return_t,&res,TIMEOUT)!=RPC_SUCCESS)return(NULL);return(&res);.分布式通信基本基本RPC操作操作(a)调用read之前的栈;b)调用过程处于激活状态时的栈;(c)返回调用者之后的栈 l值参调用和变参调用 lc
31、all-by-copy/restore分布式通信参数定义和产生参数定义和产生StubprocedureCorresponding message分布式通信参数传递参数传递参数编组(marshalling):将参数装入消息例:add(i,j)远程计算分布式通信参数传递问题参数传递问题编码表示:ASCII,EDBIC数字表示:小末端、大末端规范形式:整形、字符型、布尔型、浮点型等v指针参数:copy/restoredereference分布式通信参数传递问题参数传递问题(a)486中的原始消息;(b)在SPARC上接受到的消息;(c)经过翻译之后的消息;(框中的小数字表明了每一个字节的地址)分布式
32、通信建立表示基本数据类型的标准建立表示基本数据类型的标准 分布式通信参数传递问题参数传递问题l如何传递 指针?只有在特定地址空间才有意义!l已知长度的数组和结构Copy/restore 语义IN/OUT/INOUT 标签l到任意数据结构的指针?没有一般的解决办法 通常:l把指针传递给它的“源”分布式通信客户如何定位服务器呢?客户如何定位服务器呢?l将服务器的网络地址固化到客户机中 l动态捆绑 分布式通信动态捆绑动态捆绑 绑定、调用绑定、调用客户客户绑定器绑定器服务器服务器注册、取消注册、取消查找查找 分布式通信绑定绑定(SUN RPC)lPort Mapper(rpcbind)listens
33、at UDP port 111lServer registers program ID&versionrpcinfo-p-display all registered RPC serverslWhen client issues clnt_create,the port mapper is contacted:program-to-port number mappinglarguments:(program ID,version,protocol)lresponse:servers port number分布式通信绑定绑定(DCE)分布式通信绑定接口绑定接口句柄(handle):如IP地址唯一
34、标识(ID):程序号认证:身份标识调用输 入输 出注册名字、版本、句柄、唯一id注销名字、版本、唯一id查找名字、版本句柄、唯一id分布式通信RPC故障处理故障处理l客户不能定位服务器返回错误号errno产生例外:SIG_NOSERVERl丢失请求信息超时重发l丢失应答信息等幂性请求序号分布式通信RPC故障处理故障处理4.服务器崩溃解决至少一次语义(重发请求)至多一次语义(立即放弃并报告失败)不做任何保证a)恰好一次?(a)正常状态;(b)执行后崩溃;(c)执行前崩溃分布式通信RPC故障处理故障处理5.客户崩溃孤儿问题:资源浪费、资源封锁解决方案:l根除(日志文件)l再生(epochs,所有远
35、程计算被终止)l温和再生(试图去找到该远程计算的调用者)l过期(标准时间段T)分布式通信RPC实现技术实现技术lRPC可以使用哪些协议?TCP 提供可靠传输lACKs,timeouts,retransmissionsUDP 不提供可靠传输,但RPC执行RETRANSMIT timeout因此在total timeout后,无论使用TCP或UDP都重复请求TCP需要建立连接 l对于一些短的RPCs,有额外开销专门协议信包和报文的长度 分布式通信RPC实现技术实现技术确认l停等(stop-and-waitt)协议(b)l爆发(blast)协议l差错控制l流量控制:数据溢出(overrun)分布式通
36、信RPC实现技术实现技术l关键路径客户机调用存根过程准备消息缓冲区将参数编排进缓冲区填写消息头陷入内核将上下文切换到内核将消息复制到内核确定目的地址将地址写入消息头设置网络接口启动计时器服务器执行服务调用服务器在堆栈上设置参数解析参数将上下文切换到存根将消息复制到存根检查存根是否在等待确定使用哪个服务器存根检查消息包的有效性处理中断分布式通信RPC实现技术实现技术l拷贝DMA分散-聚集(scatter-gather)虚拟内存映射客户存根网络内核内核服务器存根分布式通信RPC实现技术实现技术l计时器管理计时器列表扫描算法(sweep algorithms)(a)排序表中的时间片耗尽;(b)进程表
37、中的时间片耗尽 分布式通信RPC实现技术实现技术6.存在的问题全局变量的共享弱数据类型的传递,数组?指针传递管道:读驱动、写驱动(a)管道(b)读驱动方法(c)写驱动方法 分布式通信主要内容主要内容2.1 通信基础2.2 客户/服务器模型2.3 套接字socket 2.4 远程过程调用2.5 Web Service 2.6 消息队列 2.7 分布式对象2.8 组通信分布式通信2.5 Web Services “Web services”is an effort to build a distributed computing platform for the Web.分布式通信Web Serv
38、ices 框架框架l可以用术语描述为:What goes“on the wire”:Formats and protocols.What describes what goes on the wire:Description languages.What allows us to find these descriptions:Discovery of services.分布式通信Web-Services 体系结构体系结构SOAP消息服务提供方服务提供方服务请求方服务请求方服务代理方服务代理方 WSDL docs 使用使用 e-services的应的应用用2创建业务创建业务/服务服务 1发现业
39、务发现业务/服务服务 437调用服务调用服务 8UDDIRegistryXSD docsServlets,CGI,Perl65检索检索 WSDL文档文档 分布式通信XML Messaging:SOAPlSOAP 1.1 defined:An XML envelope for XML messaging,lHeaders+bodyAn HTTP binding for SOAP messaging.lSOAP is“transport independent”.A convention for doing RPC.An XML serialization format for structure
40、d datalSOAP Attachments addsHow to carry and reference data attachments using in a MIME envelope and a SOAP envelope.分布式通信The SOAP Envelope .分布式通信What goes on the wirelInternet-scale integration needs a lingua-francaXML messaging protocol over HTTP:SOAPlIntra-enterprise integration needs to allow al
41、ternates:CORBA,RMIMessagingIn-memory method callsSOAP SecurityAttachmentsReliabilityRoutingTransactionsContextW3C分布式通信Descriptions:Meta-datalIntegration requires interoperable machine-understandable descriptionslEnables dynamic,delayed binding of components.lLanguage extensibility provides support f
42、or different levels of application integration.InterfaceService QoS ServicePublic FlowsFlows and CompositionAgreementsWSDLWSFLXML Schema分布式通信Web Services Description LanguagelProvides functional description of network services:IDL descriptionProtocol and deployment detailsPlatform independent descri
43、ption.Extensible language.lA short history:WSDL v1.0,9/2000WSDL v1.1 submitted to W3C 3/2001.A de facto industry standard.分布式通信WSDL StructurelportTypeAbstract definition of a service(set of operations)lMultiple bindings per portType:How to access itSOAP,JMS,direct calllPortsWhere to access itService
44、Port(e.g.http:/host/svc)Binding(e.g.SOAP)Abstract interfaceportTypeoperation(s)inMesageoutMessagePortBinding分布式通信Using WSDLlAs extended IDL:WSDL allows tools to generate compatible client and server stubs.Tool support for top-down,bottom-up and“meet in the middle”development.lAllows industries to de
45、fine standardized service interfaces.lAllows advertisement of service descriptions,enables dynamic discovery and binding of compatible services.Used in conjunction with UDDI registrylProvides a normalized description of heterogeneous applications.分布式通信Client Proxy objectRMI-IIOPJMS/MQSOAP/HTTPClient
46、 invocationlSingle stub can invoke services over different bindingsDepends only on abstract interface.lAre independent of binding(but pluggable).Add new bindings without recompiling/redeploying stublAllows optimisations based on the bindings of service.lWill support extended services models if descr
47、ibedIn WSDL分布式通信WSFL OverviewlWSFL describes Web Service compositions.Usage patterns of Web Services:describes workflow or business processes.1.Interaction patterns:describes overall partner interactions.ABC WS WS分布式通信WSFL Flow ModelsActivities represent units of processing.Flow of data is modeled t
48、hrough data links.WSActivities can be mapped to the flow interfaceControl links define execution flow as a directed acyclic graphActivities are associated with specific typed service providers分布式通信Using Flow Modelsl“Public flows”provide a representation of the service behavior as required by its use
49、rs.Typically,an abstraction of the actual flow begin executedDefines a“behavioral contract”for the service.Internal implementation need not be flow-based.Flows are reusable:specify components types,but not what specific services should be used!l“Private flows”are the flows executed in practice.WSFL
50、serves as a“portable flow implementation language”lSame language is used in WSFL to represent both types of processes.分布式通信Global ModelsnGlobal models describe how the composed Web Services interact.nRosettaNet automated.nLike an ADL.nInteractions are modeled as links between endpoints of two servic