第2章 分布式系统的通信分层协议 异步传输模式网( 异步传输模式网(ATM) ) 客户-服务器模式 客户 服务器模式 远程过程调用 组通信
2.1 分层协议开放系统互联参考模型( 开放系统互联参考模型(OSI) )OSI 模型中的层、接口和协议 模型中的层、机器1 进程A 7 6 5 4 3 2 1 应用层协议 应用层 表示层协议 表示层 会话层协议 会话层 传输层协议 传输层 网络层协议 网络层 数据链路层协议 数据链路层 物理层协议 物理层 物理层 网络 数据链路层 网络层 传输层 会话层 表示层 应用层 机器2 进程B
2.1 分层协议开放系统互联参考模型( 开放系统互联参考模型(OSI) )典型消息结构数据链路层头 网络层头 传输层头 会话层头 表示层头 应用层头 消息 数据链 路层尾
实际网络中传输的位
2.2 异步传输模式网(ATM网) 异步传输模式网( 网异步传输模式ATM模型 模型 异步传输模式( 异步传输模式(Asynchronous Transfer Mode) ) 发送者首先建立一个连接(一条虚拟线路)到接收者。 发送者首先建立一个连接(一条虚拟线路)到接收者。在建 立过程中,从发送者到接收者之间建立一个路由, 立过程中,从发送者到接收者之间建立一个路由,并将路由 信息放在沿途的交换机上。 信息放在沿途的交换机上。 系统发送包时,包先被硬件拆成固定大小的单位(信元), 系统发送包时,包先被硬件拆成固定大小的单位(信元), 信元沿着交换机中的路径流动。 信元沿着交换机中的路径流动。 当不再需要连接时,释放此连接, 当不再需要连接时,释放此连接,并从交换机中删除该路由 信息。 信息。
2.2 异步传输模式网(ATM网) 异步传输模式网( 网异步传输模式ATM协议分层 协议分层上面各层 适配层 ATM层 物理层
物理层(OSI第1层) 物理层( 第 层 ATM层处理包括路由选择在内的信元和信元传输。(包括 层处理包括路由选择在内的信元和信元传输。 包括 包括OSI第 层处理包括路由选择在内的信元和信元传输 第 2,3层一部分 ATM不修复丢失或损坏的信元。 层一部分) 不修复丢失或损坏的信元。 层一部分 不修复丢失或损坏的信元 适配层将包拆分成信元并在另一头组装。 适配层将包拆分成信元并在另一头组装。(OSI第4层) 适配层 第 层 没有提供可靠的端对端服务,传输连接必须在上一层实现。 没有提供可靠的端对端服务,传输连接必须在上一层实现。
2.3 客户机-服务器模式 客户机-2.3.1 客户机和服务器基本思想 构造一个操作系统,由一组协同进程组成, 构造一个操作系统 由一组协同进程组成,这组进程称为服 由一组协同进程组成 务器(server),
为用户提供服务的进程称为客户(client). 务器(server),为用户提供服务的进程称为客户(client). 客户和服务器都运行在相同的微内核中。 客户和服务器都运行在相同的微内核中。 客户和服务器都以用户进程方式运行, 客户和服务器都以用户进程方式运行, 一台机器可以运行 于单个进程、多个客户、多个服务器或者两者的混合。 于单个进程、多个客户、多个服务器或者两者的混合。
2.3 客户机-服务器模式 客户机-2.3.1 客户机和服务器通信特点 客户服务器模式通常以简单的面向非连接的请求/应答协议 客户服务器模式通常以简单的面向非连接的请求 应答协议 为基础。通信服务可以简化为由微内核提供的两个系统调用, 为基础 。 通信服务可以简化为由微内核提供的两个系统调用 , 一 个 是 负 责 发 送 报 文 ( send ) , 一 个 是 负 责 接 收 报 文 (receive)。 )请求 客户 应答 内核 内核 3 2 1 数据链路层 物理层 服务 7 6 5 4
请求/应答 请求 应答
网络
2.3 客户机-服务器模式 客户机-2.3.3 寻址机器.进程编址方式 机器 进程编址方式 机器号和进程号, 机器号和进程号,机器号用于使内核将消息正确地发送到 适当的机器上。进程号用来使内核决定消息要给哪一个进程。 适当的机器上。进程号用来使内核决定消息要给哪一个进程。1 C 2 内核 内核 S
1:请求243.0 :请求 2:给199.0响应 : 响应
2.3 客户机-服务器模式 客户机-2.3.3 寻址带有广播的进程编址 进程在相当大且专用的地址空间中选择自己的标识号。 进程在相当大且专用的地址空间中选择自己的标识号。发 送者广播一个特殊的定位包,包含目的进程的地址, 送者广播一个特殊的定位包,包含目的进程的地址,所有内核 检查并察看地址是不是它们的,如果是回答“我在这里” 检查并察看地址是不是它们的,如果是回答“我在这里”消息 给出网络地址,发送内核使用这个地址并“记住” 给出网络地址,发送内核使用这个地址并“记住”它。3 C 4 1 1:广播 : 2:“我在这里” : 我在这里” 2 3:请求 : 4:应答 : S
2.3 客户机-服务器模式 客户机-2.3.3 寻址通过名字服务器进行地址查询 在客户机中存放ASCII服务器的名字,每次客户机运行时, 服务器的名字,每次客户机运行时, 在客户机中存放 服务器的名字 首先试图使用服务器, 首先试图使用服务器,客户机发出一请求消息给一个特殊映射 服务器,(常常称为名字服务器) ,(常常称为名字服务器 服务器,(常常称为名字服务器)问一个目前服务器所在的机 器号,有了这个地址后,可以直接发送请求。 器号,有
了这个地址后,可以直接发送请求。3 S 4 C 2 1 NS 名字服务器
1:查找 : 2:NS应答 : 应答
1:请求 : 2:应答 :
网络
2.3 客户机-服务器模式 客户机-2.3.3 寻址进程编址方法总结 在客户机代码中指明机器.号 在客户机代码中指明机器 号; 让进程选择随机地址,用广播定位进程。 让进程选择随机地址,用广播定位进程。 在客户机中存放ASCII服务器名字,运行时寻找它。 服务器名字, 在客户机中存放 服务器名字 运行时寻找它。 三种方法的缺点: 三种方法的缺点: 机器 进程编址方式:不透明 机器.进程编址方式 进程编址方式: 带有广播的进程编址:给系统造成额外负担 带有广播的进程编址: 通过名字服务器进行地址查询:需要一个中间部件—— 通过名字服务器进行地址查询:需要一个中间部件 名字服务器。 名字服务器。
2.3 客户机-服务器模式 客户机-2.3.4 阻塞与非阻塞原语阻塞原语 — 阻塞的 阻塞的Send:阻塞直到消息传送完毕 阻塞直到消息传送完毕. 阻塞直到消息传送完毕 — 阻塞的 阻塞的Receive: 阻塞直到消息被实际接收并放入由参数指定 的消息缓冲区. 的消息缓冲区客户阻塞 客户运行 陷阱内核 阻塞进程 消息被发送 客户运行 从内核返回, 从内核返回, 进程释放
2.3 客户机-服务器模式 客户机-2.3.4 阻塞与非阻塞原语非阻塞原语 — 非阻塞的 非阻塞的Send:消息发送前取得系统控制权 消息发送前取得系统控制权. 消息发送前取得系统控制权 — 非阻塞的 非阻塞的Receive:告诉内核消息缓冲区的位置 立即取得系统 告诉内核消息缓冲区的位置,立即取得系统 告诉内核消息缓冲区的位置 控制权. 控制权客户阻塞 客户运行 陷阱 返回 客户运行
消息被发送 消息拷贝到 内核缓冲
时间
2.3 客户机-服务器模式 客户机-2.3.4 阻塞与非阻塞原语非阻塞原语 —缺点 缺点 在消息被发送之前,发送这不能修改消息缓冲区。后继的进 在消息被发送之前,发送这不能修改消息缓冲区。 程在传输过程中可能覆盖该消息 。 发送进程不知道传送何时进行, 发送进程不知道传送何时进行,它无法知道何时重新使用缓 冲区。 冲区。 —解决方法 解决方法 内核将消息拷贝到内部缓冲区,其后允许进程继续执行。 内核将消息拷贝到内部缓冲区,其后允许进程继续执行。 当消息发送后,中断发送者并通知它缓冲区可用。 当消息发送后,中断发送者并通知它缓冲区可用。
2.3 客户机-服务器模式 客户机-2.3.5 有缓冲和无缓冲原语无缓冲原语 一个地址指定给一个特定进程。如调用receive(addr,&m) , 一个地址指定给一个特定进程 。 如调
用 告诉运行的机器内核,调用的进程正在监听地址addr,m指出消 告诉运行的机器内核,调用的进程正在监听地址 , 指出消 息缓冲区,用于保存传送过来的消息。 息缓冲区,用于保存传送过来的消息。对应一个进程 的地址
客户
服务器
C内核
A内核
S
2.3 客户机-服务器模式 客户机-2.3.5 有缓冲和无缓冲原语无缓冲原语 — 缺点 如果在客户机调用send原语之后调用 原语之后调用receive原语,无法处 原语, 如果在客户机调用 原语之后调用 原语 理 — 解决方法 丢弃消息,使客户机超时, 丢弃消息,使客户机超时 ,并希望服务器在客户机传送前调 用接收原语。 用接收原语。 让接收内核在短时间内保存到来的消息,以防合适的receive 让接收内核在短时间内保存到来的消息,以防合适的 原语可以很快完成。 原语可以很快完成。