OSI网络结构的七层模型
各层的具体描述如下:
第七层:应用层 定义了用于在网络中进行通信和数据传输的接口 - 用户程式;提供标准服务,比如虚拟终端、文件以及任务的传输 和处理;
第六层:表示层 掩盖不同系统间的数据格式的不同性; 指定独立结构的数据传输格式; 数据的编码和解码;加密和解密;压缩和 解压缩
第五层:会话层 管理用户会话和对话; 控制用户间逻辑连接的建立和挂断;报告上一层发生的错误
第四层:传输层 管理网络中端到端的信息传送; 通过错误纠正和流控制机制提供可靠且有序的数据包传送; 提供面向无连接的数 据包的传送;
第三层:网络层 定义网络设备间如何传输数据; 根据唯一的网络设备地址路由数据包;提供流和拥塞控制以防止网络资源的损耗
第二层:数据链路层 定义操作通信连接的程序; 封装数据包为数据帧; 监测和纠正数据包传输错误
第一层:物理层 定义通过网络设备发送数据的物理方式; 作为网络媒介和设备间的接口;定义光学、电气以及机械特性。
在上述7层中,http协议是应用层协议。HTTP协议是超文本传送协议(HyperText Transfer Protocol)的缩写,它是万维网(World Wide Web,www,也简称为Web)的基础。HTTP协议设计之初就是为了实现Web的想法。HTTP协议位于TCP/IP协议栈的应用层。基于HTTP协议的客户/服务器模式的信息交换过程,分四个过程:建立连接、发送请求信息、发送响应信息、关闭连接。
而关于RPC的基本概念介绍如下:
英文原义:Remote Procedure Call Protocol
中文释义:(RFC-1831)远过程调用协议
注解:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加轻易。
RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用过程接收答复信息,获得进程结果,然后调用执行继续进行。
RPC信息协议由两个不同结构组成:调用信息和答复信息。
同时也注意到 了 这样的信息
远程通信的几种选择(RPC,Webservice,RMI,JMS的区别)
几种基于HTTP协议的RPC性能比较
RPC和Socket的区别
http://blog.163.com/fanning_7213/blog/static/249650520113124540501/
RPC(Remote Procedure Call,远程过程调用)是建立在Socket之上的,出于一种类比的愿望,在一台机器上运行的主程序,可以调用另一台机器上准备好的子程序,就像LPC(本地过程调用).
越底层,代码越复杂、灵活性越高、效率越高;越上层,抽象封装的越好、代码越简单、效率越差。Socket和RPC的区别再次说明了这点。
不论是程序员在编写基于C/S(客户端服务器)的程序时,还是网络工程师在处理RPC问题时,他们问的最多的就是RPC和Socket有什么区别和联系?
RPC(Remote Procedure Call,远程过程调用)是建立在Socket之上的,出于一种类比的愿望,在一台机器上运行的主程序,可以调用另一台机器上准备好的子程序,就像 LPC(本地过程调用).RPC带来了开发C/S程序的简单可靠的手段,它通过一种叫XDR的数据表达方法描述数据,程序员书写伪代码,然后由 rpcgen程序翻译为真正的可编译的C语言源代码,再编译成真正的Client端和Server端程序。
RPC作为普遍的C/S开发方 法,开发效率高效,可靠.但RPC方法的基本原则是--以模块调用的简单性忽略通讯的具体细节,以便程序员不用关心C/S之间的通讯协议,集中精力对付实 现过程.这就决定了 RPC生成的通讯包不可能对每种应用都有最恰当的处理办法,与Socket方法相比,传输相同的有效数据,RPC占用更多的网络带宽.
RPC是在Socket的基础上实现的,它比socket需要更多的网络和系统资源.另外,在对程序优化时,程序员虽然可以直接修改由rpcgen产生的令人费解的源程序,但对于追求程序设计高效率的RPC而言,获得的简单性则被大大削弱.
RPC与是Socket的类比
人们常常错误地将HTTP称作一种远程过程调用(RPC)[23]机制,仅仅是因为它包括了请求和响应。
调用远程机器上的一个过程(procedure)的观念,是RPC与其他形式的基于网络的应用通信的区别在。 RPC的协议识别出过程并且传递给它固定的一组参数,然后等待在使用相同接口返回的一个消息中提供的回答。远程方法调用(RMI)也是类似的,除了过程被标识为一个{对象,方法}的组合,而不是一个简单的服务过程(service procedure)。被代理的RMI添加了名称服务的间接层和少量其他的技巧(trick),但是接口基本上是相同的。
将HTTP和RPC区分开的并不是语法,甚至也不是使用一个流作为参数所获得的不同的特性,尽管它帮助解释了为何现有的RPC机制对于Web来说是不可用的。
使得HTTP与RPC存在重大不同的是:请求是使用具有标准语义的通用的接口定向到资源的,这些语义能够被中间组件和提供服务的来源机器进行解释。结果是使得一个应用支持分层的转换(layers of transformation)和间接层(indirection),并且独立于消息的来源,这对于一个Internet规模、多个组织、无法控制的可伸缩性的信息系统来说,是非常有用的。与之相比较,RPC的机制是根据语言的API(language API)来定义的,而不是根据基于网络的应用来定义的。
相关推荐
### REST与RPC的区别详解 #### 一、概述 在现代软件开发中,特别是分布式系统设计领域,REST(Representational State Transfer)与RPC(Remote Procedure Call)是两种非常重要的服务调用方式。这两种方法各有...
在本篇中,我们将深入探讨JSON-RPC的工作原理、其与其它RPC协议的区别,以及如何在实际开发中使用JSON-RPC。 首先,让我们了解JSON-RPC的基本结构。一个JSON-RPC请求由以下几部分组成: 1. **版本(version)**:...
**NIO(非阻塞I/O)与传统IO的区别**: 传统IO基于流,是阻塞的,即读写操作完成后才会返回。而NIO引入了选择器和通道的概念,允许多个连接并发处理,提高了效率,尤其适合大量并发连接的情况。 **自定义RPC框架的...
六、SOA 与微服务的区别 * 微服务相比于 SOA 更加精细 * 微服务提供的接口方式更加通用化 * 微服务更倾向于分布式去中心化的部署方式 七、为什么要使用微服务? * 技术为业务而生,架构也为业务而出现 * 微服务...
**RPC与HTTP的区别:** 1. **层次位置**:RPC在传输层,HTTP在应用层。 2. **接口调用**:RPC直接调用接口,HTTP需要通过HTTP方法(GET, POST等)和URL指定资源。 3. **连接类型**:RPC通常为长连接,HTTP默认为短...
"RPC服务端与客户端原理及原理图" RPC(Remote Procedure Call,远程过程调用)是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC 协议假定某些传输协议的存在,如 TCP 或 UDP,为...
9. **与Web服务的区别**: - 相比于SOAP或RESTful Web服务,XML-RPC更简单,但灵活性较低,不支持WSDL(Web服务描述语言)和服务发现。 10. **集成其他技术**: - Apache XML-RPC客户端可以与其他Java框架,如...
【部分内容】概述了RPC的基本概念,包括远程调用的实现要点、HTTP与RPC的区别,以及流行的RPC框架如Dubbo的特点。此外,还介绍了如何构建一个简单的RPC框架,包括模拟服务提供方和服务调用方的场景。 【详细知识点...
##### 本地函数调用与远程过程调用的区别 以一个简单的本地函数调用为例: ```c++ int result = Add(1, 2); ``` 这里,我们调用了本地代码段中的`Add`函数,并传递了两个参数1和2。传入数据、传出数据以及代码段...
了解RPC原理后,面试中可能会问到的问题有:RPC和Web Service的区别,如何选择适合的序列化方式,理解RPC框架如Dubbo、gRPC的工作流程,以及如何设计和优化RPC服务等。通过深入学习和实践,可以提升在分布式系统开发...
- RPC与Web服务(如RESTful API)的区别 - 常见的RPC框架,如gRPC、Thrift、Dubbo、Hessian等 - 序列化协议,如JSON-RPC、XML-RPC、protobuf等 - 安全性考量,如身份验证、授权和加密 - 实战案例,展示如何在实际...
RPC与SOAP的主要区别在于: 1. **数据格式**:RPC通常不直接使用XML,而是将数据转换为特定编程语言的数据类型;而SOAP完全基于XML,所有的交互都以XML格式进行。 2. **复杂性**:RPC相对简洁,适合简单的调用;...
- **与 Spring Cloud 的关系与区别**:两者都是微服务框架,Dubbo 主要是 RPC 方式,而 Spring Cloud 侧重于完整的微服务解决方案,包括服务发现、配置中心、熔断机制等。 - **与 Dubbox 的区别**:Dubbox 是 ...
RPC与RMI的区别主要在于,RPC是一种更抽象的远程过程调用技术,而RMI是RPC在Java语言中的一种具体实现,专门为Java环境设计。RMI不仅传递参数和返回值,还能传输Java对象,而RPC通常基于文本消息传递,例如使用HTTP...
9. **RPC原理**:深入理解RPC的工作原理,包括请求/响应模式、协议栈、以及与RESTful API的区别。 10. **Discord API**:熟悉Discord的开发者文档,学习如何获取OAuth2令牌,设置应用状态,以及处理实时更新。 ...
2、RPC与HTTP请求的区别:利用应用层的HTTP协议,也可以满足客户/服务器模式的信息交换,那为何还需要更为复杂的RPC框架呢?我们知道,使用HTTP接口,一般有四个过程:(3次握手)建立(TCP协议)连接,发送请求信息...
主要来自于以下课程内容以及其他牛人文章总结+一nene自己的思考 ...207 全手写基于Netty的RPC框架 简单重构框架分层及RPC传输的本质及有无状态的RPC区别 地址 216 自定义HTTP协议解析和HTTPserver调用实现 地址
SOAP Web服务和RESTful Web服务是两种常见的Web服务交互方式,它们在设计理念、协议复杂度、数据格式和操作方式等方面存在显著的区别。 首先,SOAP(简单对象访问协议)是一种基于XML的协议,它允许不同系统之间的...
### WCF、.NET Remoting、Web Service:概念与区别 在探讨WCF(Windows Communication Foundation)、.NET Remoting和Web Service之间的概念及其差异之前,我们先简要回顾一下这三种技术的历史背景和发展脉络。 ##...
### SOA与Web Service的本质区别 尽管Web Service是实现SOA的重要工具之一,但两者有着本质的区别: 1. **范围不同**:Web Service专注于定义和实现具体的服务接口,而SOA是一种更广泛的架构模式,它涉及服务的...