TCP/IPとプロセス間通信 2007年1月12日 海谷 治彦.

Slides:



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

情報基礎A 情報科学研究科 徳山 豪.
コンテンツ配信に優れている P2P 技術と、著作権侵害問題の関係について 述べよ。
第1回.
(株)アライブネット RS事業部 企画開発G 小田 誠
Ibaraki Univ. Dept of Electrical & Electronic Eng.
システム工学概論 第10回 状態遷移の実現
IRC What a wonderful world
システムコール 低水準入力 ファイルディスクリプタ ソケット
UNIXマシン間のファイル転送 2002年10月20日 海谷 治彦.
一対多通信における ネットワーク障害物対応方法選択プロトコルの設計
「コンピュータと情報システム」 07章 インターネットとセキュリティ
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング システムプログラミング プロセス間通信(パイプ) 担当:青木義満
TCPソケットプログラミング ソケットプログラミング TCP-echoのデータ通信手順
心理学情報処理法Ⅰ コンピュータネットワーク概論.
トランスポート層.
複数CPU間のための共有メモリ 小島 隆史(中央大学大学院理工学研究科 國井研究室)
オペレーティングシステム i386アーキテクチャ(2)
Telnet, rlogin などの仮想端末 ftp などのファイル転送 rpc, nfs
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第11回 プロセス間通信4 仮想FTPの実現 担当:青木義満
ネットワーク機器接続 2SK 情報機器工学.
ま と め と 補 足 ネットワークシステムⅠ 第15回.
情報コミュニケーション入門 総合実習(1) 基礎知識のポイント(2)
第5回ネットワークプログラミング 中村 修.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Linux リテラシ 2006 第4回 ネットワーク CIS RAT.
ネットワークプログラミング 中村 修.
P2P方式によるオンラインゲームの研究、開発
第11章 UDPユーザ・データグラム・プロトコル
UDPエコーサーバ UDP-echoサーバのプログラムモデル(Cプログラム) サーバで利用するソケット関数(Cプログラム)
7. セキュリティネットワーク (ファイアウォール)
特定ユーザーのみが利用可能な仮想プライベート・ネットワーク
C言語でスレッド (Pthread) 2007年1月11日 海谷 治彦.
ソケットプログラム(TCP,UDP) EasyChat開発
マルチスレッド処理 マルチプロセス処理について
第15章 TFTP:トリビアル・ファイル転送プロトコル
岡村耕二 トランスポート層 ソケットプログラミング 岡村耕二 情報ネットワーク.
ソケットプログラム(TCP,UDP) EasyChat開発2
ネットワークの基礎知識 電子制御設計製図Ⅰ   2014年5月2日 Ⅲ限目.
インターネットにおける真に プライベートなネットワークの構築
情報コミュニケーション入門e 第11回 Part2 Web入門(1)
Ibaraki Univ. Dept of Electrical & Electronic Eng.
UML関係のTIPS 2008年5月26日 2010年5月16日改訂 海谷 治彦.
UDPマルチキャストチャット    空川幸司.
Webプロキシ HTTP1.0 ヒント CS-B3 ネットワークプログラミング  &情報科学科実験I.
ネットワークプログラミング (3回目) 05A1302 円田 優輝.
岡村耕二 トランスポート層 岡村耕二 情報ネットワーク.
情報コミュニケーション入門b 第11回 Web入門(2)
情報コミュニケーション入門e 第12回 Part1 Web入門(2)
勝手にインフラ隊 (の中の人といっしょ) に学ぶネットワーク講座 Part2
勝手にインフラ隊 (の中の人といっしょ) に学ぶネットワーク講座 Part2
不当請求 ~解説編~ 制作:NPO法人ITサポートさが.
卒業研究 JCSPを用いたプログラム開発  池部理奈.
情報コミュニケーション入門e 第12回 Part1 Web入門(2)
システムプログラミング 第10回 プロセス間通信3 簡易Web server(準備) Chat プログラム 担当:青木義満、篠埜 功
岡村耕二 TCP通信プログラム 岡村耕二 情報ネットワーク.
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第11回 プロセス間通信4 仮想FTPの実現 担当:青木義満
TCP/IP 通信テストツール TcpTestTool by PipeKatoo!
ネットワーク・プログラミング TCPサーバ.
ネットワークプログラミング 05A1302 円田 優輝.
特定ユーザーのみが利用可能な仮想プライベート・ネットワーク
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
SMTPプロトコル 2001年8月7日 龍 浩志.
IPアドレス 平成14年7月9日 峯 肇史 牧之内研究室「UNIX とネットワーク基礎勉強会」Webページ
TCP/IPの通信手順 (tcpdump)
ソケットの拡張によるJava用分散ミドルウエアの高信頼化
ネットワーク勉強会 SSH パケット詳細 2001年10月24日 データベース研究室 学部4年 石川 卓司.
VPNクライアント接続 サーバー保守のための安全な経路+作業者単位のアクセス制御 簡単な図 (網羅性より象徴性)
岡村耕二 TCP通信プログラム 岡村耕二 情報ネットワーク.
Presentation transcript:

TCP/IPとプロセス間通信 2007年1月12日 海谷 治彦

目次 動機 通信路の識別 IPアドレスとポート番号 ソケット通信の基本 一対一通信の例 サーバーを中心としたスター型の通信

動機 今までの講義でpipe等を使い,親子関係のあるプロセス間で通信(read/write)を行うことができた. しかし,赤の他人とは通信がこれではできない. もっと一般化して他のOS(マシン)上のプロセスとも通信ができない. できるような技術を学びましょう!

ソケットによるプロセス間通信 同じマシンは勿論,異なるマシン間のプロセスの通信を可能にする仕組み. 無論,意図的に通信を禁止してなければ. マシンは通常IPアドレスで識別されている. www.cs.shinshu-u.ac.jp 等も内部的にはIPアドレスで管理されている. 通信路はポート番号で識別されている. 若い番号は特定用途に予約されている. 25 メール 80 ウエブ等 IPアドレス+ポート番号の対で通信路を特定して,プロセス間通信を行う.

基本知識・TIPS 自分のマシンのIPアドレスの調べ方 ちなみに以下のアドレスは自分自身を指す. /sbin/ifconfig コマンドを利用. ちなみに以下のアドレスは自分自身を指す. 127.0.0.1 同一番号のポートはある程度,時間を置かないと再度の利用できません.

以下のサンプルの基本仕様 1 server?.c サーバー client?.c クライアント 相手からの接続を待つプロセスを生成するプログラム. 接続を待つポート番号を指定する必要がある. client?.c クライアント 接続を待つサーバー型のプロセスに接続を行うプロセスを生成するプログラム. サーバーのいるマシンのアドレスとポート番号を指定する必要がある.

基本仕様 2 通信はTCP/IPで行う. ホストアドレス指定もIP型で行う. 無論,それ以外のプロトコルも存在するが.例えば,PF_APPLETALK 等. PF_INET SOCK_STREAM の組合せがTCP/IPに相当. ホストアドレス指定もIP型で行う. 無論,それ以外の指定方法もある,例えば,AF_APPLETALK 等. AF_INET がIPアドレス型の指定に相当.

例1 server1/client1 単にサーバーが特定の文字列をクライアントに送信するプログラム. 多分,もっとも簡単. サーバーが書き クライアントが読み 多分,もっとも簡単. サーバーは通信準備に4ステップ クライアントは準備に2ステップ 詳細はサンプルコードを参照. 異なるマシン間でも通信は成立する(はず).

例2 server2/client2 読み書きを逆にする 要はTCP/IPのソケットは読み書き双方向通信. サーバーが読み クライアントが書き 要はTCP/IPのソケットは読み書き双方向通信. 全二重 (full-duplex)と呼ばれる性質.

例3 簡単なテキストチャット 双方向でテキストチャットができるはず. コントロールD等でどちらかが終了すればセッションは終了する. pthread を使ってるんで,割と楽勝. スレッド無しで作るのは相当シンドい. 共有関数があるので以下とか gcc common3.c server3.c -o s gcc common3.c client3.c -o c

例4 多人数のテキストチャット サーバー(server4.c)を中心として,クライアント(client3.c)で複数接続するスター型構造のプロセス間通信構造. サーバー側ではクライアントが接続される毎にスレッドを走らせて対応を行う構造. コレもスレッド無しで開発すると大変.

例4の構造イラスト hello server4 client3 hello hello client3 client3 client3

スレッドの構造 server4 client3 client3 client3 reader スレッド2 reader スレッド main関数の スレッド writer スレッド reader スレッド3 reader スレッド1 client3 reader スレッド client3 reader スレッド writer スレッド writer スレッド

例5 クライアントの識別 server5.c 内容は server4.c とほぼ同じ. サーバーからクライアントの素性がわかれば,簡単に接続制限等を行うことができる.

便利な関数群 htons, htonl, htohs, ntohl inet_aton inet_ntoa nはネットワーク・バイトオーダー(big endian) sは16bit (short), lは32bit(long) バイトオーダーの違いを吸収するための関数群. inet_aton 160.252.120.10等の表記をバイナリ表現に変換. inet_ntoa 上記の逆. 詳細はオンラインマニュアルとサンプルを参照.