专栏首页cwl_Java速读原著-TCP/IP(端口映射器)

速读原著-TCP/IP(端口映射器)

第29章 网络文件系统

29.4 端口映射器

包含远程过程的 R P C服务器程序使用的是临时端口,而不是知名端口。这就需要某种形式的“注册”程序来跟踪哪一个 R P C程序使用了哪一个临时端口。在 Sun RPC中,这个注册程序被称为端口映射器(port mapper)。

“端口”这个词作为I n t e r n e t协议族的一个特征,来自于T C P和U D P端口号。既然T I -R P C可以工作在任何运输层协议之上,而不仅仅是 T C P和U D P,所以使用T I - R P C的系统中(如S V R 4和Solaris 2.2),端口映射器的名字变成了r p c b i n d。下面我们继续使用更为常见的端口映射器的名字。

很自然地,端口映射器本身必须有一个知名端口: U D P端口111和T C P端口111。端口映射器也就是一个R P C服务器程序。它有一个程序号( 1 0 0 0 0 0)、一个版本号(2)、一个T C P端口111和一个U D P端口111。服务器程序使用 R P C调用向端口映射器注册自身,客户程序使用R P C调用向端口映射器查询。端口映射器提供四个服务过程:

  1. PMAPPROC_SET。一个R P C服务器启动时调用这个过程,注册一个程序号、版本号和带有一个端口号的协议。
  2. PMAPPROC_UNSET。R P C服务器调用此过程来删除一个已经注册的映射。
  3. PMAPPROC_GETPORT。一个R P C客户启动时调用此过程。根据一个给定的程序号、版本号和协议来获得注册的端口号。
  4. PMAPPROC_DUMP。返回端口映射器数据库中所有的记录(每个记录包括程序号、版本号、协议和端口号):

在一个R P C服务器程序启动,接着被一个 R P C客户程序调用的过程中,进行了以下一些步骤:

  1. 一般情况下,当系统引导时,端口映射器必须首先启动。它创建一个 T C P端点,并且被动打开T C P端口111。它也创建一个U D P端点,并且在U D P端口111等待着U D P数据报的到来。
  2. 当R P C服务器程序启动时,它为它所支持的程序的每一个版本创建一个 T C P端点和一个U D P端点(一个给定的 R P C程序可以支持多个版本。客户调用一个服务器过程时,说明它想要哪一个版本)。两个端点各自绑定一个临时端口( T C P端口号和U D P端口号是否一致无关紧要)。服务器通过 R P C调用端口映射器的 P M A P P R O C _ S E T过程,注册每一个程序、版本、协议和端口号。
  3. 当R P C客户程序启动时,它调用端口映射器的 P M A P P R O C _ G E T P O RT过程来获得一个指定程序、版本和协议的临时端口号。
  4. 客户发送一个R P C调用报文给第3步返回的端口号。如果使用的是 U D P,客户只是发送一个包含R P C调用报文(见图 2 9 - 1)的U D P数据报到服务器相应的 U D P端口。服务器发送一个包含R P C应答报文(见图2 9 - 2)的U D P数据报到客户作为响应。

如果使用的是T C P,客户对服务器的T C P端口号做一个主动打开,然后在建立的 T C P连接上发送一个R P C调用报文。服务器作为响应,在连接上发送一个 R P C应答报文。程序 r p c i n f o ( 8 )打印了端口映射器中当前的映射记录(它调用了端口映射器的P M A P P R O C _ D U M P过程)。这里给出的是典型的输出:

可以看出一些程序确实支持多个版本。在端口映射器中,每一个程序号、版本号和协议的组合都有自己的端口号映射。

安装守护程序(mount daemon)的两个版本可以通过同样的 T C P端口号(7 0 2)和同样的U D P端口号(6 9 9)来访问,而加锁管理程序( lock manager)的每个版本都有各自不同的端口号。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 速读原著-TCP/IP(端口号)

    前面已经指出过,T C P和U D P采用16 bit的端口号来识别应用程序。那么这些端口号是如何选择的呢?

    cwl_java
  • 速读原著-TCP/IP(UDP首部)

    端口号表示发送进程和接收进程。在图 1 - 8中,我们画出了 T C P和U D P用目的端口号来分用来自I P层的数据的过程。由于 I P层已经把I P数...

    cwl_java
  • 经典面试题-java中可见的访问修饰符的含义

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    cwl_java
  • [Selenium+Chrome使用总结]加载Flash、禁用JS脚本、滚动页面至元素、缩放页面

    前几周做了个使用Selenium的项目,踩了好多好多好多的Selenium的坑,越来越感觉他作为一个第三方库,对于Chrome的操作实在是有局限。另外,推荐大家...

    Rude3Knife的公众号
  • [Selenium+Chrome使用总结]加载Flash/禁用JS脚本/滚动页面至元素/缩放页面

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    后端技术漫谈
  • 浅谈一下mshta在CVE-2017-11882里的命令构造

    Evi1cg同学前不久放出CVE-2017-11882的一个 python利用脚本,地址在https://github.com/Ridter/CVE-2017-...

    FB客服
  • SAP最佳业务实践:FI–总账(156)-2流程概览

    1 用途 总帐会计主要用于提供外部会计核算和科目的综合情况。在与公司所有其他操作范围相集成的软件系统中,记录所有的业务交易(初始过帐和内部会计核算中的结算)...

    SAP最佳业务实践
  • 克林顿 VS 特朗普:谁更支持创新?

    这边共和党全国大会刚刚结束,那边民主党全国大会正紧锣密鼓地进行着,现在是时候讨论一个关键问题了:特朗普或希拉里克林顿上台将如何影响美国高科技创新创业的发展前景...

    点滴科技资讯
  • [测试(1)]第一个全对者发红包

    1、以某机关单位的OA(办公自动化)系统为研究对象,关于该系统的业务执行者和业务用例,以下说法最合适的是:

    用户6288414
  • 利用“谷歌趋势”评估新冠病毒封锁对不快乐、孤独和无聊情绪的影响(CS CY)

    COVID-19大流行导致许多政府实施封锁措施。虽然封锁可能有助于遏制病毒的传播,但有可能对人民福祉造成重大损害。这项研究借助“谷歌趋势”的数据测试分析了在欧洲...

    Elva

扫码关注云+社区

领取腾讯云代金券