【RPC研究】socket & 函数调用

突然想深入学习一下RPC调用,研究一下发现这个东西相关联的东西还是比较多的,而且也算补齐一下别的知识。

接下来会写一下相关的知识,但没有什么参考资料基本都是博客看的,或者自己本科学的知识融合,并没有翻啥书,如果有不够精确的,评论区大神指出一下谢谢哈~。

好,首先先开始理解一下RPC作用是啥。全名远程过程调用。首先,远程,由于我自身相关,上课有听到老师说,RPC底层用的也是socket,所以直接开始先深入研究一下socket是个啥。其余也可以从远程这两个字眼联想到需要解决通信问题。

socket

上计网的时候有听过这个词,但当时没咋注意,就学了咋用,开一下server,了解一下就完事了,不是很关注。现在深入了解一下。

首先先说我自己的疑惑,socket是用来通信的,当时学计网也是拿来通信的他们有啥不一样啊?我用计网TCP/IP架构不也可以通信吗?

socket与计网里面TCP IP 不是一个东西 。在计网里面学的东西是协议。而TCP IP是协议,他们是一种通信规则,根据这种通信规则能够让双方完成通信。

而socket是根据这些通信协议 (TCP/UDP等)在计算机环境 上层的实现,而这些环境包括了操作系统等等,也就是真正能够在当前计算机系统之上运行的。

所以网上也有很多问题在说socket跟HTTP有什么不同,理由也是跟上面是一样的。他们都不是一个类别下面的东西,没有什么好比的。

但有一个细节点,socket运用了计网学习的协议,能够让他保证自己有可靠性之类的东西。

好研究清楚不同,再思考一下在计算机环境之下socket目标如何实现。仔细推敲一下,我们在计算机上需要通信对象主要应该是程序吧。那么程序运行在操作系统之上作为进程进行运行。而进程在网络中的标识用的是端口 吧,所以socket用的是运输层协议。并且用的是c/s的方式完成的。

这样其实socket就研究完了,总结一下实际上感觉可以归结为使用了tcp/udp通信协议并且运用cs模式实现进程之间的通信。

函数调用

解决socket,我们解决了远程这两个词,但过程调用还没解决。

RPC设计追求是,让调用别的计算机的函数能够像调用本机一样简单。所以他需要解决函数调用的问题。

那我们首先先研究一下,本机是如何实现函数调用的。主要是通过汇编与操作系统来理解。

首先先详细说一下执行过程。

计算机运行程序先加载到内存某个区域再进行执行。那么函数首先在声明 时候,可以把他丢到一个特殊的代码段去吧,可以暂且把他理解为一个"函数段"地方去。然后记下来他被丢到的地方。

然后到调用函数函数的时候,再根据他的名字,改成jmp到那个函数段地址去。这样子就完成了函数调用。

所以根据上面叙述,最重要的就是函数被丢到了那个代码段去了吧,也就是函数的入口地址。他具体的段地址是多少,所以才可以调用吧。

但两个进程之间代码段是不一样的,那么如果需要调用函数就不知道该去哪,所以一般来说,如果进行RPC,两个进程之间会沟通好,那个函数的段地址是啥,这里面加上一个hash唯一映射一下就好了,他们尽量不重复就完事了。那么这样就可以解决不同进程之间调用函数的问题。

先理解到这里,后面研究一下细致的RPC源码。很好又挖了个坑笑死。

相关推荐
朝新_12 小时前
【EE初阶 - 网络原理】传输层协议
java·开发语言·网络·笔记·javaee
小吴-斌12 小时前
本地请求接口报SSL错误解决办法(Could not verify * SSL certificate)
网络·网络协议·ssl
草莓熊Lotso13 小时前
基于容器适配器模式的 Stack 与 Queue 实现:复用底层容器的优雅设计
c++·网络协议·rpc·适配器模式
AORO202514 小时前
航运、应急、工业适用,AORO P1100三防平板引领行业数字化变革
运维·服务器·网络·智能手机·电脑·信息与通信
云飞云共享云桌面15 小时前
替代传统电脑的共享云服务器如何实现1拖8SolidWorks设计办公
linux·运维·服务器·网络·电脑·制造
RollingPin16 小时前
iOS八股文之 网络
网络·网络协议·ios·https·udp·tcp·ios面试
惘嘫、冋渞21 小时前
AWS同一账号下创建自定义VPC并配置不同区域的对等链接
网络·云计算·aws
云知谷1 天前
【HTML】网络数据是如何渲染成HTML网页页面显示的
开发语言·网络·计算机网络·html
poemyang1 天前
从C10K到Reactor:事件驱动,如何重塑高并发服务器的网络架构
rpc·reactor·事件驱动
呉師傅1 天前
关于联想ThinkCentre M950t-N000 M大师电脑恢复预装系统镜像遇到的一点问题
运维·网络·windows·电脑