1 / 88

ネットワーク入門

ネットワーク入門. 廣安知之 + クラスタ研究グループ 同志社大学. ネットワーク  通信. パラレルプログラミングには直接関係無い 現在のシステムでは不可欠 電子メイル, web 各種設定 PC クラスタの構築 分散メモリ型マシンでの並列・分散処理 無線 LAN ,ネットワークストレージ,ネットワークブート. プロトコル TCP/IP. プロトコル. FTP, SMTP, telnet, TCP/IP, AppleTalk, …. こんにちは. 通信をする上での約束ごと. Hello. IP. 何を規定すれば通信が行えるのか?.

sydney
Download Presentation

ネットワーク入門

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. プロトコルTCP/IP

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

  5. IP

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

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

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

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

  10. ネットワークアドレス

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  33. ソケット通信

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

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

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

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

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

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

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

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

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

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

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

  45. ウェルノウン ポート よく使われているプログラムの     ポート番号は決まっている 1024番以下は全て決められている

  46. クライアントプログラム(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); }

  47. サーバプログラム(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); }

  48. クライアントプログラム(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(); } } }

  49. サーバプログラム(Java) //Server.java 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(); } } }

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

More Related