- 1、本文档共138页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
分布式通信
第2章 分布式通信 中国科技大学软件学院 丁箐 主要内容 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 通信基础 开放式系统:使用标准化规则与其它开放系统通信的系统 协议:进程间通信所必须遵循的规则,消息的格式、内容和意义 协议的种类 面向连接、非面向连接 分层协议 ISO OSI参考模型 Internet OSI参考模型分层协议 The Internet 协议 典型消息结构 网络技术的发展(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,以太网适配器 网络技术的发展(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路由器 ATM网络技术 分组交换、线路交换和信元交换 信元(cell): 小的、定长的单元 信元交换: 同时支持点到点(point-point)和多播(multicast)功能 ATM参考模型 物理层: SONET OC-1(51.8M), OC-3c(155M) ATM层: 信元传输和路由 适配层: VBR,CBR 信元头格式 ATM交换网络及交换机内部构造 主要内容 2.1 通信基础 2.2 客户/服务器模型 2.3 套接字socket 2.4 远程过程调用 2.5 Web Service 2.6 消息队列 2.7 分布式对象 2.8 组通信 2.2 客户/服务器模型 服务器:为用户提供服务的一组协同进程 客户:代理用户 客户/服务器(1-1) 客户-服务器交互 (I) 客户-服务器交互(II) 客户-服务器交互(III) 客户/服务器(1-N) Example: Web proxy server 客户-服务器交互(IV) Peer-to-Peer 合作 Mobile Code Example: Applet 瘦客户 消息格式 struct message { long source; /* 发送者标识*/ long dest; /* 接受者标识 */ long opcode; /* 操作码:读、写、创建、删除 */ long result; /* 返回结果代码 :成功、失败*/ long offset; /* 读写位置 */ long count; /* 读写计数 */ char filename[MAX_PATH}; /* 文件名*/ char data[BUF_SIZE]; /* 数据区*/ } 服务器程序 void main(void){ struct message m1,m2; /* 输入、输出的消息 */ int r; /* 返回的执行结果 */ while (1) { receive(FILE_SERVER,m1); /* 等待客户请求 */ case(m1.opcode) { /* 执行请求的操作 */ case READ: r = do_read(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)
文档评论(0)