Comments
Description
Transcript
カラー
i226 計算機ネットワーク特論 第7回 2007.10.30 2 本日の内容 • アプリケーション層とネットワークプログラミン グ – – – – – – ネットワークアプリケーション アプリケーションプロトコル サーバー・クライアントモデル ソケット RPC データ表現 3 アプリケーション層 • ユーザーが直接利用するサービスを提供(ネット ワークを利用するアプリケーションプログラム) • プログラム同士が使うデータの形式や手順がアプ リケーション層プロトコルとなる • 7層モデルで独立していた二つの層の機能を含む – データ表現 – セッション管理 ネットワークアプリケーショ ンとプロトコル • 電子メール – pop, smtp, imap • WWW – http • ニュース – nntp • 遠隔ログイン – telnet, rlogin • ファイル転送 – ftp, rcp • 情報検索サービス – Gopher, Archie • 名前情報サービス – DNS, NIS, LDAP • ネットワーク管理 – SNMP • ファイル共有 – NFS, SMB • ユーザーインタフェース –X 4 5 Telnet • インターネットのアプリケーションの基本 • 仮想端末(Network Virtual Terminal) – NVT ASCII文字集合 – telnet command 7bitの文字コード • 起動時にオプションのネゴシエーション RCVD SENT RCVD RCVD SENT RCVD RCVD RCVD RCVD RCVD RCVD RCVD RCVD SENT RCVD SENT [cr-sun7] % telnet telnet> toggle options Will show option processing. telnet> open localhost Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. SENT DO SUPPRESS GO AHEAD SENT WILL TERMINAL TYPE SENT WILL NAWS SENT WILL TSPEED SENT WILL LFLOW SENT WILL LINEMODE SENT WILL NEW-ENVIRON SENT DO STATUS RCVD DO TERMINAL TYPE RCVD DO NAWS SENT IAC SB NAWS 0 80 (80) 0 24 (24) DO XDISPLOC WONT XDISPLOC DO NEW-ENVIRON DO OLD-ENVIRON WONT OLD-ENVIRON WILL SUPPRESS GO AHEAD DONT TSPEED DONT LFLOW DONT LINEMODE WONT STATUS DONT XDISPLOC DONT OLD-ENVIRON IAC SB TERMINAL-TYPE SEND IAC SB TERMINAL-TYPE IS "VT220" IAC SB NEW-ENVIRON SEND IAC SB NEW-ENVIRON IS VAR "PRINTER" VALUE "ps-lw16" SunOS 5.7 6 電子メール • MTA (Mail Transfer Agent) – メールを送り届ける – sendmailが代表格 (他にqmail, Postfix, eximなど) – SMTPプロトコルで転送 • MUA (Mail User Agent) – 自分宛のメールを取ってきてユーザーとやりとりする – mh, mutt, Eudora, OutlookExpressなど – POP, IMAPプロトコル 送信はSMTP • Fig. 7-15 SMTP MUA MTA メールサーバー SMTP Internet MTA メールサーバー pop, imap MUA 7 電子メール • SMTPで扱うメールデータは7bit文字 – MIME(Multipurpose Internet Mail Extensions)を使って 様々なデータに対応 Fig. 7-11 - 7-12 – 文字ベースのやりとり Fig. 7-14 • 全く異なったメールシステムとの間ではゲート ウェイで接続 Fig. 7-48(3rd. Ed.) – グループウェアやパソコンを対象としたメールシステム など ゲートウェイ –アプリケーションレイヤでの相互接続をするもの –IPコミュニティではルーターのことをゲートウェイと呼んでいた時代も あったが、現在はルーターという用語に統一 8 ニュース、www • ニュース – バケツリレー式のテキストデータ配送システム – NNTP • www – HTTP – URL(Uniform Resource Locator) • スキーム//ロケーション • http://user:password@host:port/path – HTML • SGMLに基づくマークアップ言語 – W3C (world wide web consortium) • www関係の標準や規格をとりまとめる国際機関 9 SNMP • Simple Network Management Protocol • ネットワーク機器の情報を収集 • マネージャが各機器の中にあるエージェントに聞 いて回る • 様々な内部データ表現を使う機器間で通信するた め、抽象的な統一データ表現 (ASN.1: Abstract Syntax Notation 1のサブセット)を利用 • MIB: Management Information Databaseという 形で情報を管理 • コマンドはgetとsetとトラップだけ • 詳細はネットワーク管理の回で ネットワーク アプリケーションモデル • Server - Client – サービスを提供するサーバーと、サービスを利用するク ライアント – ファイルサーバー、メールサーバー – Xサーバー • ユーザーとのインタフェースを各プログラムにサービス • Peer to Peer – 対等の立場にあるシステム同士でのサービス相互利用 • (同等のサーバーとクライアントを有するシステム同士) • サーバーを持たない設計のサービス – ブロード(マルチ)キャスト型のサービス • 2層や3層ではユニキャストでも繰り返すことで実質ブロード(マ ルチ)キャストに 10 11 サーバークライアント • 反復サーバー (iterative server) – サーバープロセスが自分でサービスを提供 – サービスが既知の短時間で終わる場合に有効 • 並行サーバー (concurrent server) – サーバープロセスが自分の分身を作ってサービスを提供 – 複数の分身がサービスを同時に提供可能 • サーバーの待ち受け Fig. 6-9 – サーバープロセス自身が待つ – 窓口プロセスに起動してもらう • UNIXではinetd /etc/inetd.confを参照 • 起動時に時間がかかるため、サービスによっては不適切なことも 12 ソケット • ネットワークを介した通信も、プロセス同士の通信 (プロセス間通信)のひとつ • BSD UNIXで導入された"ソケット" – ネットワーク層アドレスとトランスポート層アドレスの組 – 同一コンピュータ内の通信も、インターネット越しの通信 も同じように扱う – 他の多くのOSでもソケットの概念が使われている • アソシエーション – {protocol, local-address, local-port, foreign-address, foreign-port} – 5つ組で、トランスポート層での一つの接続が特定 13 bsd socket – int socket(int domain, int type, int protocol); • ソケット記述子が返る • domain – PF_UNIX UNIX system internal protocols – PF_INET ARPA Internet protocols • type – SOCK_STREAM (TCP) – SOCK_DGRAM (UDP) – SOCK_RAW (IP) – TCP: ファイルの入出力と同様 • socket, bind, listen, acceptとsocket, connectで接続、後は read, write、最後はclose – UDP: 単発のやりとり • socket, bindした後はsendtoとrecvfromでやりとり 14 RPC • Remote Procedure Call – プロセス間通信を意識せずに通信を実現 • 手続き(procedure)単位でネットワーク中にある別 のノードに仕事を依頼 • rpcgen (RPCプロトコルコンパイラ)により通信部 分は自動生成 – prog.xファイルを作成し、rpcgenにかける • prog_svc.c, prog_clnt.c, prog.hが生成 (スタブ) – クライアントのプログラムファイルとprog_clnt.cおよ び、サーバー側のルーチンファイルとprog_svc.cを 各々-lnslをつけてコンパイル • portmapperというport番号割り当て役が存在 15 RPCの例 – W.R. Stevens, UNIX Network ProgrammingのSun RPC の例題 rdate プログラム – RPCsample.tarとしてホームページにあり – 元ファイルはdate.x, date_svc.c, rdate.c – rpcgen date.x – cc -o rdate date_clnt.c rdate.c -lnsl – cc -o date_svc date_proc.c date_svc.c -lnsl [cr-sun7] % ./date_svc [cr-sun7] % ./rdate localhost time on host localhost = 973424696 time on host localhost = Sun Nov 5 20:44:56 2000 16 RPCの例(動作) • サーバープログラムが起動 – UDPソケットを作成、適当なローカルポートにbind – ポートマッパプロセスにプログラム番号バージョン番号、 ポート番号を登録 – これらの動作は全部rpcgenが作るサーバースタブがやっ てくれる • クライアントプログラムが起動 – リモートシステム名、プログラム番号、バージョン番号、 プロトコルを指定 – リモートシステムのポートマッパからポート番号を知る 17 RPCの例(動作) • クライアントがリモートプロシジャを呼ぶ – – – – さきほど調べたポート番号に通信 返事がないときには再送 引数や戻り値がある場合にはXDR標準形式に変換 この辺の仕事もrpcgenが生成するクライアントスタブが やってくれる • サーバーにクライアントからの要求が届く – – – – 受ける どの関数が呼ばれたかを判断する 引数や戻り値がある場合にはXDR標準形式に変換 これらもサーバースタブの仕事 18 データ表現 • 各マシンごとにデータの表現形態が異なる – endian • little endian: MSBを上位アドレスに DEC, Intel • big endian: MSBを上位アドレスに IBM, Motorola, Sparc – bit幅 – 浮動小数点型 • ネットワーク中を流すときには共通の型に変換 – man byteorderで出てくる関数群 – もっと複雑な型を扱うにはSun XDRのような表現形式 – 送信、受信、両方で変換処理が必要 • 実際には変換が必要ないアーキテクチャであればNULLマクロ 19 UNIXのプロトコルスタック • BSD UNIXにおけるネットワークのスタック – 各々の層の間にAPI – 複数のエンティティをモジュール化して、統一的な扱い を提供 Application Presentation Session Transport Network Datalink Physical ユーザー 空間 ソケット層 カーネル 空間 Applications プロセス プロトコル層 XDR SOCK_STREAM SOCK_DGRAM TCP IP インタフェイス層 シリアル Ether UDP FDDI その他 アプリケーション以外の レイヤ • それぞれの層が提供するプリミティブを実装 • Tanenbaum教科書に概念的なサンプルコードあり • 各層で実現すべきアルゴリズムのみを実装し、変 数は外から見えない – インタフェース、サービス、プロトコル – 上位層および下位層と通信する関数 20 21 ネットワークレイヤモデル • 各層における役割、モデルの意味を再確認 アプリケーション アプリケーション アプリケーション プレゼンテーション セッション トランスポート ネットワーク トランスポート トランスポート ネットワーク ネットワーク データリンク データリンク 物理 OSI 物理 デファクト5層モデル 物理 (host to network) TCP/IP 22 次回予告 • インターネットワーキング – ルーティング – ルーティングアルゴリズム – 名前情報