第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)的每个版本都有各自不同的端口号。

速读原著-TCP/IP(端口映射器)相关推荐

  1. 速读原著-TCP/IP(BOOTP示例)

    第16章 BOOTP:引导程序协议 16.3 一个例子 让我们看一个用 B O O T P引导一个X终端的例子.图 1 6 - 3显示了t c p d u m p的输出结果(例中客户名为p r o t ...

  2. 速读原著-TCP/IP(UDP首部)

    第11章 UDP:用户数据报协议 11.2 UDP首部 U D P首部的各字段如图11 - 2所示. 端口号表示发送进程和接收进程.在图 1 - 8中,我们画出了 T C P和U D P用目的端口号来 ...

  3. 速读原著-TCP/IP(BOOTP 的分组格式)

    第16章 BOOTP:引导程序协议 16.2 BOOTP 的分组格式 BOOTP 请求和应答均被封装在U D P数据报中,如图1 6 - 1所示. 图1 6 - 2显示了长度为3 0 0字节的B O ...

  4. 速读原著-TCP/IP(tcpdump的输出)

    A.4 tcpdump的输出 t c p d u m p的输出是"原始的".在本书中包含它的输出时,我们对它进行了修改以便阅读.首先,它总是输出它正在监听的网络接口的名字.我们把这 ...

  5. SQL Server 默认和命名实例连接问题-TCP/IP 端口

    TCP/IP的基本工作原理这里就不浪费口水了.现在这网络年代,谁不知道TCP/IP啊.不要跟我抬杠说你偏就没听说过TCP/IP阿,真是这样那你得自己去补补课了. TCP/IP协议有两个基本的东西,一个 ...

  6. 端口映射软件大-比较|内网端口映射器使用方法

    [转载]端口映射软件大-比较|内网端口映射器使用方法 2010-05-15 13:34 功能多少作为顺序: PortTunnel 2.0.13 简体中文版 优点:功能最为强大,默认为服务模式. 缺点: ...

  7. Tcp/IP 端口耗尽

    原文链接:http://msdn.microsoft.com/zh-cn/library/aa560610(v=bts.10).aspx 本文内容:1.查看端口使用状况的方法:2.端口耗尽所带来的问题 ...

  8. 何为固定IP和动态IP?快解析搞定固定IP端口映射!

    目前,我们上网所使用的有动态IP和静态IP两种,IP地址就是我们上网时所使用的"门牌号".全国目前共有3亿左右的IP地址,我们平时上网拨号,网上冲浪大多数使用的是动态IP.那么,当 ...

  9. 如何让本地局域网IP端口映射到域名

    外网用户不能通过访问内网IP来实现访问我们的FTP.Web.SVN等应用服务器,也不能直接通过内网IP来远程桌面到内网主机电脑.对于外网用户,起唯一地址作用的就是域名,你的服务器是需要让外网能够识别的 ...

  10. TCP/IP 端口号大全

    端口:0 服务:Reserved 说明:通常用于分析操作系统.这一方法能够工作是因为在一些系统中"0"是无效端口,当你试图使用通常的闭合端口连接它时将产生不同的结果.一种典型的扫描 ...

最新文章

  1. Mac OS X 使用命令sed替换tab
  2. 英特尔挖走苹果M1芯片功臣,他主导苹果放弃x86架构
  3. 数据结构与算法 / 分治算法
  4. Redis 05_List列表 数组 Hash散列
  5. 实用程序类与函数式编程无关
  6. 【ElasticSearch】ElasticSearch 嵌套查询:如何搜索嵌入的文档
  7. node js、npm、homebrew、cocoapod、git、hexo
  8. 【MySQL】MySQL 5.7 sys Schema
  9. Alfresco安装与配置图解
  10. 如何将交叉引用参考文献批量变为上标
  11. 如何在linux上下载github项目,在linux上使用github
  12. 分布式锁的实现【转载】
  13. Linux shell实现阶乘
  14. splice、slice详解
  15. 亚马逊云科技 AI For Good-2022优秀方案开源分享——望楼
  16. 优化| 手把手教你学会杉树求解器(COPT)的安装、配置与测试
  17. 解决MAC系统字体模糊发虚,并更换默认中文字体为微软雅黑
  18. SSM+Vue+Element-UI实现网上跳蚤市场
  19. PMP考生注意了!你们最关心的问题都在这!
  20. 话说android端七牛图片上传

热门文章

  1. 随机微分方程学习笔记03 Fisk-Stratonovich积分
  2. 利用计算机模拟,科学家试图利用计算机模拟整个宇宙的演化
  3. kettle Windows下载
  4. mysql汽车品牌系列_爬取汽车之家汽车品牌型号系列数据
  5. 栅栏密码解密——Java实现
  6. oracle rman备份和恢复数据库,Oracle rman备份和还原恢复数据库
  7. 黑客帝国代码雨以及其灵活使用——道家真言!!(附带相关知识点)
  8. linux终端文件保存,Linux 终端中命令输出保存到文件中的方法
  9. VSCode 中文乱码
  10. 精密电阻选购及换算方法