RPC:Remote Procedure Call Protocol Specification

Slides:



Advertisements
Similar presentations
電子社会設計論 第12回 Electronic social design theory 中 貴俊.
Advertisements

シーケンス図の生成のための実行履歴圧縮手法
第1回.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
WSDL と JAX-RPC 年10月13日 Webサービス II (第3回) WSDL と JAX-RPC 年10月13日.
「まめだくん Ver.1.0」 特徴と利用方法.
HTTPプロトコルとJSP (1) データベース論 第3回.
HTTPプロトコル J2EE I 第7回 /
Linuxカーネルについて 2014/01.
Telnet, rlogin などの仮想端末 ftp などのファイル転送 rpc, nfs
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
シグナル通信 普通の割込みとソフトウェア割込み ソフトウェア割込みとシグナル キーボードからのシグナル 例外 (exception)
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第11回 プロセス間通信4 仮想FTPの実現 担当:青木義満
ネットワーク機器接続 2SK 情報機器工学.
WSDL と JAX-RPC 年10月20日 Webサービス II (第4回) WSDL と JAX-RPC 年10月20日.
(B2) 親: minami, kazuki 多様な認証機器に対応する 認証システム (B2) 親: minami, kazuki.
情報コミュニケーション入門 総合実習(1) 基礎知識のポイント(2)
RMI ソフトウェア特論 第6回 /
公開鍵認証方式の実習 TeraTermの場合
モバイルP2Pを用いた携帯電話 動画配信手法の提案 第3回
第8章 Web技術とセキュリティ   岡本 好未.
Step.9 VPN VPNのトンネルを張る PC 3 PC 1 PC 2 論理ネットワーク1 xx (自動割当)
Ibaraki Univ. Dept of Electrical & Electronic Eng.
IPv6 ネットワークにおける エニーキャスト通信実現のための プロトコル設計と実装
ネットワークアプリケーションと セキュリティ
SOAP/UDDI/WSDLによるB2Bシステムの開発
SOAP/UDDI/WSDLによるB2Bシステム構築の一事例
ウイルスについて I98N044 久野耕介 I98N114 藤田和久
Cisco Router GUI設定 CCPE3.2 紹介 本資料に記載の各社社名、製品名は、各社の商標または登録商標です。
特定ユーザーのみが利用可能な仮想プライベート・ネットワーク
WebサービスII (第7回) 2007年11月7日 植田龍男.
第15章 TFTP:トリビアル・ファイル転送プロトコル
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
インターネットにおける真に プライベートなネットワークの構築
実行時情報に基づく OSカーネルのコンフィグ最小化
Linux リテラシ 2006 第5回 SSH と SCP CIS RAT.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
オープンソース開発支援のための リビジョン情報と電子メールの検索システム
第16章 BOOTP:ブートストラップ・プロトコル
Webプロキシ HTTP1.0 ヒント CS-B3 ネットワークプログラミング  &情報科学科実験I.
公開鍵認証方式の実習 MacOS Xの場合.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
ネットワークプログラミング (3回目) 05A1302 円田 優輝.
VPNとホストの実行環境を統合するパーソナルネットワーク
最低限インターネット ネットワークにつなぎましょ!
情報共有による Z39.50データベース選択支援環境
仮想環境を用いた 侵入検知システムの安全な構成法
gate登録システム: 設計ポリシーから使い方まで
マイグレーションを支援する分散集合オブジェクト
実装について 前田俊行.
「マイグレーションを支援する分散集合オブジェクト」
System.AddInを利用したアプリケーション拡張 - アドインの開発 -
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
システムプログラミング 第10回 プロセス間通信3 簡易Web server(準備) Chat プログラム 担当:青木義満、篠埜 功
第5回 プログラミングⅡ 第5回
プログラム分散化のための アスペクト指向言語
コンピュータアーキテクチャ 第 5 回.
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第11回 プロセス間通信4 仮想FTPの実現 担当:青木義満
異種セグメント端末による 分散型仮想LAN構築機構の設計と実装
ネットワーク・プログラミング TCPサーバ.
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
SMTPプロトコル 2001年8月7日 龍 浩志.
P2P & JXTA Memo For Beginners
プログラミング言語論 プログラミング言語論 演習5 解答と解説 演習5 解答と解説 1 1.
TCP/IPの通信手順 (tcpdump)
System.AddInを利用したアプリケーション拡張 - アドインの開発 -
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
Presentation transcript:

RPC:Remote Procedure Call Protocol Specification 分散システム特論 RPC:Remote Procedure Call Protocol Specification 情報工学専攻 修士課程一年 谷口秀夫研究室 石井 陽介

発表手順 (1)参照RFCについて (2)RFC1050の構成 (3)RPCとは (4)RPCプログラム作成の流れ (5)RPCの利用例(NFS) (6)まとめ

参照RFCについて ・RFC1050 (RPC) ・RFC1057 (RPC:Version2) ・RFC1050 (RPC) ・RFC1057 (RPC:Version2) ・RFC1831 (RPC:Version2)Standard Track ・RFC1014 (XDR) ・RFC1832 (XDR)Standard Track

RFC1050の構成 1. Introduction 2. Terminology 3. The RPC Model  1. Introduction  2. Terminology  3. The RPC Model  4. Transports and Semantics  5. Binding and Rendezvous Independence  6. Authentication  7. RPC Protocol Requirements  8. The RPC Message Protocol  9. Authentication Protocols 10. Record Marking Standard 11. The RPC Language Appendix: Port Mapper Program Protocol

RPCとは RPC(Remote Procedure Call)(遠隔手続き呼び出し) RPC(Remote Procedure Call)(遠隔手続き呼び出し)   ・処理要求全体を一つの手続き呼び出しとみなして実行する    「プロセス間通信」の方法の一つ   ・NFS、NISなどで利用   ・代表的な実装(SunRPC、DCE RPC、CORBA etc.) RPCの特徴   (1)クライアント・サーバモデル   (2)普通の手続き(関数)呼び出しと似た方法で通信可能   (3)コネクションが作られない   (4)同期式通信(非同期も可) RPCにおける「遠隔(remote)」の概念   「別のコンピュータ」      「別のアドレス空間」

RPCの動作 クライアント サーバ クライアント側プログラム サーバ側プログラム クライアント側スタブ サーバ側スタブ ネットワークインタフェース (TCP/IP,UDP/IP etc.) ネットワークインタフェース (TCP/IP,UDP/IP etc.)

RPC実現のためには (1)RPCサービスの特定 (2)RPC利用時に必要な情報 (3)データ交換形式 (4)セキュリティ機能 (5)RPCメッセージの形式 (6)RPCで利用する手続きの定義

RPCサービスの特定 三つの番号によりサービスを特定 (1)プログラム番号: (2)バージョン番号: (3)プロシージャ番号: 提供サービスを識別 サービス毎のバージョンを識別 実行可能な手続きを識別 プログラム番号の割当て 0x0 - 0x1fffffff Sunが定義 0x20000000 - 0x3fffffff ユーザが独自に利用可能 0x40000000 - 0x5fffffff APが動的に利用可能 0x60000000 - 0x7fffffff reserved 0x80000000 - 0x9fffffff reserved 0xa0000000 - 0xbfffffff reserved 0xc0000000 - 0xdfffffff reserved 0xe0000000 - 0xffffffff reserved

RPC利用時に必要な情報 ・RPC利用時に必要な情報 (1)プログラム番号 (2)バージョン番号 (3)プロシージャ番号 ・通信に必要な情報  RPC利用時に必要な情報 ・RPC利用時に必要な情報   (1)プログラム番号   (2)バージョン番号   (3)プロシージャ番号 ・通信に必要な情報   (4)サーバマシンのIPアドレス   (5)サーバプログラム(利用サービス)のポート番号       ・動作ホスト上で動的にポート番号を割当てる      サーバプログラム           ポート番号 対応関係を管理するサービス portmap

portmapサービス portmapサービスの特徴 (1)プログラム番号100000を持つ (2)ポート番号が固定されている   (1)プログラム番号100000を持つ   (2)ポート番号が固定されている      ・TCP/IP、UDP/IPのポート111番 portmapサービスの機能   (1)PMAPPROC_SET:       サーバプログラムに対応するポートの登録   (2)PMAPPROC_UNSET:       サーバプログラムに対応するポートの登録解除   (3)PMAPPROC_GETPORT:       サーバプログラムに対応するポート番号の獲得   (4)PMAPPROC_DUMP:       portmapが持つ情報一覧の獲得   (5)PMAPPROC_CALLIT:       手続き呼び出し(ブロードキャスト時に利用)

portmapを利用したRPCの様子 RPCサービス起動時 RPCサービス呼び出し時 (port 111) portmap (port 111) portmap (port XXX) サーバプログラム (port 111) portmap (1)ポート番号 問い合わせ (3)RPC 呼び出し ポートの 登録要求 利用可能ポートの 登録 (4)RPC 実行結果 (2)ポート番号 返答 サーバプログラム クライアントプログラム

データ交換形式 異なるマシン間でのデータのやり取り ・エンディアン問題を解決する必要がある RPCにおける解決法    ・エンディアン問題を解決する必要がある RPCにおける解決法    ・XDR(External Data Representation Standard)     というデータ交換形式を利用(ref.RFC1014 RFC1832) マシンAにおける データ形式 マシンBにおける データ形式 XDR marshaling unmarshaling

セキュリティ機能 RPCで提供される認証方式(ユーザ認証方式) RPCメッセージのヘッダ部内に登録 (1)AUTH_NONE   RPCメッセージのヘッダ部内に登録    (1)AUTH_NONE      ・無認証(誰でもサービスが利用可能)    (2)AUTH_UNIX(AUTH_SYS)      ・UNIXにおけるユーザ情報を利用した認証       (ユーザID、グループID、ホスト名 etc.)    (3)AUTH_DES      ・DES暗号方式を利用した認証       (公開鍵暗号、秘密鍵暗号)    ・ ・ ・ 認証方式はRPC実行前にクライアント側で設定    ・認証方式の変更:      クライアントプログラムの変更    ・新たな認証方式の採用: サーバプログラムも変更

RPCメッセージの形式(呼び出し時) xid トランザクション識別子 mtype メッセージタイプ(CALL/REPLY) rpcvers RPCバージョン番号(=2) prog プログラム番号 vers バージョン番号 proc プロシージャ番号 auth_flavour 認証方式 cred クライアント側(credential) body 認証情報 auth_flavour 認証方式 verf サーバ側(verifier) body 認証情報 ・ サービス固有の引数

RPCメッセージの形式(accept返答時) xid トランザクション識別子 mtype メッセージタイプ(CALL/REPLY) reply_stat 返答状態(ACCEPTED/DENIED) auth_flavour 認証方式 verf サーバ側(verifier) body 認証情報 accept_stat 受け付け状態(SUCCESS/ PROG_MISMATCH/...) ・ サービス固有の処理結果

RPCで利用する手続きの定義 ・RPC言語を用いて利用する手続きのインタフェースを定義 XDRを拡張したもの      XDRを拡張したもの ・手続き本体(クライアント/サーバ)は別に記述 ・定義例(portmap) 手続きの引数の型 program PMAP_PROG { version PMAP_VERS { void PMAPPROC_NULL(void) = 0; bool PMAPPROC_SET(mapping) = 1; bool PMAPPROC_UNSET(mapping) = 2; unsigned int PMAPPROC_GETPORT(mapping) = 3; pmaplist PMAPPROC_DUMP(void) = 4; call_result PMAPPROC_CALLIT(call_args) = 5; } = 2; } = 100000; 手続きの 戻り値の型 バージョン番号 プロシージャ番号 プログラム番号

RPCプログラムの作成 ユーザが作成するもの (1)クライアント側メインプログラム(XYZ_client.c)   (2)サーバ側で呼び出されるプログラム(XYZ_server.c)   (3)RPC言語による定義(XYZ.x) 自動生成されるもの(% rpcgen XYZ.x により生成)   (4)RPCプログラムで利用するヘッダファイル(XYZ.h)   (5)クライアント側スタブプログラム(XYZ_clnt.c)   (6)XDRを利用するための手続き(XYZ_xdr.c)   (7)サーバ側メインプログラムとディスパッチ手続き(XYZ_svc.c) (1)~(7)のファイルよりロードモジュールを作成   (A)XYZ_client   (B)XYZ_server

RPCプログラム作成の流れ ユーザが 作成 XYZ_client.c XYZ.x XYZ_server.c rpcgen により生成 XYZ_clnt.c XYZ.h XYZ_xdr.c XYZ_svc.c XYZ_client.o XYZ_clnt.o XYZ_xdr.o XYZ_svc.o XYZ_server.o ロードモジュール XYZ_client XYZ_server

RPCの利用例 NFS(Version.3) ・FreeBSD4.3‐RELEASEのソースコードを参照   ・FreeBSD4.3‐RELEASEのソースコードを参照 ($SRC = http://www.jp.FreeBSD.org/cgi/cvsweb.cgi/src/) ・RPC言語によるNFSのためのインタフェース定義   : /usr/include/rpcsvc/nfs_prot.x ($SRC/include/rpcsvc/nfs_prot.x?rev=1.7) ・カーネル内に手続き本体(クライアント/サーバ)を記述   : $SYS/nfs/krpc_subr.c ($SRC/sys/nfs/Attic/krpc_subr.c?rev=1.13.2.1) : $SYS/nfs/nfs_serv.c ($SRC/sys/nfs/Attic/nfs_serv.c?rev=1.93) etc.

RPCを利用したNFSサービスの流れ NFSクライアント NFSサーバ ユーザAP システムコールインタフェース カーネル VFSインタフェース VFSインタフェース UFS NFSクライアント NFSクライアント UFS RPC RPC DK DK

NFSで利用する手続きの定義 ・NFS(Ver.3)で定義されている手続きの数は22個 ・NFSのポート番号は2049番とあらかじめ決められている nfs_prot.x 内の記述(抜粋) const NFS_PORT = 2049; ... program NFS3_PROGRAM { version NFS_V3 { void NFSPROC3_NULL(void)          = 0; GETATTR3res NFSPROC3_GETATTR(GETATTR3args) = 1; SETATTR3res NFSPROC3_SETATTR(SETATTR3args) = 2; LOOKUP3res NFSPROC3_LOOKUP(LOOKUP3args) = 3; ACCESS3res NFSPROC3_ACCESS(ACCESS3args) = 4; COMMIT3res NFSPROC3_COMMIT(COMMIT3args) = 21; } = 3; } = 100003;

まとめ (1)参照RFCについて (2)RFC1050の構成 (3)RPCとは (4)RPCプログラム作成の流れ (5)RPCの利用例(NFS)