分布式通信

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第2章分布式通信中国科技大学软件学院丁箐2主要内容2.1通信基础2.2客户/服务器模型2.3套接字socket2.4远程过程调用2.5WebService2.6消息队列2.7分布式对象2.8组通信3主要内容2.1通信基础2.2客户/服务器模型2.3套接字socket2.4远程过程调用2.5WebService2.6消息队列2.7分布式对象2.8组通信42.1通信基础开放式系统:使用标准化规则与其它开放系统通信的系统协议:进程间通信所必须遵循的规则,消息的格式、内容和意义协议的种类–面向连接、非面向连接分层协议–ISOOSI参考模型–Internet5OSI参考模型分层协议进程A进程B6TheInternet协议NetworkIPTCPUDPApplicationTransportDatagramsMessages(UDP)Streams(TCP)7典型消息结构消息应用层头表示层头会话层头传输层头网络层头数据链路层头数据链路层尾实际网络中传输的位8网络技术的发展(1)分组交换协议–Dr.L.Kleinrock(MIT),1962TCP/IP协议–R.Kahn(MIT,ARPA),V,Cerf(UCB,Stanford),–《IEEE通信》974CDMA协议与Ethernet–Dr.B.Metcalfe(HU,MIT,PARC),1973–3COM,以太网适配器9网络技术的发展(2)ARPANET与Internet–IPTO,Dr.J.Licklider(1960),Dr.B.Taylor(1966)–Dr.L.Roberts(MIT),BBN公司–ARPANET(1969,UCB,SRI)Stanford校园网与LAN–L.Bosack,S.Lerner(Stanford),1980-1983–Cisco(1984),Cisco路由器10ATM网络技术分组交换、线路交换和信元交换信元(cell):–小的、定长的单元信元交换:–同时支持点到点(point-point)和多播(multicast)功能11ATM参考模型物理层:–SONET–OC-1(51.8M),–OC-3c(155M)ATM层:–信元传输和路由适配层:–VBR,CBR上面各层适配层ATM层物理层12信元头格式GFCVPIVCICLPCRC净荷类型GFC=一般流量控制域VPI=虚通道标识符VCI=虚通路标识符CLP=信元丢失优先级CRC=循环冗余校验和13ATM交换网络及交换机内部构造CCCSSCSSCCCCATM交换计算机交换结构输出输入输出队列输入队列(a)(b)14主要内容2.1通信基础2.2客户/服务器模型2.3套接字socket2.4远程过程调用2.5WebService2.6消息队列2.7分布式对象2.8组通信152.2客户/服务器模型服务器:为用户提供服务的一组协同进程客户:代理用户客户服务内核内核请求应答网络(a)7654321层请求/应答物理层数据链路层(b)16客户/服务器(1-1)ServerClientClientinvocationresultServerinvocationresult17客户-服务器交互(I)•Remoteprocedurecall18客户-服务器交互(II)•多层结构19客户-服务器交互(III)•异步remoteprocedurecall20客户/服务器(1-N)ServerServerServerServiceClientClient21Example:WebproxyserverClientProxyWebserverWebserverserverClient22客户-服务器交互(IV)23Peer-to-Peer合作CoordinationApplicationcodeCoordinationApplicationcodeCoordinationApplicationcode24MobileCodeExample:Appleta)clientrequestresultsinthedownloadingofappletcodeWebserverClientWebserverAppletAppletcodeClientb)clientinteractswiththeapplet25瘦客户ThinClientApplicationProcessNetworkcomputerorPCComputeservernetwork26消息格式structmessage{longsource;/*发送者标识*/longdest;/*接受者标识*/longopcode;/*操作码:读、写、创建、删除*/longresult;/*返回结果代码:成功、失败*/longoffset;/*读写位置*/longcount;/*读写计数*/charfilename[MAX_PATH};/*文件名*/chardata[BUF_SIZE];/*数据区*/}27服务器程序voidmain(void){structmessagem1,m2;/*输入、输出的消息*/intr;/*返回的执行结果*/while(1){receive(FILE_SERVER,&m1);/*等待客户请求*/case(m1.opcode){/*执行请求的操作*/caseREAD:r=do_read(&m1,&m2);break;:default:r=E_BAD_OPCODE;}m2.result=r;send(m1.source,&m2);/*返回结果*/}}28客户程序intread(char*file,intposition,intnbytes,char*buf){structmessagem1;/*消息缓冲区*/m1.opcode=READ;/*设置参数*/m1.offset=position;/*读位置*/m1.count=nbytes;/*读长度*/strcpy(&m1.filename,src)/*文件名*/send(FILE_SERVER,&m1);/*发送请求*/receive(CLIENT,&m1);/*等待服务器应答*/if(m1.result==OK)strcpy(buf,&m1.data);/*置缓冲区*/return(m1.result);/*返回结果*/}}29寻址方式(Addressing)1、机器号+本地标识号例:UNIX–机器IP地址–端口号(port)/*Socketaddress,internetstyle.*/structsockaddr_in{shortsin_family;/*AF_INET*/u_shortsin_port;structin_addrsin_addr;charsin_zero[8];};CS121:请求234.0服务内核2:给199.0响应客户302、广播定位进程–全局唯一标识号CS34121:广播2:“我在这里”3:请求4:应答(b)313、ASCII码进程名–名字服务器CS4NS213命名服务器1:查找2:NS应答3:请求4:应答(c)32阻塞与非阻塞原语(1)阻塞发送原语–同步原语(2)非阻塞发送原语–异步原语–在消息被发送之前,发送者不能修改消息缓冲区时间时间客户阻塞客户运行客户运行消息被发送陷阱内核阻塞进程从内核返回,进程释放客户阻塞客户运行客户运行消息拷贝到内核缓冲陷阱返回消息被发送33有缓冲与无缓冲型接收无缓冲区发送比接收先发生?–直接丢弃消息–暂存“意外”消息有缓冲区–邮箱(mailbox):–缓存所有的输入消息–“溢出”问题内核C内核SA客户服务对应一个进程的地址内核CSA对应一个邮箱的地址网络34可靠的和非可靠的发送和接收非可靠的收发–可能丢失消息–由用户负责确认独立的确认消息–内核-内核确认应答用作请求的确认消息–客户内核确认–折衷方法服务器端设置计时器,超时后,发确认消息35客户服务器1342客户服务器123内核1.请求(客户向服务器)2.ACK(内核给内核)3.应答(服务器向客户)4.ACK(内核给内核)1.请求(客户向服务器)2.应答(服务器向客户)3.ACK(内核给内核)36实现技术小结项目选择1选择2选择3寻址机器+进程共享进程地址ASCII名字通过服务器查找阻塞阻塞原语具有拷贝到核的非阻塞具有中断的非阻塞原语无缓冲,丢弃不期望的消息无缓冲,临时保持不期望的消息邮箱可靠性非可靠请求-应答确认37客户/服务器协议中的包类型代码包类型来源至说明REQ请求客户服务器客户要求服务REP应答服务器客户服务器对客户的应答ACK确认服务器、客户其他前面的包已到达AYA你在这里吗?客户服务器查看服务器是否崩溃IAA我在这里服务器客户服务器没有崩溃TA再试一次?服务器客户服务器没有空间AU地址未知服务器客户没有进程在使用此地址38包交换举例客户服务REQREP(a)客户服务REQREP(b)ACKACK客户服务REQREP(c)ACK客户服务AYAREP(d)IAAACKREQACK39主要内容2.1通信基础2.2客户/服务器模型2.3套接字socket2.4远程过程调用2.5WebService2.6消息队列2.7分布式对象2.8组通信402.3套接字socket•socket通信的基本原理•socket通信的工作过程41一个socket在逻辑上有三个特征(三要素):–网域–类型–规程42网域:表明一个socket用于哪一种网络或说哪一族网络规程。各种网络对节点地址的命名方法不同,又称“地址族”或“规程族”。–AF_INET表示Internet网插口,故各节点使用IP地址。AF_IPX为Novell的IPX网插口,AF_X25为X.25网插口,等等。其中的特殊,不走网络而在同一台计算机上用于进程通信,BSD称为AF_UNIX,在POSIX标准里定义了一种AF_LOCAL域名。43类型:表明网络中通信所遵循的模式–“面向连接”:又叫“虚电路”模式,通信双方先要在互相之间建立起一种虚拟连接(线路),再通过虚拟线路进行通信。在通信过程中,所有报文传递保持原来次序,所以,报文之间是有关联的,每个报文都不是孤立的。在这种模式中,所有报文的传递都是可靠的,由网络中物理线路引入差错控制来保证。–“无连接”:事先不必建立虚线路,直接可发送和接收报文。但报文是孤立的,正确性没有保证,甚至可能丢失。由于网络延迟或路径不同,接收端收到报文的次序可能与发送端发送报文的次序不一样。这种模式传递的报文是不可靠的,无保证的。也没有“流量控制”手段,进程从系统调用返回时仅表明该socket会把报文发送去,并不表明报文已到达了接收方的socket。44规程:表明具体网络规程。一般来说,网域与类型结合作一起就大体上决定了规程。如网域为AF_INET,而类型为“无连接”,则规程大致为UDP了。但有时,还会有其他选择。45BerkeleySocketsAPISocketprimitivesforTCP/IP.PrimitiveMeaningSocketCreateanewcommunicationendpointBindAttachalocaladdresstoasocketListenAnnouncewillingnesstoacceptconnectionsAcceptBlockcalleruntilaconnectionrequestarrivesConnectActivelyattempttoestablishaconnectionSendSendsomedataovertheconnectionReceiveReceivesomedataovertheconnectionCloseReleasetheconnection46基本的socket调用recvsendsocketbindlocalhostsockaddr_in()listenacceptpeersockaddr_in()socketconnectrecvsendpeersockaddr_in

1 / 138
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功