rpc,http,websocket,rest的区别

1.OSI 模型与 TCP/IP

以下是 维基百科 中关于OSI 模型的说明:

开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,ISO/IEC 7498-1),简称为OSI模型(OSI model),一种概念模型,由国际标准化组织(ISO)提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。

而 TCP/IP 协议可以看做是对 OSI 模型的一种简化(以下内容来自 维基百科):

它将软件通信过程抽象化为四个抽象层,采取协议堆叠的方式,分别实作出不同通信协议。协议套组下的各种协议,依其功能不同,被分别归属到这四个阶层之中7,常被视为是简化的七层OSI模型。

这里有一张图详细介绍了 TCP/IP 协议族中的各个协议在 OSI模型 中的分布,一图胜千言(下图来自 科来):

TCP/IP 和 OSI 模型

 

在这里,我们只需要知道,HTTP、WebSocket 等协议都是处于 OSI 模型的最高层: 应用层 。而 IP 协议工作在网络层(第3层),TCP 协议工作在传输层(第4层)。

至于 OSI 模型的各个层次都有什么系统和它们对应,这里有篇很好的文章可以满足大家的求知欲:OSI七层模型详解 。

 

2.HTTP

HTTP是一个属于应用层的面向对象的协议,HTTP 协议一共有五大特点:1、支持客户/服务器模式;2、简单快速;3、灵活;4、无连接;5、无状态。基于HTTP协议的客户/服务器模式的信息交换过程,分四个过程:建立连接、发送请求信息、发送响应信息、关闭连接。

无连接

无连接是指限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

无状态

无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即我们给服务器发送 HTTP 请求之后,服务器根据请求,会给我们发送数据过来,但是,发送完,不会记录任何信息。HTTP 是一个无状态协议,这意味着每个请求都是独立的。

 

3. WebSocket、HTTP 与 TCP

从上面的图中可以看出,HTTP、WebSocket 等应用层协议,都是基于 TCP 协议来传输数据的。我们可以把这些高级协议理解成对 TCP 的封装。

既然大家都使用 TCP 协议,那么大家的连接和断开,都要遵循 TCP 协议中的三次握手和四次握手 ,只是在连接之后发送的内容不同,或者是断开的时间不同。

更详细内容可阅读:wireshark抓包图解 TCP三次握手/四次挥手详解

对于 WebSocket 来说,它必须依赖 HTTP 协议进行一次握手 ,握手成功后,数据就直接从 TCP 通道传输,与 HTTP 无关了。

 

4.rpc 远程过程调用

属于会话层的协议,面向方法,是为了应对分布式通讯能够像本地调用方法一样,使得通信无感化。
rpc是请求/响应模式,将数据以二进制的格式通过网络进行传输,这就涉及到了序列化与反序列化
在Java中,通过监听同一个socket来进行二进制数据的传输。这里有个简单的rpc实现,主要是利用了socket,代理和反射,但是代码都是在同一个项目中,并没有真正意义上实现远程调用,不过作为一个简单的例子帮助理解概念还是可以的。如果想更深入去了解rpc,可以看看dubbo,是一个阿里的开源中间件。

链接:https://blog.csdn.net/beyond_qjm/article/details/79083126

 

5.REST (Representational state transfer   表述性状态转移)

rest是一种编程风格,而不是一种协议,是面向资源的
REST是更好的利用http,使用到了http的动词(get,post,put,delete),将所有的函数都描述为URL资源来唯一识别

 

6.rpc  和 http的区别

首先rpc的使用场景主要是后端的各个不同服务之间,我们想要在某个服务上,调用另一个服务的方法,那么如果我们用http的方式去调用的话,
我们就要将每个方法都要加上请求映射,比如使用restful风格来实现。并且每一次请求都会发起http,我们知道http是会存在一定延迟的,
且消耗较多资源。那么我们使用rcp的话,就能像在本地调用方法一样,实现远程调用(实际上只是将复杂的过程给封装起来了,可以参考第4点的链接,里面有简单rpc实现)。
在Java中,rcp可以通过socket连接,先在两个服务建立链接,客户端将需要调用的类,方法,参数, 通过输入输出流,序列化成二进制传输到服务端,
服务端再反序列化得到信息并调用自身的方法,然后将结果序列化成二进制,然后再通过socket获得输出流,并传输二进制数据给客户端,客户端再反序列化后,得到结果。
rpc是一种编程思想,而http则是基于tcp/ip的应用层协议,两者不是同个层次的东西,在rpc开发中可以通过使用http协议来完成(比如grpc),也可以基于其它协议,比如更底层的传输层的tcp协议

 

7.Web Service的三种使用风格

rpc  远程过程调用(面向方法)
soa  面向服务的架构(面向消息)
rest Representational state transfer表述性状态转移 (面向资源)

 

参考资料:

https://www.cnblogs.com/jiangzhaowei/p/8781635.html

https://blog.csdn.net/beyond_qjm/article/details/79083126

低延迟系统、RPC、IPC、RESTWebSocket(简称为WS)是在计算机科学和网络通信中常见的概念和技术。下面是对每个概念的简要说明: 1. 低延迟系统(Low-Latency System):指的是能够在非常短的时间内响应用户请求或完成某个操作的系统。在实时应用、金融交易、游戏等领域,低延迟非常重要,因为它能提供更好的用户体验。 2. RPC(Remote Procedure Call):是一种通信机制,用于在分布式系统中不同节点之间进行远程调用。它允许一个节点调用另一个节点上的过程或函数,就像本地调用一样,隐藏了网络通信的细节。 3. IPC(Inter-Process Communication):是指在同一台计算机上运行的不同进程之间进行通信的机制。它允许这些进程交换数据和信息,以便彼此之间进行协作和共享资源。 4. REST(Representational State Transfer):是一种基于HTTP协议的软件架构风格,用于构建网络服务和API。REST使用标准的HTTP方法(如GET、POST、PUT、DELETE)来对资源进行操作,并使用统一资源标识符(URI)来标识和定位资源。 5. WebSocket(WS):是一种在Web应用程序中实现双向通信的协议。与传统的HTTP请求-响应模式不同,WebSocket允许服务器主动向客户端推送消息,实现实时数据传输。它提供了更低的延迟和更高的效率,适用于需要实时更新和即时通信的应用程序。 这些概念和技术在不同的应用场景中发挥重要作用,通过它们可以实现高效的通信、数据交换和系统响应。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值