...

カラー

by user

on
Category: Documents
14

views

Report

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
次回予告
• インターネットワーキング
– ルーティング
– ルーティングアルゴリズム
– 名前情報
Fly UP