Network Programming

Similar documents
PowerPoint Presentation

12.1 インターネットアドレス インターネットアドレス インターネットアドレス 32 ビットの長さを持つインターネットに接続されたマシンを識別するのに使う インターネットアドレスは ピリオドで区切られたトークンの並びで表現されることもある インターネットアドレス

PowerPoint Presentation

情報通信の基礎

(Microsoft PowerPoint - \223\306\217KJava\221\346\202R\224\305.ppt)

55 7 Java C Java TCP/IP TCP/IP TCP TCP_RO.java import java.net.*; import java.io.*; public class TCP_RO { public static void main(string[] a

<4D F736F F F696E74202D DB A B C C815B E >

Microsoft PowerPoint - netprog_2015_07.ppt [互換モード]

汎用プロキシ利用案内 汎用プロキシ利用案内 目次 汎用プロキシ利用案内 はじめに 汎用プロキシとは 利用可能なポート 概要 動作環境 インストール Windows <I

NetLec17TCPIP1.ppt

2. ネットワークアプリケーションと TCP/IP 2.1. クライアント / サーバモデル TCP/IP プロトコルに従うネットワークアプリケーションの典型的モデルは, クライアント / サーバモデルである. クライアント / サーバモデルでは, クライアントからの要求に対してサーバがサービスを提

(Microsoft Word - \203\214\203\223\203^\203\213\203T\201[\203o\220\335\222\350\203K\203C\203h_ doc)

SMB スイッチ CLI に SSH を使用してアクセスするか、または Telnet で接続して下さい

JavaプログラミングⅠ

オブジェクト指向プログラミング・同演習 5月21日演習課題

ネットワークプログラミング(導入部)

課題 4 クライアント GUI プログラム 再実験 / 追加課題 UDP 通信プログラム 2

file:///C:/www/

Microsoft Word JA_revH.doc

スライド 1

目次 メールの基本設定内容 2 メールの設定方法 Windows Vista / Windows 7 (Windows Live Mail) Windows 8 / Windows 10 (Mozilla Thunderbird) 3 5 Windows (Outlook 2016) メ

WebARENA SuiteX V2 EC-CUBE 2.13 インストールマニュアル ( 標準 MySQL+ 非 SSL ) 作成 :2014 年 2 月 Ver.1.1

// このクラスの有効期間中の各呼び出しに使用される キャッシュされた Socket オブジェクト Socket socket = null; // 非同期処理が完了したことを通知するために信号を送るオブジェクト static ManualResetEvent clientdone = new Ma

Prog1_15th

Microsoft Word - XOOPS インストールマニュアルv12.doc

InfoPrint 5577/5579 ネットワーク設定ガイド(第5章 UNIX/Linux環境で使用する)

InfoPrint 5577/5579 ネットワーク設定ガイド(第4章 UNIX/Linux環境で使用する)

PC にソフトをインストールすることによって OpenVPN でセキュア SAMBA へ接続することができます 注意 OpenVPN 接続は仮想 IP を使用します ローカル環境にて IP 設定が被らない事をご確認下さい 万が一仮想 IP とローカル環境 IP が被るとローカル環境内接続が行えなくな

8. Windows の補足情報 コマンドの使用についての説明です Windows からのファイル直接印刷 Windows でコマンドを使用したファイル直接印刷の方法についての説明です この機能はネットワーク接続をしているときに使用できます この方法で印刷できるファイルは 本機が搭載しているエミュレ

関電グループファイル宅配サービス利用マニュアル

PowerPoint プレゼンテーション

Javaセキュアコーディングセミナー東京 第3回 入出力(File, Stream)と例外時の動作 演習解説

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

はじめに インフォマート API の呼び出しには OAuth2.0 による認証を受ける必要があります OAuth2.0 を使うことで インフォマート API を利用するサービスは インフォマートプラットフォーム ID( 1 以下 PFID) とパスワードを保存したり処理したりすることなく PFID

任意の間隔での FTP 画像送信イベントの設定方法 はじめに 本ドキュメントでは AXIS ネットワークカメラ / ビデオエンコーダにおいて任意の間隔で画像を FTP サー バーへ送信するイベントの設定手順を説明します 設定手順手順 1:AXIS ネットワークカメラ / ビデオエンコーダの設定ページ

SAMBA Remote(Mac) 編 PC にソフトをインストールすることによって OpenVPN でセキュア SAMBA へ接続することができます 注意 OpenVPN 接続は仮想 IP を使用します ローカル環境にて IP 設定が被らない事をご確認下さい 万が一仮想 IP とローカル環境 IP

Microsoft PowerPoint - 03ポート番号とプロトコル.pptx

付録 2 システムログ一覧 () 攻撃経路 1. ファイアウォール (FW) ネットワーク型 IPS/IDS Web サーバ AP サーバ DB サーバ プロキシサーバ エラーログ SSL ログ AP ログ ホストログ 非 日時 ファイアウォールホスト名 ファイアウォールルール名及び番号 インバウン

2 1: ネットワーク設定手順書 が完了後に行なってください 鏡野町有線テレビ 各種設定手順書 この手順書では以下の内容の手順を解説しています メール設定 ホームページの掲載 お客様がご利用の OS により設定方法が異なる部分があります OS をご確認の上 作業を行なってください お客

conf_example_260V2_inet_snat.pdf

URoad-TEC101 Syslog Guide

SAMBA Stunnel(Mac) 編 1. インストール 1 セキュア SAMBA の URL にアクセスし ログインを行います xxxxx 部分は会社様によって異なります xxxxx 2 Mac OS 版ダウンロー

PowerPoint プレゼンテーション

Microsoft PowerPoint pptx

2

Java (9) 1 Lesson Java System.out.println() 1 Java API 1 Java Java 1

FutureWeb3サーバー移管マニュアル

目次 移行前の作業 3 ステップ1: 移行元サービス メールソフトの設定変更 3 ステップ2: アルファメール2 メールソフトの設定追加 6 ステップ3: アルファメール2 サーバへの接続テスト 11 ステップ4: 管理者へ完了報告 11 移行完了後の作業 14 作業の流れ 14 ステップ1: メー

第1回 ネットワークとは

SAMBA Stunnel(Windows) 編 1. インストール 1 セキュア SAMBA の URL にアクセスし ログインを行います xxx 部分は会社様によって異なります xxxxx 2 Windows 版ダウンロード ボ

Microsoft Word - FTTH各種設定手順書(鏡野地域対応_XP項目削除) docx

Maser - User Operation Manual

Cisco CSS HTTP キープアライブと ColdFusion サーバの連携

アマチュア無線のデジタル通信

ファイル アップロード

5.2

1 Linux UNIX-PC LAN. UNIX. LAN. UNIX. 1.1 UNIX LAN. 1.2 Linux PC Linux. 1.3 studenta odd kumabari studentb even kumabari studentc odd kumabari student

Microsoft Word - Gmail-mailsoft_ docx

Microsoft Word - u-CAT’Ý™è…K…C…

Ⅰ OUTLOOK 2013設定 1.OUTLOOK2013を起動します 4.次へをクリックします ①ファイルをクリック 2.アカウント情報を設定します ①電子メールアカウント欄にチェックが入っていることを確認する ②次へをクリック 5.アカウントを手動設定します ①アカウント設定をクリック ②アカ

改版履歴 版数改版年月日改版履歴担当 初版 2017 年 11 月 22 日新規作成新規作成雲林院 年 11 月 28 日更新 送信設定を追記 コアサーバー契約情報を更新 雲林院 年 12 月 07 日更新 Gmail によるメール受信フィルタの作成方法を記載雲林

Prog2_10th

Upload path ファイル送信先ディレクトリのパスを指定します ホームディレクトリに画像を送信する場合は空白のまま サブディレクトリに画像を送信する場合はディレクトリ名を指定します さらに下位のディレクトリを指定する場合は \ マークを利用します 例 ) ホームディレクトリ以下の camera

Upload path ファイル送信先ディレクトリのパスを指定します ホームディレクトリに画像を送信する場合は空白のまま サブディレクトリに画像を送信する場合はディレクトリ名を指定します さらに下位のディレクトリを指定する場合は \ マークを利用します 例 ) ホームディレクトリ以下の camera

Windows Hosting Suite スタートアップマニュアル このガイドでは 以下のメニューについて説明しています 1. お名前.com プレミアサーバー Windows プラン管理画面 CONTROL PANEL ログイン方法 2. ウェブコンテンツのアップロード方法 3. メールボックス

通信ネットワーク補足 TCP サーバプログラムその 14 フロー制御基本は確実に伝達することでした 次に受け取るべき情報の確認応答 (ACK 番号 = 受け取った シーケンス番号 + 受信データ量 ) のメッセージ受信で相手が受け取ったと判断する訳ですがその応答セグメントを待っていると遅くなります

Microsoft Word - GXS?C?“?^?[?l?b?gVPN?T?[?r?X?N?‰?C?A?“?g?A?N?Z?X?Z?b?g?A?b?v?K?C?h GXS-V docx

Microsoft PowerPoint - Lecture_3

Cuoreテンプレート

アルファメール 移行設定の手引き Outlook2016

TestDesign for Web

 

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

r1.dvi

新環境への移行手順書

目次 第 1 章はじめに... 3 第 2 章ネットワーク設定 DNS の設定 アウトバウンド HTTPS 接続の許可 アウトバウンド SMTP/POP 接続の許可... 4 第 3 章 JDK への追加ライブラリインストール

今後の予定 第 10 回 :6 月 22 日 暗号化ソフトウェア :SSL,SSH 第 11 回 :6 月 29 日 サーバセキュリティ 第 12 回 :7 月 6 日 理論 : 計算論, 暗号プロトコル 第 13 回 :7 月 13 日 企業 組織のセキュリティ :ISMS, 個人情報保護法 第

第5回 マインクラフト・プログラミング入門

情報処理概論及演習 第 5 週インターネット 保坂修治 インターネット ありとあらゆるものをデジタルでつなぐ 常に世界規模で変化し続けている 2011 キーワード クラウド コンピューティング HTML5 LTE SNS メディア スマートグリッド スマートテレビ 1

4章 システム評価

2 1: OSI OSI,,,,,,,,, 4 TCP/IP TCP/IP, TCP, IP 2,, IP, IP. IP, ICMP, TCP, UDP, TELNET, FTP, HTTP TCP IP

SFTPサーバー作成ガイド

VPN ユーザを管理し、RV016、RV042、RV042G および RV082 VPN ルータの速い VPN を設定して下さい

2.5 トランスポート層 147

メール設定

wdr7_dial_man01_jpn.indd

Flex Signal for AirGRID

Troubleshooting SSH connections with Reflection X

もくじ はじめに 3 TOPTOWERNET をご利用いただくために 3 TCP/IPの設定 windows XP 編 4 windows 2000 編 7 windows 95/98/Me 編 9 Mac OS 編 12 WEB ブラウザの設定 Internet Explorer 6.0 編 14

Flex Signal for AirGRID

intra-mart Accel Platform — 外部ソフトウェア接続モジュール 仕様書   第3版  

PowerPoint Presentation

アルファメールプレミア 移行設定の手引き Outlook2016

Webセキュリティサービス

適応型セキュリティ アプライ アンスの設定

アルファメールプレミアのメールアドレスは 普段ご利用のメールソフトでもメールを送受信することができます ここでは Outlook 2013 の設定方法をご紹介します それ以外のメールソフトをご利用になる場合は 下記の基本設定項目を参考に設定を行ってください 基本設定項目 メールアカウント メールパス

K227 Java 2

TFTP serverの実装

Prog1_10th

インターネット,LAN,ネットワークに関する知識

Transcription:

ネットワークプログラミング 田村寿浩馬建華

目次 サーバーの概要 構成 ネットワークのレイヤー TCPを利用した通信 Javaによるネットワークプログラミング

サーバーとは サーバーとはクライアントからの要求に対して何らかのサービスを提供する役割を果たしているプログラム又は稼働させている機器を表す 例 :Web サーバー ウェブブラウザの URL に指示された Web サーバ内に存在する HTML ドキュメントの各種動作をクライアントから接続された HTTP に則った TCP/IP ソケットストリーム (HTTP コネクション ) に送信する

Web サーバの構成 黄研究室のサーバの例 IP アドレス :133.25.82.204 ドメイン名 :rhserver.k.hosei.ac.jp ソフトウェア :Windows Server 2008 IP(Internet Protocol) IP アドレスを用いてネットワーク上の PC の位置を表すもの DNS(Domain Name System) ドメイン名と IP アドレスを関連付けるシステム

ポート番号とは 通信のサービスを特定するための番号 No Protocol サービス 20 ftp-data ファイル転送 ( データ本体 ) 21 ftp ファイル転送 ( コントロール ) 22 ssh シェル :SSH( セキュア ) 23 telnet シェル :telnet 25 smtp メール送受信 :SMTP 53 domein DNS 80 http WWW 110 pop3 メール受信 (POP) 上記はよく利用されるポート番号とプロトコル サービスによってデータの送受信の受け口が分かれている 一部のオンラインゲームではポートの開放が必要だが 悪意のある接続を許すもとにもなる

ネットワークのレイヤー ネットワークは各層に分かれ データの送受信を行う 各層に役割を分担することで拡張性や保守性を高めている 名前説明例 アプリケーション層 具体的な通信サービス HTTP FTP Telnet プレゼンテーション層 データの表現方法に関する規定 FTP Telnet セッション層 通信開始から終了までの手順 NetBIOS ASP トランスポート層 エラー訂正などの通信管理 TCP UDP ネットワーク層 通信経路の選択 IP ARP データリンク層 通信機器間の信号の受け渡し イーサネット トークンリング 物理層 物理的な回線や機器 電話線 光ケーブル

TCP/IP まとめ 宛名等宛先等内容宛名等内容 :www.yahoo.co.jp :80 (GET index.html HTTP/1.1 (GET 宛先ポート index.html 200 OK :192.168.1.20 :3000 HTTP/1.1 宛先ポート 200 OK :80 :3000 :192.168.1.20 :3000 HTTP1.1) HTTP1.1) 自分ポート :www.yahoo.co.jp :80 <HTML> 自分ポート :3000 :80 <HTML> 宛名等内容宛先ポート HTTP/1.1 (GET index.html 200 :80 :3000 OK 自分ポート <HTML> HTTP1.1) :3000 :80 内容 HTTP/1.1 (GET index.html 200 OK <HTML> HTTP1.1) HTTP TCP HTTP IP TCP HTTP TCP HTTP 内容 HTTP/1.1 (GET index.html 200 OK <HTML> HTTP1.1) HTTP WEB サーバの待ち受けポート番号は 80 世界中で統一されている FTP は 21 POP は 110 等々 送信元のポート番号は Windows が空いているポートを勝手に選択する例 :3000

TCP を利用した通信 TCP を利用したプロトコルとして以下の 3 つを挙げる Telnet FTP HTTP

接続するサーバーの準備 Telnet FTP の接続テストをするために FTP サーバー Cerberus FTP Server を導入した

Telnet とは? Telnet(Telecommunication network) とは汎用的な双方向 8 ビット通信を提供する端末 プロセス間の通信プロトコル ポート 23 を利用するが他のポートの指定ができ TCP サービスのテストにも用いられる セキュリティの問題があるため現在では 利用が推奨されない コマンドプロンプトで Telnet 通信をしてみましょう

コマンドプロンプトによる Telnet 通信 Windows7 8 では Telnet クライアントの機能の有効化をしないと使えない

コマンドプロンプトによる Telnet 通信コマンドプロンプトを起動し telnet と入力し Telnet クライアントを起動する 起動後に help と入力するとコマンド一覧が見れます

Telnet でサーバーへ接続 Cerberus サーバーに接続するために open localhost 21 と指定する localhost は自分のパソコンのホスト名

Telnet でサーバーへ接続 接続に成功した時の出力 コンソール側 Cerberus 側

Telnet でサーバーへ接続 ユーザー名とパスワードを入力しログイン が telnet ではファイル転送できないのでログイン出来るかどうかの確認程度に使われます

FTP FTP(File Transfer Protocol) とはネットワークでファイルの転送を行うための通信プロトコル FTP ファイルサーバやウェブページからクライアントへのファイルのアップロード ダウンロードに使われる ポート 21 を使用する コマンドプロンプトで FTP 通信をしてみましょう

コマンドプロンプトによる FTP 通 信コマンドプロンプトを起動しftpと入力しFTPクライアントを起動する 起動後に help と入力するとコマンド一覧が見れます

コマンドプロンプトによる FTP 通 信 Cerberusサーバーに接続するために open localhost と指定しユーザー名とパスワードも入力

ディレクトリの確認 Current ディレクトリを確認すると Root ディレクトリにいることがわかる

ディレクトリの作成 mkdir コマンドで network ディレクトリを作成したところ

ファイルのアップロード put < ファイル名 > < 保存する名前 > でファイルをアップロードする

ファイルのダウンロード gut < ファイル名 > < 保存する名前 > でファイルをダウンロードする この例では C: Users admin に保存される

HTTP HTTP(Hypertext Transfer Protocol) とは Web ブラウザと Web サーバの間で HTML や XML などの Hypertext の送受信に用いられる通信プロトコル クライアントがサーバーにリクエストを送り サーバーがレスポンスを返す仕組み ポート 80 を使用する

Java によるネットワークプログラ ミング Telnet, FTP は ApacheCoomons のライブラリを使うと楽 http://commons.apache.org/proper/commonsnet/index.html

CommonsNet の導入 左の Download から 3.3 をダウンロードする

Java による Telnet 通信 TelnetClient クラスの connect メソッドを呼び出すだけで簡単にサーバーに接続できる TelnetClient tc = new TelnetClient(); // 接続先 String remoteip = "localhost"; // 接続ポート int remoteport = 21; // 接続 tc.connect(remoteip, remoteport);

Java による Telnet 通信 今回用意した FTP サーバーではメッセージを返さないので AYT(Are you there) コマンドを入力しても返ってこない /(^o^)\

Java による FTP 通信 FTPClient クラスの connect メソッドを呼び出すだけで簡単にサーバーに接続できる // FTP サーバーに接続するクラス FTPClient fp = new FTPClient(); // サーバを指定してアクセス fp.connect("localhost"); // ユーザー名とパスワードを指定しログイン fp.login("root", "password");

Java による FTP 通信 ログイン後は FileStream クラスを使ってファイルのアップ ダウンロードを行う FileOutputStream os = null; FileInputStream is = null; // ファイルダウンロード os = new FileOutputStream( aaa.txt"); fp.retrievefile("/network/sample2.txt", os); os.close(); // ファイルアップロード is = new FileInputStream("c:/a.txt"); fp.storefile("/network/sample2.txt", is); is.close();

ファイルを送受信した際のログ

Java によるネットワークプログラミング ライブラリなどを使わない場合は Socket を使って通信を行う 例としてチャットプログラムを作成する Socket : IP とポート番号を合わせたアドレス

サーバー側の処理 1. ServerSocket を生成しポート番号と最大接続人数を設定する 2. クライアントの接続を待つ 3. クライアントと通信できるようにストリームオブジェクトを生成する 4. ストリームオブジェクトを介して通信を行う 5. コネクションを閉じる

クライアント側の処理 1. Socket を生成しサーバーに接続する 2. クライアントと通信できるようにストリームオブジェクトを生成する 3. ストリームオブジェクトを介して通信を行う 4. コネクションを閉じる

クライアントをサーバーに接続する サーバー側 クライアント側 // 使用するポート番号 ServerSocket server = new ServerSocket(2815,50); // 接続先サーバーのホスト名 private static final String HOST = "localhost"; while (!server.isclosed()) { // クライアントの接続を待つ Socket client = server.accept(); // ユーザーオブジェクトを生成 ChatClientUser user = new ChatClientUser(client); adduser(user); // 接続先ポート番号 private static final int PORT = 2815; // クライアントソケット private Socket socket; socket = new Socket(HOST, PORT);

メッセージの送受信 ( サーバー側 ) 送信 OutputStream output = socket.getoutputstream(); PrintWriter writer = new PrintWriter(output); // メッセージの送信 writer.println(message); writer.flush(); 受信 InputStream input = socket.getinputstream(); BufferedReader reader = new BufferedReader(new InputStreamReader( input)); // ユーザーのメッセージ送信を確認 while (!socket.isclosed()) { String line = reader.readline(); System.out.println("INPUT=" + line); String[] msg = line.split(" ", 2); String msgname = msg[0]; String msgvalue = (msg.length < 2? "" : msg[1]); // メッセージの種類に合わせて処理を分ける reachedmessage(msgname, msgvalue);

メッセージの送受信 ( サーバー側 ) 送信 OutputStream output = socket.getoutputstream(); PrintWriter writer = new PrintWriter(output); // メッセージの送信 writer.println(message); writer.flush(); 実はサーバーと同じ 受信 InputStream input = socket.getinputstream(); BufferedReader reader = new BufferedReader(new InputStreamReader( input)); // ユーザーのメッセージ送信を確認 while (!socket.isclosed()) { String line = reader.readline(); String[] msg = line.split(" ", 2); String msgname = msg[0]; String msgvalue = (msg.length < 2? "" : msg[1]); // メッセージの種類に合わせて処理を分ける reachedmessage(msgname, msgvalue);

デモ クライアントとサーバーで設定しているポート番号が違っていたり サーバーが起動する前にクライアントを動かすとエラーになるので注意

import java.io.*; import java.net.*; /** Http プロトコルによるソース表示 **/ public class HttpBySocket { public static void main(string args[]) { String host = "rat.cis.k.hosei.ac.jp"; int port = 80; String url = "http://rat.cis.k.hosei.ac.jp/", str; try { // ソケットの作成 Socket sock = new Socket(host, port); BufferedReader sockin = new BufferedReader( new InputStreamReader( sock.getinputstream())); BufferedWriter sockout = new BufferedWriter( new OutputStreamWriter( sock.getoutputstream())); // HTTP リクエスト送信 sockout.write("get " + url + " HTTP/1.1 r n"); sockout.write("host: " + host + " r n"); sockout.write("connection: close r n"); sockout.write(" r n"); sockout.flush(); Web ページのソースの取得 Socket を使って RAT のページのソースを取得する // HTTP レスポンス受信 while ((str = sockin.readline())!= null) { System.out.println(str); } // ソケットのクローズ sockout.close(); sockin.close(); sock.close(); } catch (Exception ex) { ex.printstacktrace(); } } }

Web ページのソースの取得 ソースの取得はできるが Http リクエストが面倒 ここからソース

Web ページのソースの取得 URLConnection を使うとソースを取得が楽 import java.io.*; import java.net.*; /** Http プロトコルによるソース表示 **/ public class URLConnectionTest { public static void main(string args[]) { String url = "http://rat.cis.k.hosei.ac.jp/"; URL urlobj; HttpURLConnection urlcon; BufferedReader urlin; String str; try { urlobj = new URL(url); // URL 接続 urlcon = (HttpURLConnection) urlobj.openconnection(); urlcon.setrequestmethod("get"); urlin = new BufferedReader(new InputStreamReader( urlcon.getinputstream())); // HTML ソースの表示 while ((str = urlin.readline())!= null) { System.out.println(str); } // URL 切断 urlin.close(); urlcon.disconnect(); } catch (Exception ex) { ex.printstacktrace(); } } }

実行結果

その他の通信 紹介した Socket 通信は一旦繋ぐと常につなぎっぱなしになるが DatagramPacket を使うとパケットによって通信を行う

参考文献 関連するコマンドの解説 http://ykr414.com/dos/dos03.html Windows7 で Telnet 接続 http://axela5004.blog74.fc2.com/blog-entry- 422.html Java ネットワークプログラミング http://ash.jp/java/java_http.htm Socket と URLConnection http://news.mynavi.jp/column/java/054/index.html

参考文献 Java プログラミング Vol.2 古い本ですが Socket 通信を使った五目並べや DatagramPacket の例も載っています