免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1059 | 回复: 0
打印 上一主题 下一主题

学习portmap [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-20 19:44 |只看该作者 |倒序浏览
找到一个相关portmap的sun的文档,
http://docs.sun.com/app/docs/doc/816-1435/portmapper-79445?l=zh_TW&a=view
using portmap 解决port和网络地址
portmap是一个基于rpc系统注册服务,它管理一个table,记录着注册的服务和port的对应关系。它为client提供了一种用来查询server支持的rpc程序的port number的标准方法。

对一个client程序,要找到网络中的分布式服务,它需要一种查询服务程序网络地址的方法。

Portmap 协议:
portmap程序将RPC程序和版本号映射成指定的传输层的port number。实现了动态绑定远端程序的方法。

调用过程如下:
1.server使用portmap注册
2.client通过portmap获得server的port
3.client访问server

下面是使用rpc语言描述的portmap协议
Example E–1 portmap Protocol Specification (in RPC Language)
const PMAP_PORT = 111;       /* portmapper port number */
/*
  * A mapping of (program, version, protocol) to port number
  */
struct pmap {
        rpcprog_t prog;
        rpcvers_t vers;
        rpcprot_t prot;
        rpcport_t port;
};
/*
  * Supported values for the "prot" field
  */
const IPPROTO_TCP = 6; /* protocol number for TCP/IP */
const IPPROTO_UDP = 17; /* protocol number for UDP/IP */
/*
  * A list of mappings
  */
struct pmaplist {
        pmap map;
        pmaplist *next;
};
/*
  * Arguments to callit
  */
struct call_args {
        rpcprog_t prog;
rpcvers_t vers;
rpcproc_t proc;
        opaque args;
};
/*
* Results of callit
*/
struct call_result {
        rpcport_t port;
        opaque res;
};
/*
* Port mapper procedures
*/
program PMAP_PROG {
        version PMAP_VERS {
                void
                PMAPPROC_NULL(void) = 0;
                bool
                PMAPPROC_SET(pmap) = 1;
                bool
                PMAPPROC_UNSET(pmap) = 2;
                unsigned int
                PMAPPROC_GETPORT(pmap) = 3;
                pmaplist
                PMAPPROC_DUMP(void) = 4;
                call_result
                PMAPPROC_CALLIT(call_args) = 5;
        } = 2;
} = 100000;
portmap操作:PMAPPROC_SET:当一个程序第一次出现时,它首先使用本地的portmap程序注册。这个程序传输它的program number:prog,version number:vers,transport protocol prot,和用来接受服务请求的port: port。当procedure成功建立mapping时,返回true。PMAPPROC_UNSET:使用portmapper程序unregister它自己PMAPPROC_GETPORT:对于给定的prog,vers,prot,此procedure返回port numberPMAPPROC_DUMP: 访问所有的portmap数据库中的entries。对应prog,vers,prot,port number            


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/35356/showart_696198.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP