美文网首页
第十六章 RPC三 链接

第十六章 RPC三 链接

作者: Myth52125 | 来源:发表于2017-10-01 20:03 被阅读0次

    RPC的执行过程。参考

    调用过程

    一次远程调用的过程:

    1. 服务器启动
      客户端程序向所在主机上的端口映射器注册自身,然后客户启动。
      调用clnt_create,该函数与服务器上的端口映射器联系,以找到服务器临时端口。
      如果指定tcp,那么clnt_create`,还建立了TCP链接。
    2. 客户端调用函数
      客户端调用客户程序存根的本地过程,其实就是个函数。
      存根的目的在把需要传递给远程过程的参数打包,可能的花把他们转化为某种标准格式。(这中间,参数被转化为char
      吧客户端提供的参数打包成一个网络消息的过程成为集结。
    3. 客户存根把打包的程序发送给远端系统
      这中间需要陷入本地内核系统调用,因为使用的是socket接口,可能是tcp,可能是udp,所以使用write或者是sendto
    4. 在第一步启动的客户存根过程一直在等待客户的请求
      客户存根将传入的消息解散出来。并且根据这些参数选择适合的函数,并且将部分需要传入函数的参数转换为合适的类型。 然后调用选择的函数。
    5. 当服务器过程完成以后,他想服务器存根发送返回值
      在RPC中其实就是两个函数的嵌套。
    6. 客户存根对返回值进行转换,然后把他们集结到一个或多个网络消息中,发送给客户端
    7. 客户端从本地内核中读出这些消息。
    8. 对返回值进行转换后,客户程序存根返回到客户调用的函数。

    客户端绑定

    运行RPC服务器的任何主机都必须在在运行端口映射器。
    赋给端口映射器的是TCP的111和UDP的111。他们是SUN RPC的唯一因特网固定端口。
    RPC服务器总是先帮顶一个临时端口,在想本地端口映射器注册自己的临时端口号。
    客户端程序总是先联系服务器主机上的端口映射器,询问服务器的临时端口号,然后在跟临时端口上的服务器进行通信。

    链接过程

    因此上面的执行过程再加上协议,和端口映射以后,在链接建立之时的行为如下:

    1. 端口映射器需要先于服务端程序启动。
    2. 客户端程序启动
      也就是客户端存根中的那个main函数启动,调用库函数svc_create,确定本机所支持的网络协议,并未没个协议创建一个传输点,通常也就是套接字,给tcpudp各绑定一个临时端口。
      之后,该函数向端口映射器联系,并向他注册这两个临时的端口号以及调用程序的RPC程序号和版本号,也就是在double_v.x中的那个8位的数字。
    3. 客户端调用clnt_create函数,该函数的参数报错,服务器主机名或是ip,程序号,版本号以及指定的协议的字符串。
      客户端向服务器主机发送一个rpc请求,通常使用的是udp,询问关于指定程序,版本和协议的信息,如果成功,服务端答复端口号。

    认证

    如果服务器处于公网,并且可以被其他主机访问的话,那么需要认证。
    不过书上说貌似这些认证都没啥用,有用的几个认证又没写。
    这本书想干啥?

    超时和重传

    涉及到了TCP和UDP那么就要存在超时重传

    客户端和服务端异常的情况

    涉及到网络部分就会有这几个,如果客户端提前结束怎么办,服务端提前结束怎么办,服务器结束又重启了,怎么办。

    分组

    请求分组

    请求分组

    应答分组

    应答分组

    相关文章

      网友评论

          本文标题:第十六章 RPC三 链接

          本文链接:https://www.haomeiwen.com/subject/hseaextx.html