日剧时间表:Linux中portmap(端口映射)---详解

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 10:10:12

portmap进程的主要功能是把RPC程序号转化为Internet的端口号
Remote Procedure Call, RPC
当一个RPC服务器启动时,会选择一个空闲的端口号并在上面监听(每次启动后的端口号各不相同),同时它作为一个可用的服务会在portmap进程注册。一个RPC服务器对应惟一一个RPC程序号,RPC服务器告诉portmap进程它在哪个端口号上监听连接请求和为哪个RPC程序号提供服务。经过这个过程,portmap进程就知道了每一个已注册的RPC服务器所用的Internet端口号,而且还知道哪个程序号在这个端口上是可用的。portmap进程维护着一张RPC程序号到Internet端口号之间的映射表,它的字段包括程序号、版本号、所用协议、端口号和服务名,portmap进程通过这张映射表来提供程序号-端口号之间的转化功能
如果portmap进程停止了运行或异常终止,那么该系统上的所有RPC服务器必须重新启动。首先停止NFS服务器上的所有NFS服务进程,然后启动portmap进程,再启动服务器上的NFS进程。
但portmap只在第一次建立连接的时候起作用,帮助网络应用程序找到正确的通讯端口,但是一旦这个双方正确连接,端口和应用就绑定,portmap也就不起作用了。但对其他任何第一次需要找到端口建立通讯的应用仍然有用。
简单的说,portmap就是应用和端口的婚姻介绍人,双方成事了以后,媒婆就没用了
**************************************************************************************************************************************************

项目地址:http://code.google.com/p/portmap/

下载地址:http://portmap.googlecode.com/files/portmap-0.1.tar.gz

项目介绍:

portmap 主要是作为各个机器间端口映射的工具
项目的最初目的是作为vnc端口映射,主要是将不同机器的vnc接口映射到一台能够对外的
物理机上,安全和方便管理;
iptables可以实现端口映射,但是每次增加一个映射端口都需要重新启动,故自己动手完成了端口映射工具;
还有像80端口的映射,这个可以归总为反向代理,作为负载均衡器来使用,原理是相通,像nginx七层的负载均衡功能应该使用的就是端口映射,portmap暂时不支持哈~

特点:

* 使用epoll方式,支持高并发和长连接模式
* 多线程支持,线程个数可配置,主要作为工作线程
* 使用简单,只需发送待映射的端口到守护进程,守护进程会返回映射后的端口,即可使用
*

TODO:

* 配置文件单独提取出来
* bug修复
* 多机扩展?

Example:

SHELL CODE
$ make$ ./portmap  //启动进程$ cd test    //修改test1.c中相关变量
C CODE
   //addr: portmap server的地址  //port: portmap server 的端口  //request:是需要映射的地址和端口const char *addr = "10.60.1.124";unsigned int port = 5903; const char *request = "10.60.1.124:5905";
BASH CODE
make && ./test1

正常情况下,返回映射后的地址和端口