廣安知之 + クラスタ研究グループ 同志社大学

Slides:



Advertisements
Similar presentations
TCP/IP によるチャットプログラ ム 薄井 秀晃. 基礎知識編 TCP/IP とは? IP とは・・・ Internet Protocol の略称であり通信方法の技術的なルールで あり、実際にデータを送受信する前にデータを小さなデータ に分割し、それに発信元と受信先の IP アドレスを付加させて.
Advertisements

Ibaraki Univ. Dept of Electrical & Electronic Eng.
ネットワークと コミュニケーション技法 第7回 - インターネット(1) -.
インターネットのプロトコル階層 ネットワーク層(IPアドレス)
第1回.
コンピュータ基礎(10) 11章 通信ネットワーク.
前回の課題 IPv6アドレス IP ARP ICMP NAT インターネット層 2003年12月4日 情報ネットワーク論 新村太郎.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
2004年度 情報システム構成論 第2回 TCP/IPネットワーク
TCP (Transmission Control Protocol)
独習Java ・ 12.1  インターネットアドレス ・ 12.2  サーバーソケットとソケット  12月 19日    小笠原 一恵.
「コンピュータと情報システム」 07章 インターネットとセキュリティ
30分でわかるTCP/IPの基礎 ~インターネットの標準プロトコル~ 所属: 法政大学 情報科学研究科 馬研究室 氏名: 川島友美
廣安 知之 同志社大学 工学部 知識工学科 PCクラスタを作ろう!! 廣安 知之 同志社大学 工学部 知識工学科
Windows Network Programming
WindowsNTによるLAN構築 ポリテクセンター秋田 情報・通信系.
TCPソケットプログラミング ソケットプログラミング TCP-echoのデータ通信手順
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Copyright Yumiko OHTAKE
心理学情報処理法Ⅰ コンピュータネットワーク概論.
スキルアップ.
トランスポート層.
Telnet, rlogin などの仮想端末 ftp などのファイル転送 rpc, nfs
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第11回 プロセス間通信4 仮想FTPの実現 担当:青木義満
コンテンツ配信 エンコード (符号化) CBR (Constant Bit Rate) VBR (Variable Bit Rate)
ネットワーク機器接続 2SK 情報機器工学.
パケットの流れ ブラウザ OS TCP IP LANアダプタ ハブ ルータ HTTPメッセージ TCP HTTP断片 TCP HTTP断片
第12回独習Javaゼミ 12章セクション3~4 発表者 直江 宗紀.
第2章 第1節 情報通信の仕組み 1 ネットワークの仕組み 2 通信プロトコル 3 認証と情報の保護
イーサネット.
情報検索概説II(99秋) 第3回 1999/10/21 インターネットの仕組み(2).
総合講義B:インターネット社会の安全性 第6回 ネットワークの基盤技術
Linux リテラシ 2006 第4回 ネットワーク CIS RAT.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
ネットワークプログラミング 中村 修.
IPv6 ネットワークにおける エニーキャスト通信実現のための プロトコル設計と実装
ネットワークアプリケーションと セキュリティ
インターネットの基礎知識 その3 ~TCP・UDP層編~
UDPマルチキャストチャット                    空川幸司.
ソケットプログラム(TCP,UDP) EasyChat開発
岡村耕二 トランスポート層 ソケットプログラミング 岡村耕二 情報ネットワーク.
岡村耕二 トランスポート層 岡村耕二 情報ネットワーク.
IP ルーティングの図示 情報科学科 松澤 智史.
ネットワーク技術II 第9.1課 TCP/IPプロトコルスイート
出典・・・基礎からわかるTCP/IPコンピューティング入門 村山公保著
ネットワークの基礎知識 電子制御設計製図Ⅰ   2014年5月2日 Ⅲ限目.
インターネットにおける真に プライベートなネットワークの構築
岡村耕二 トランスポート層 岡村耕二 情報ネットワーク.
TCP/IP入門          櫻井美帆          蟻川朋未          服部力三.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
UDPマルチキャストチャット    空川幸司.
Webプロキシ HTTP1.0 ヒント CS-B3 ネットワークプログラミング  &情報科学科実験I.
TCP/IPとプロセス間通信 2007年1月12日 海谷 治彦.
岡村耕二 トランスポート層 岡村耕二 情報ネットワーク.
岡村耕二 トランスポート層 岡村耕二 情報ネットワーク.
最低限インターネット ネットワークにつなぎましょ!
情報実験 第五回 最低限 internet ~ネットワークの仕組みを知ろう~
Step.8 ファイアウォール PC 3 PC 1 PC 2 許可したアクセス のみ通過させる アクセスする ファイアウォール
岡村耕二 TCP通信プログラム 岡村耕二 情報ネットワーク.
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第11回 プロセス間通信4 仮想FTPの実現 担当:青木義満
4.3 IPとルーティングテーブル 国際産業情報学科 2年 大竹 雅子.
異種セグメント端末による 分散型仮想LAN構築機構の設計と実装
ネットワーク・プログラミング TCPサーバ.
情報ネットワーク 岡村耕二.
IPアドレス 平成14年7月9日 峯 肇史 牧之内研究室「UNIX とネットワーク基礎勉強会」Webページ
ソケットの拡張によるJava用分散ミドルウエアの高信頼化
第6章 インターネットアプリケーション 6.1 インターネットアプリケーション 6.2 Javaによるネットワーク処理 6.3 電子メール
ユーザ認証の盗聴 2002/9/10 峯 肇史 牧之内研究室「インターネット実習」Webページ
岡村耕二 TCP通信プログラム 岡村耕二 情報ネットワーク.
Presentation transcript:

廣安知之 + クラスタ研究グループ 同志社大学 ネットワーク入門 廣安知之 + クラスタ研究グループ 同志社大学

ネットワーク 通信 パラレルプログラミングには直接関係無い 現在のシステムでは不可欠 電子メイル,web 各種設定 PCクラスタの構築 ネットワーク  通信 パラレルプログラミングには直接関係無い 現在のシステムでは不可欠 電子メイル,web 各種設定 PCクラスタの構築 分散メモリ型マシンでの並列・分散処理 無線LAN,ネットワークストレージ,ネットワークブート

プロトコル TCP/IP

FTP, SMTP, telnet, TCP/IP, AppleTalk, …. プロトコル 通信をする上での約束ごと FTP, SMTP, telnet, TCP/IP, AppleTalk, …. こんにちは Hello

IP

何を規定すれば通信が行えるのか?

AからBへ“Hello”を送るには あて先の指定 ネット上で一つ Hello Hello A B Hello Hello Hello

IPアドレス インターネットなどのネットワークに 接続されたコンピュータの識別番号 202.23.129.104 インターネットなどのネットワークに  接続されたコンピュータの識別番号 202.23.129.104 202.23.129.101 202.23.129.103 202.23.129.102 10111111 11001000 11111110 11111110

AからCへ“Hello”を送るには Hello Hello B A Hello Hello Hello C Hello ネットワークの表示 ネットワークを橋渡すマシンの表示

ネットワークアドレス

ネットマスク ネットワーク部とホスト部の切れ目を示す IPアドレス:192.168.6.121 11000000 10101000 00000110 01111001 ネットワーク部 ホスト部 サブネットマスク:255.255.255.0 11111111 11111111 11111111 00000000 ネットワーク部 ホスト部

クラス ネットワークの規模によりIPアドレスは 3つのクラスに分かれる クラスA 224=約1600万台 クラスB 216=約65000台 クラスC 28=約250台 ネットワーク部 ホスト部

ゲートウェイ 2つのネットワークを結ぶ働き ゲートウェイ 192.168.0.系統 192.168.1系統

ブロードキャストアドレス ネットワークに接続されている全ての コンピュータと通信するためのアドレス

ドメイン名 IPアドレスのかわりに用いる識別名 www.doshisha.ac.jp -サーバの種類 -組織名称 ピリオドで分かれている -組織種別 -国

DNS ドメイン名とIPアドレスを対応付ける doshisha.ac.jpのIPアドレスは? 192.168.6.12です コンピュータ

DNS② DNSの仕組み acのDNS jpのDNS ルートDNS doshisha.ac.jpのIPアドレスは? 名前解決して下さい 192.168.6.12です jpのDNSなら分かる 了解! 192.168.6.12 名前解決して下さい acのDNSなら分かる 名前解決して下さい acのDNS jpのDNS ルートDNS

≪ IP version4の問題点(1) IPアドレス枯渇の危機! アドレス空間32bit PCユーザの増化 232≒43億 デバイスの増加 (地球の人口約55億) 232≒43億 デバイスの増加 IPアドレス枯渇の危機!

IP version4の問題点(2) セキュリティの不備 経路情報増大によりルータへの負担大 簡単な設定の要求が高まる 新しいIPが必要

IP version6の改良点 アドレス枯渇問題解消! アドレス空間128bit 128bit≒340澗=3.4×1038 ほぼ無限大 セキュリティ技術の導入 アドレス自動生成機能 フローラベルの導入

IPv6ヘッダの改良点 除去 高速化! 導入 フローラベル オプションフィールド ヘッダチェックサム 分割制御フィールド ルータ処理の 負担軽減 高速化! 導入 高品質な マルチメディア通信が可能 フローラベル

MACアドレス Media Access Control Addressの略 ネットワークカードに割り当てられる固有の番号 Ethernet上の機器間の物理的な通信を行う 3bytes 3bytes 00-a0-de 00-00-01 製造会社を示す番号 メーカーが独自に割り当てる番号

IPアドレスとの違い IPアドレス MACアドレス ネットワーク層におけるアドレス ソフトで設定可能 データリンク層におけるアドレス ネットワークカードによって固定

ARP Address Resolution Protocolの略 例えば IPアドレスが(1.1.1.1)のホストが,(1.1.1.2)のホストに対して通信を行うとする Broadcastアドレスに対して,ホスト(1.1.1.2)を尋ねる 1.1.1.1 1.1.1.2 1.1.1.3 1.1.1.4

ARP Address Resolution Protocolの略 例えば IPアドレスが(1.1.1.1)のホストが,(1.1.1.2)のホストに対して通信を行うとする ホスト(1.1.1.2)は,MACアドレスを返す 1.1.1.1 1.1.1.2 1.1.1.3 1.1.1.4

ARP Address Resolution Protocolの略 例えば IPアドレスが(1.1.1.1)のホストが,(1.1.1.2)のホストに対して通信を行うとする MACアドレスを使用して,通信を行う 1.1.1.1 1.1.1.2 1.1.1.3 1.1.1.4

パケット通信 長いデータは通信できない 小さな複数の情報に分割 データM データm1 データm3 データm2

パケット通信の問題点 パケットの順番 1 2 3 4 1 2 3 4 1 2 3 4 パケットの欠落 1 2 3 4 1 2 3 4 1 2 3 4

UDP UDP : User Datagram Protocol 正しく相手に届いたかの確認をしない 不確実であるが高速な通信を実現 ・・・・・

× TCP ○ TCP : Transmission Control Protocol インターネットの通信プロトコルとして最も普及 ※プロトコル こんにちは。 × Bonjour. こんにちは。 ○ こんにちは。

TCP 送信したデータが正しく相手に届いたかを確認 届いてなければ再送する もう1度お願いします! 了解!

TCPとUDP③ TCPとUDPの違い TCP UDP 信頼性 高信頼 低信頼 転送速度 低速 高速 転送形式 コネクション型 コネクションレス型 その他 端末間同士のデータ転送 上位レイヤからの送信要求が簡潔

ソケット通信

UNIXでの通信 ソケットを使ってデータの送受信 ソケットを使った通信 ソケット通信

ソケット 「接続の端点」 意味: コンピュータとTCP/IPを      つなぐ出入り口 ソケット TCP/IP

ソケット通信 ソケットを使って通信を行うには 2つのプログラムが必要 クライアントプログラム サーバプログラム ソケットを用意して サーバに接続要求を行う サーバプログラム ソケットを用意して接続要求を待つ

ソケット通信とは 接続待ち 接続待ちのサーバを クライアントが探す サーバを探す サーバ側 クライアント側

ソケット通信とは 接続を受信 サーバが見つかったら 接続して通信 サーバを見つけて接続 サーバ側 クライアント側

ソケット通信の流れ 1 ソケット生成 (socket) ソケット生成 (socket) クライアント サーバ

ソケット通信の流れ 2 サーバを探す (gethostbyname) 接続の準備 (bind/listen) クライアント サーバ

ソケット通信の流れ 3 接続要求 (connect) 接続受理 (accept) OK! クライアント サーバ

ソケット通信の流れ 4 通信 (send/recv) 通信 (send/recv) こんにちわ こんにちわ クライアント サーバ

ソケット通信の全体の流れ クライアント サーバ ソケット生成(socket) 接続要求(connect) サーバを探す (gethostbyname) データ送受信(send/recv) ソケットを閉じる(close) ソケット生成(socket) 接続の準備(bind) 接続待機(listen) 識別情報 接続受信(accept) データ送受信(send/recv) ソケットを閉じる(close)

識別情報 IPアドレス コンピュータを識別 プログラムを識別 正しくデータを受け渡しするために 通信する相手を識別する   コンピュータを識別 ポート番号   プログラムを識別 コンピュータのアドレス プログラムの識別番号

ウェルノウン ポート よく使われているプログラムの ポート番号は決まっている 1024番以下は全て決められている ポート番号 プログラム ウェルノウン ポート よく使われているプログラムの     ポート番号は決まっている ポート番号 プログラム 21 ftp 22 ssh 23 telnet 80 http(web) 1024番以下は全て決められている

クライアントプログラム(C) //client.c #include<stdio.h> #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<netdb.h> #include<string.h> #define PORT (u_short)10000 #define BUF_LEN 100 char hostname[]="localhost"; char buf[BUF_LEN]; main() { struct hostent *servhost; struct sockaddr_in server; int s; servhost = gethostbyname(hostname); bzero((char *)&server,sizeof(server)); server.sin_family = AF_INET; server.sin_port = PORT; bcopy(servhost->h_addr, (char *)&server.sin_addr,servhost->h_length); s = socket(AF_INET,SOCK_STREAM,0); connect(s,(void *)&server,sizeof(server)); read(s,buf,BUF_LEN); printf(buf); close(s); }

サーバプログラム(C) //server.c #include<stdio.h> #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<netdb.h> #include<string.h> #define PORT (u_short)10000 char hostname[] = "localhost"; main() { struct hostent *myhost; struct sockaddr_in me; int s_waiting, s; char msg[] = "Hello World!!\n"; myhost = gethostbyname(hostname); bzero((char *)&me, sizeof(me)); me.sin_family = AF_INET; me.sin_port = PORT; bcopy(myhost->h_addr, (char *)&me.sin_addr,myhost->h_length); s_waiting = socket(AF_INET,SOCK_STREAM,0); bind(s_waiting,(void *)&me,sizeof(me)); listen(s_waiting, 1); s = accept(s_waiting, NULL, NULL); close(s_waiting); write(s, msg, strlen(msg)); close(s); }

クライアントプログラム(Java) import java.io.*; import java.net.*; import java.lang.*; public class Client{ public static void main( String[] args ){ try{ //ソケットを作成 String host="localhost"; Socket socket = new Socket( host, 10000 ); //入力ストリームを作成 DataInputStream is = new DataInputStream ( new BufferedInputStream( socket.getInputStream())); //サーバ側から送信された文字列を受信 byte[] buff = new byte[1024]; int a = is.read(buff); System.out.write(buff, 0, a); //ストリーム,ソケットをクローズ is.close(); socket.close(); }catch(Exception e){ System.out.println(e.getMessage()); e.printStackTrace(); }

サーバプログラム(Java) //Server.java //ストリーム,ソケットをクローズ os.close(); import java.net.*; import java.lang.*; import java.io.*; public class Server{ public static void main( String[] args ){ try{ //ソケットを作成 ServerSocket svSocket = new ServerSocket(10000); //クライアントからのコネクション要求受付 Socket cliSocket = svSocket.accept(); //出力ストリームを作成 DataOutputStream os = new DataOutputStream( new BufferedOutputStream( cliSocket.getOutputStream())); //文字列を送信 String s = new String("Hello World!!\n"); byte[] b = s.getBytes(); os.write(b, 0, s.length()); //ストリーム,ソケットをクローズ os.close(); cliSocket.close(); svSocket.close(); }catch( Exception e ){ System.out.println(e.getMessage()); e.printStackTrace(); }

サーバプログラム(Java) ソケット作成,コネクション要求受付待機 出力ストリーム作成 ServerSocket svSocket = newServerSocket(10000); Socket cliSocket = svSocket.accept(); 出力ストリーム作成 DataOutputStream os = new DataOutputStream( new BufferedOutputStream( cliSocket.getOutputStream());

クライアントプログラム(C) アドレス設定 servhost = gethostbyname(hostname); bzero((char *)&server,sizeof(server)); server.sin_family = AF_INET; server.sin_port = 10000; bcopy(servhost->h_addr, (char *)&server.sin_addr, servhost->h_length);

クライアントプログラム(C) ソケット通信 s = socket(AF_INET,SOCK_STREAM,0); connect(s,(void *)&server,sizeof(server)); read(s,buf,BUF_LEN); printf(buf); close(s);

サーバプログラム(C) アドレス設定 myhost = gethostbyname(hostname); bzero((char *)&me, sizeof(me)); me.sin_family = AF_INET; me.sin_port = 10000; bcopy(myhost->h_addr, (char *)&me.sin_addr,myhost->h_length);

サーバプログラム(C) ソケット通信 s_waiting = socket(AF_INET,SOCK_STREAM,0); bind(s_waiting,(void *)&me,sizeof(me)); listen(s_waiting, 1); s = accept(s_waiting, NULL, NULL); write(s, "Hello World!!\n", 14); close(s);

クライアントプログラム(Java) ソケットを作成 入力ストリームを作成 Socket socket = new Socket( “hoge.com”, 10000 ); 入力ストリームを作成 DataInputStream is = new DataInputStream ( new BufferedInputStream( socket.getInputStream()));

n = is.read(buff); System.out.write(buff, 0, n); クライアントプログラム(Java) サーバ側から送信された文字列を受信 n = is.read(buff); System.out.write(buff, 0, n); ストリーム,ソケットをクローズ is.close(); socket.close();

サーバプログラム(Java) ソケット作成,コネクション要求受付待機 出力ストリーム作成 ServerSocket svSocket = newServerSocket(10000); Socket cliSocket = svSocket.accept(); 出力ストリーム作成 DataOutputStream os = new DataOutputStream( new BufferedOutputStream( cliSocket.getOutputStream());

サーバプログラム(Java) 文字列を送信 ストリーム,ソケットをクローズ String s = new String("Hello World!!\n"); byte[] b = s.getBytes(); os.write(b, 0, s.length()); ストリーム,ソケットをクローズ os.close(); cliSocket.close(); svSocket.close();

MPIメッセージパッシングライブラリ

MPIとは 並列プログラミングのための通信ライブラリ 三つの利用形式(C,C++,Fortran)がある 様々なプラットフォームで利用できる優れた フリーウェアもある MPIフォーラムという任意参加の会議で 作成されたAPI仕様

APIとは ソフトウェアの持つすべての機能を 逐次開発するのは非効率的 機能の使い方(関数の名前や引数)を定義 ソフトウェアの持つすべての機能を 逐次開発するのは非効率的 ソフトウェアでよく使われる機能を提供 機能の使い方(関数の名前や引数)を定義 実装はハードウェアによって異なる mpich P4 TCP/IP Ethernet

メッセージ通信を行うためには…. OSの知識(プロセス間通信など)が必要 通信プロトコルの知識が必要 多くの関数(socket,bind,listenなど)を 必要とする

MPIを用いるメリット ベースとなる言語(C,C++,Fortran)にMPI の関数を加えるだけで,並列プログラムを 書くことができる 様々な実装に容易に移植することができる 例えばMPI_SENDという関数を用いるだけで送信できる

ネットワークアプリケーション (クラスタ構築のためのツール)

クラスタに必要なツール 全てのマシンを操作しなければいけない rsh 実行ファイルなどを全てのマシンが共有しな ければいけない NFS 実行ファイルなどを全てのマシンが共有しな   ければいけない NFS アカウントの一貫性を保たなければいけない 全てのマシンにログインできなければいけない NIS

rsh Remote SHellの略 リモートホストに接続して,指定されたコマンド を実行する リモートホストに接続して,指定されたコマンド   を実行する 通信内容がそのままIPパケットに格納されて, 送られる 仕事を要求 接続する

rsh ー実行例ー 以下のコマンドをcherry01という名前のマ シン上で実行する rsh cherry02 cc test1.c これは,「cherry01からcherry02に対して, ファイルtest1.cのコンパイルを依頼する」, ということである.  

NFS Network File Systemの略 ファイルを共有するシステム  あるホストがエクスポートしたファイルシステ  ムを別のホストがマウントする G C-2 D F E A B C-1

NIS Network Information Serviceの略 クラスタ全体の情報を管理する 分散データベース サービス コピー マスタ クライアント database

NIS ●NISで提供される主な情報 ログイン名 パスワード ホームディレクトリ グループ名

クラスタ構築に必要なツール rsh 全てのマシンを操作するため NFS マシン全体でファイルを共有するため NIS アカウントに一貫性を持たせるため 自由に全てのマシンにログインするため

NFS Network File Systemの略 ファイルを共有するシステム  あるホストがエクスポートしたファイルシステ  ムを別のホストがマウントする D F E G A B

ハードウエアの紹介

Ethernet (1) Xerox社が開発したLANの規格 のちにEthernet 2.0として制定 DEC, Intel, Xeroxによる(DIX仕様) 現在はISOプロトコル層を考慮してIEEE802.3として規定 LANの規格として最も普及

Ethernet (2) ~10BASE-T 伝送速度: 10Mbps ケーブル: UTP CSMA/CD方式 スター型のネットワークトポロジ

Fast Ethernet ~100BASE-TX 伝送速度 : 100Mbps ケーブル : UTP(カテゴリー5) CSMD/CD方式 スター型のネットワークトポロジ

Gigabit Ethernet ~1000BASE-T Ethernet,Fast Ethernetの拡張版 伝送速度 : 1000Mbps ケーブル : UTP(カテゴリー5) CSMD/CD方式 スター型のネットワークトポロジ

ATM(Asynchronous Transfer Mode) セルと呼ばれる固定長のフレームを転送する通信方式 転送するデータがあるときだけセルを送信 データ、音声、動画などの情報を1つのネットワークで扱えるようにするため開発された LAN Emulationの技術でLANとして利用可能 伝送速度 : 25Mbps ATMセル

HiPPi(High Performance Parallel Interface) スーパーコンピュータ間, 高速ネットワークなどへの接続 伝送速度:1600Mbps         (64ビットパラレル通信) ケーブル : 光ケーブル 最大10kmまで伝送可能 スター型ネットワークトポロジ

Myrinet Myricom社が開発 PCクラスタコンピューティングの デファクト・スタンダードとして期待 EthernetやATMなどより優れた 性能,コストパフォーマンスを発揮

各ネットワークの性能比較(1)

各ネットワークの性能比較(2)

TCP以外のプロトコル

ゼロコピー通信とは 速さを最優先させた通信方法 クラスタの処理速度のボトルネックは通信 Scoreなどのシステムで実現できる データのコピーをなくすことによって速くする Scoreなどのシステムで実現できる

従来の通信 通信デバイスはカーネルが扱う 通信機能が階層化されている プログラムは通信デバイスを直接使用できない プロトコル間で何度もコピーされる ⇒通信のオーバーヘッドが大きい

従来の通信② 送信側 受信側 ユーザ アドレス空間 ユーザ アドレス空間 データ データ コピー コピー カーネル アドレス空間 カーネル NIC NIC データ データ

ゼロコピー通信 通信速度を最優先にした通信方式 コピー回数を減らして通信速度を向上

ゼロコピー通信② 送信側 受信側 ユーザ アドレス空間 ユーザ アドレス空間 データ データ カーネル アドレス空間 カーネル アドレス空間 NIC NIC データ データ