Lecture (Network) 中京大学 情報理工学部 情報システム工学科 H106118 森川 隆史 目次 ネットワーク コマンドプロンプトで用いる命令(ネット ワーク関連) Winsock ~Network~ プロトコルって何? ネットワークを介してコンピュータ同士が 通信を行なう上で、相互に決められた約束 事の集合。通信手順、通信規約などと呼 ばれることもある。 (IT用語辞典 e-Words 参照) OSI 参照モデル 第7層 第6層 第5層 第4層 第3層 第2層 第1層 アプリケーション層 プレゼンテーション層 セッション層 トランスポート層 ネットワーク層 データリンク層 物理層 HTTP,SMTP,FTPなど TCP , UDP IP , ARP , ICMP おおまかな役割を 決定しているだけ アプリケーション層 ネットワークを使ったサービスをほかの 人やプログラムに提供する ex: – メールの送受信を行う手順を定める – Web へアクセスする手順を定める プレゼンテーション層 データを相手側が読み込むことができる表 現形式に変換する – コンピュータによって対応する表現形式が異 なるため 翻訳機のようなもの? セッション層 データ通信を行うための経路を確立、解 放する 効率的にデータを送るにはどうするか、 データの送信方法を決める ただし、タイミングを決めるだけで実際に 転送するのは下の層が行う 経路の確立方法 コネクション型 コネクションレス型 2種類の方法がある。説明は後で データ通信方式 パケット交換方式 – データをパケットにして分割 – 複数で使え、回線を占有しない – 一部で障害が発生しても、経路変更が可能 回線交換方式 – 回線を設定し、占有して行う通信方式 トランスポート層 (1) データを確実に相手へ届ける役割 実際にコネクションの確立、解放を行う データ転送の信頼性を提供 届かなかった場合には再送処理をする トランスポート層 (2) TCP ( Transmission Control Protocol ) – 低速だが、データ転送の信頼性を確保 – 届かなければ再送信を自動で行う – Ex. Youtube , ニコニコ動画 UDP ( User Datagram Protocol ) 信頼性○ リアルタイム○ – 高速 – 相手へ確実にデータが届く保証はない – Ex. skype , IP電話 コネクション型 通信を行う際に、相手と接続を確立した のを確認してから通信を行う 処理が複雑で管理が大変 正しい順番でデータが届く信頼性あり 「電話」のイメージ コネクションレス型 相手と接続したのを確認せずにいきなり通 信を行う 確実にデータが届くかどうかは保証しない ストリーミングやリアルタイムな映像が必要 な場合などに使われる 「郵便(速達)」のイメージ ネットワーク層 (1) パケットの伝送 経路の選択と宛先の管理 送信元から目的地まで通信可能にする IP (Internet Protocol) – – ネットワーク間で通信するために使う約束事 OSI基本参照モデルの第3層(ネットワーク層)に位置し、ネット ワークに参加している機器の住所付け(アドレッシング)や、相互 に接続された複数のネットワーク内での通信経路の選定(ルー ティング)をするための方法を定義している。 – コネクションレス型のプロトコルであるため、確実にデータが届 くことを保証するためには、上位層のTCPを併用する必要がある。 – (IT用語辞典 e-Words 参照) ネットワーク層 (2) ARP (Address Resolution Protocol) – TCP/IP ネットワークにおいてIPアドレスから MACアドレスを求める – IPアドレスを手がかりとして、次にパケットを 受け取るもののMACアドレスを知りたいとき に使う – ⇔RARP( Reverse ARP ) ネットワーク層 (3) ICMP ( Internet Control Message Protocol ) – IPのエラーや制御メッセージを転送する – TCP / IP でつながれたコンピュータで互いの 状態を確認するために使う – エラー通知や診断などの問い合わせ ICMP の一例 TTL ( Time To Live ) – この値はルータを1つ通過するたびに1減る – 0になるとそのパケットは破壊され、ルータは その旨をICMP を利用して送信元へ伝える – パケットがネットワーク上にいつまでも残らな いようにするため(残っていると邪魔になる) データリンク層・物理層 データリンク層 – ケーブルなどで繋がれた機器間でのデータ 通信をできるようにする – 相手への通信経路を確保し、エラーが出た 場合は検出する – フレームの判別と転送 物理層 – 0と1のデジタルデータを電圧などに変換し、 実際に通信機器へ送る IP アドレス と MAC アドレス IPアドレス – 通信を行う際に、宛先を判別するために使う – PC や通信機器1台1台に固有のものがある MACアドレス – 各Ethernetカードにある固有のID番号 – これを利用してカード間でデータの送受信を 行う IP アドレス IPアドレス ・・・ ネットワーク部 + ホスト部 – IP アドレスは32bit – – – クラスがA~Eまである ネットワーク部は同じデータリンク内では同じ インターネットに接続されているネットワークの中で 重ならないように – ホスト部は同じリンク内で重ならないように – ホストアドレスが全て0または1のものは使えない – Ex: 192.168.144.0 クラスA,B ネットワーク部 クラスA – ネットワーク部:8bit , ホスト部:24bit – ホストアドレスは2^24 ≒ 1600万 0 8bit 24bit クラスB – ネットワーク部:16bit , ホスト部:16bit – ホストアドレスは2^16 = 65536 1 0 16bit 16bit ホスト部 クラスC,D クラスC – ネットワーク部:24bit , ホスト部:8bit – ホストアドレスは2^8 =256 1 1 0 24bit 8bit クラスD – ネットワーク部:32bit , ホスト部:0bit – マルチキャストに使用 1 0 0 0 – ホストアドレスは無し 32bit IPアドレスの例外 ホストアドレスが全て0 – IPアドレスがわからないときに使われる ホストアドレスが全て1 – ブロードキャストアドレスとして使われる この2つはホストアドレスとして使えない サブネットマスク インターネットのような巨大なTCP/IPネットワークは、複数の小さな ネットワーク(サブネット)に分割されて管理されるが、ネットワーク内 の住所にあたるIPアドレスのうち、何ビットをネットワークを識別する ためのネットワークアドレスに使用するかを定義する32ビットの数値。 ネットワークアドレス以外の部分が、ネットワーク内の個々のコン ピュータを識別するホストアドレスである。 サブネットマスク値からIPアドレスとビットの論理積を計算すること によって、IPアドレスのネットワークアドレス部を取得できる。 例えば、サブネットマスクが2進数で 11111111 11111111 11111111 00000000 ならば、IPアドレスのうち上位24ビットがネットワークアドレ ス、下位8ビットがホストアドレスである。 111.18.10.2というIPアドレスを255.255.240.0というサブネットマスク 値を使って分割すると、このIPアドレスは、111.18.0というネットワーク 上の、ホストアドレス10.2のホストという意味になる。 (IT用語辞典 e-Words 参照) サブネットマスク (2) サブネットワーク:ネットワークを細かく分 けた1つのネットワーク 大きなネットワークから不要部分を隠す ネット ワーク サブ ネット ワーク コマンドプロンプトで用いる ネットワーク系統の命令 ipconfig (1) TCP / IP に関連する設定情報を表示する ネットワーク構成の確認 – ipconfig • 上記の情報(簡易)を表示する – ipconfig –all • 上記の情報(詳細)を表示する ipconfig (2) ipconfig/release – IPアドレスを解放する – IPアドレスが重なってしまった場合などに有効 – ただし、DHCP を有効にしていないと効果なし ipconfig/renew – IPアドレスを DHCP によって更新する DHCP ? Dynamic Host Configuration Protocol – インターネットに接続するコンピュータに、IP アドレスなどの情報を自動で割り当てる – 通信が終わると回収される – 利用者にとって→使いやすくなる – 管理者にとって→管理しやすくなる ipconfig (3) ipconfig/displaydns – DNS キャッシュの確認 ipconfig/flushdns – DNS キャッシュをクリアする netstat (1) netstat – TCP / IP におけるネットワークの通信状況を 確認 – LAN における組織内ネットワーク環境、イン ターネットに接続している環境で用いる netstat (2) netstat –a – netstat –e – – 有効なコネクションと、接続できるポートを全て表示 する イーサネット上にあるインタフェース情報を表示する アクセス制御はCSMA/CDが使われる netstat –n – IP アドレスとポート番号を名前ではなく数字で表す WinSock WinSock ? Windows で TCP/IP の機能を使ったソフ トウェアを開発するために使う API Windows でネットワークを利用した 通信を行うプログラムが書ける! APIとは Application Program Interface あるプラットフォーム(OSやミドルウェア)向けのソフト ウェアを開発する際に使用できる命令や関数の集合のこ と。また、それらを利用するためのプログラム上の手続き を定めた規約の集合。個々のソフトウェアの開発者がソ フトウェアの持つすべての機能をプログラミングするのは 困難で無駄が多いため、多くのソフトウェアが共通して利 用する機能は、OSやミドルウェアなどの形でまとめて提 供されている。個々の開発者は規約に従ってその機能を 「呼び出す」だけで、自分でプログラミングすることなくそ の機能を利用したソフトウェアを作成することができる。 (IT用語辞典 e-Words 参照) プログラムを組む前に 基本はC言語、でも・・・ 『サーバ』、『クライアント』の2つのプログ ラムが必要! #include <winsock2.h> を追加する サーバプログラムのホスト名またはIPア ドレスをクライアントプログラムでわかるよ うにする必要あり プログラムの流れ(サーバ側) サーバ・・・クライアントからの接続待ち – – – – – – ソケットをつくる 接続待ちをするIPアドレスとポート番号の設定 ソケットにアドレス情報を結びつける 接続待ち状態 クライアントから要求があれば受け付ける 通信する プログラムの流れ(クライアント側) クライアント – – – – – WinSock の初期化 ソケットをつくる 接続相手の設定を行う(ポート番号も設定) 接続要求が成功すると通信スタート 用事が済んだら接続を切断する ソケットとは? 通信経路の端に結びついているもの ユーザにとってデータの出入口 ソケットにデータの読み込み、書き込みを 行う関数を呼び出すことで通信可能となる 『糸電話』みたいなもの WinSock の初期化 WSAStartup( MAKEWORD( 2 , 0 ) , &wsaData ); – MAKEWORD(2,0) ・・・WinSock ver2.0 要求 – &wsaData ・・・WSADATA 構造体型の変数 のアドレス ソケットの作り方 socket()関数 SOCKET sock; – sock = socket( AF_INET , SOCK_STREAM , 0); • AF_INET・・・自分自身を除いた利用可能なアドレス 一覧を取得。インターネットを対象とするときに用いる アドレスファミリ(ネットワークアドレスの種類) • SOCK_STREAM・・・TCP を示すソケットの特性 ソケットの設定 接続先のIPアドレス、ポート番号を指定 – IPアドレス • INADDR_ANY (0.0.0.0) – – 相手を特に指定しない。誰でもよい。 サーバ側でよく使われる(サーバが通信相手を探す時) • INADDR_NONE (255.255.255.255) – – IPアドレスが存在しない場合 クライアント側でよく用いられる(サーバを探していてエ ラーが発生したとき) ソケットの設定 (2) inet_addr() 関数 – 文字列で表現されたIPアドレスを整数に変 換する ポート番号 – htons() 関数 • 16bitの整数に対して、ポート番号をネットワーク バイトオーダーに変換する(ネットワーク上で使える ようにするため) サーバへ接続(クライアント) connect()関数 – サーバへ接続要求を出す – connect( ソケット , 接続先アドレス情報の※を ■にキャストしたもの , ※の大きさ); ※・・・SOCKADDR_IN構造体 ■・・・SOCKADDR構造体 ソケットにアドレス情報を結びつけ bind()関数 ソケットにアドレス情報を結びつける – bind( ソケット , アドレス入りの※を■にキャスト したもの , ※の大きさ ); ※・・・SOCKADDR_IN構造体 ■・・・SOCKADDR構造体 接続リクエストの受付準備 listen()関数 ソケットを接続待ち状態にする – listen( ソケット , 何接続まで受け付けるか ); クライアントからの接続を確立 accept()関数 – 接続先のアドレス情報の大きさを格納する num = sizeof( 接続先のアドレス情報 ); – 接続を確立させる sock = accept( ソケット , 接続先のアドレス情 報 , 接続先アドレス情報の大きさ ); データの送信、受信 送信・・・send()関数 – send( ソケット , 送信するデータへのポインタ , 送信するデータの長さ , 0 ); 受信・・・recv()関数 – memset( バッファへのポインタ , 初期化に使う 文字 , 初期化するバイト数 ); //バッファの初期化 – recv( ソケット , 受信するバッファへのポインタ , 受信するデータの長さ , 0 ); ソケットの破棄、終了処理 ソケットの破棄・・・closesocket()関数 – closesocket( 破棄するソケット); Winsock の終了処理 – WSACleanup(); 課題(ネットワーク) コマンドプロンプトでネットワークの構成、 通信状況を見てみよう(それぞれが何を表 しているかを確認する) CSMA/CD とは何? 課題(サブネットマスク) IPアドレスが「212.172.46.88」 サブネットマスクが「255.255.255.224」 この場合に利用できるホスト数はいくつ? 課題(WinSock) 1. 2. 3. 4. 5. サンプルプログラムを作って動かしてみる サーバに何回も接続できるようにする 5回クライアントから続けて接続要求を出せる ようにする “quit”とクライアントから入力したら接続を解 除できるようにする 自由に改良する(エラー処理、追加機能をつ ける・・・etc) 課題に関する注意 説明をする問題は、自分の言葉で書くこ と。(参考にするのはO.K.) WinSock の課題は、プログラムファイル を課題2~4で1つ、課題5で1つ提出(フォル ダは別々に分ける) プログラムには説明のコメントを忘れない ように ファイル名はわかりやすいものをつける
© Copyright 2024 ExpyDoc