平成28年度メディアネットワーク演習II サイバーコミュニケーション

平成 28 年度メディアネットワーク演習 II
サイバーコミュニケーション
1
1
はじめに
私たちの世界は,インターネットや携帯電話が普及したことによって,様々な
情報やサービスを公開・享受することが可能になった.本演習では,そのインフ
ラとなる情報ネットワークに関する基礎的な知識を,いくつかの課題を通して身
に付けることを目的にしている.
インターネット
複数のコンピュータを回線で接続し,情報交換する仕組みを「ネットワーク」と
呼ぶ.ネットワークは古くから大学などの研究施設や企業で利用されていたが,当
初はそれぞれの通信方式の互換性が少なく,相互通信が難しかった.
その問題を解決するために,インターネットが登場・普及した.インターネッ
トでは,通信手順を統一することによって世界中のネットワークをつなぎ合わせ
ることができる.インターネットの登場によって,個人や企業,国などを超えて,
世界中のコンピュータ同士で情報を共有することが可能になり,現在まで多様な
サービスが展開されてきている.
1.1
プロトコル
プロトコル (protocol) とはコンピュータ同士の間でデータのやり取りに必要な手
順に関する取り決めのことである.異なったコンピュータ,異なったシステム同士の
通信においても,それぞれ同じプロトコルを使用すれば通信をすることが可能とな
る.プロトコルには多くの種類が存在するが,インターネットを始め,現在最も多
く使用されているプロトコルが TCP/IP (Transmission Control Protocol/Internet
Protocol) である.本演習ではこのプロトコルについて学んでいく.
2
2
TCP/IP
TCP/IP はインターネットや LAN など,様々な用途に利用されている.様々な
環境にも適応できるよう,階層構造を成した複数のプロトコルの集合体となって
いるのが特徴である.
TCP/IP の階層構造
TCP/IP プロトコル群は表 1 に示すような階層構造をしている.各機能を物理
層からアプリケーション層に向かって分離・階層化することで,個々の機能が独
立し,システム開発や保守が容易になっている.
階層
アプリケーション層
トランスポート層
ネットワーク層
データリンク層
物理層
表 1: TCP/IP の階層構造
主な機能
ネットワークを利用するアプリ
ケーションの通信規約
エラー検出と訂正など
複数のネットワークの接続,ルー
ティング
同一ネットワーク内のマシン間の
データ通信
プロトコルのハードウェアレベル
の制御
主なプロトコル
telnet,ftp,http,smtp
TCP,UDP
IP,ICMP
Ethernet
回線をたどってデータが転送されるときには,高い階層から低い階層にデータ
が渡され,データを受け取るときには低い階層から高い階層にデータが渡される.
今回の実験ではこれらの中でも上層に属する 3 層についてふれる.
ネットワーク層
ネットワーク層では,インターネット上で別々のネットワーク上に存在する任意
のマシン間の通信を確立するための方式が定められている.この層では各マシン
に定められた IP アドレス(後述)を用いて通信を行い,データリンク層の IP ア
ドレスからイーサネットアドレスへの変換を ARP プロトコルで,逆にイーサネッ
トアドレスから IP アドレスへの変換は RARP プロトコルを用いて行う.ルータ
などの製品がネットワーク層までのプロトコルを実装している.
3
トランスポート層
トランスポート層のプロトコルは,データ伝送の信頼性を保証するための機能
を提供する.この層の代表的なプロトコルとして TCP,UDP があり,UDP は転
送速度は高いが信頼性が低く,TCP は信頼性は高いが転送速度が低いという特徴
がある.また TCP,UDP 共に IP アドレスの補助アドレスとしてポート番号(後
述)を用いる.
アプリケーション層
TCP/IP のプロトコルの上で走る多くのアプリケーションがここで定義されて
いる.私たちが良く使用する http,ftp,smtp などはこの層のプロトコルである.
4
3
ネットワークとアドレス
コンピュータ同士で通信をしようとすると,それぞれを認識・区別する必要が
ある.そのために TCP/IP プロトコルではデータリンク層とネットワーク層にお
いて,MAC アドレスと IP アドレスの 2 つのアドレスによってお互いを認識・区
別している.
MAC アドレス(イーサネットアドレス)
MAC アドレスは 16 進数の 12 桁で表される物理アドレスである(例:00-02-9600-17-EF).製造時から Ethernet ボードに必ず割り当てられており,基本的に同
じ MAC アドレスは全世界で 2 つ以上存在しないようになっている.データリンク
層ではこの MAC アドレスを用いることで個体の区別を行う.
IP アドレス
IP アドレスは,ネットワーク層で通信相手を識別するため,ネットワーク上の
各マシンに割り当てられるアドレスである.ネットワーク層ではこの IP アドレス
と MAC アドレスをひも付けすることでコンピュータを認識している.
IP アドレスは 32bit の 2 進値により表現されるが,そのままでは人間が取り扱
いにくいため,実際には以下のように表記される.
(1) 11000000 10101000 00000001 00000001 (IP アドレスはもともと 2 進法により
表現されている)
⇓
(2) 11000000 ∥ 10101000 ∥ 00000001 ∥ 00000001 (2 進数の数字に対し,8 ビット
ずつ区切りを入れる)
⇓
(3) 192.168.1.1 (区切りを一塊と見て人間にわかりやすいように 10 進法による表
現に直す)
計算機室における IP アドレスは,液晶画面のラベルに記載されているので,計
算機室内で相互通信する場合にはそのアドレスを利用する.
5
ポート番号
MAC アドレスや IP アドレスを用いてコンピュータを認識できた後,その相手
のどのようなサービスを利用するかを選択する必要がある.そのためにポート番
号が利用される.ポート番号は 0∼65535 番まで存在し,送受信の際には必ず自分
と相手のポート番号をひも付けして通信が行われる.
6
アプリケーションプロトコル
4
TCP/IP を利用したアプリケーションでは,クライアントはサーバに対して特定
のポート番号とソケット通信を確立し,文字列やバイナリ列をやりとりしてサー
ビスを享受する.そこで利用される http や smtp といった,もっとも応用的なプ
ロトコルを,アプリケーションプロトコルという.
ウェルノウン・ポート
通常アプリケーションプロトコル 1 つにつき最低 1 つのポート番号を利用する
が,ポート番号とアプリケーションプロトコルの対応がサーバによって異なると,
ネットワーク運営上混乱を来してしまう.そこで TCP/IP では,ウェルノウン・
ポートとして 0 番から 1023 番までのプロトコルは標準的に予約されている.Linux
や Windows では,ウェルノウン・ポートに定義されるプロトコルをはじめとして,
一般的なポート番号との対応を services というファイルに記録している.
課題 1
ウェルノウン・ポートを調べ,その中の 3 つのプロトコルについて,その用途
とそれを利用するサーバソフトと,クライアントソフトの具体例を挙げなさ
い.(但し,Telnet,Echo,HTTP は除く).
4.1
Telnet
Telnet(テルネット)とは,遠隔地(リモート)にあるサーバを端末から操作で
きるようにする仮想端末ソフトウェア(プログラム),またはそれを可能にするプ
ロトコルのことを指す.
複数の人が同時に使用することを前提に開発された UNIX では,シリアル回線
に複数の端末をつないで作業を行うことができた.この端末とホストの通信を,IP
のネットワーク上で担うのが Telnet クライアントプログラムと,その通信手順を
規定した Telnet プロトコルである.
Telnet クライアントは,Telnet サーバとの間でソケットを開き,非常に単純な
テキストベースの通信を行う.Telnet 自身のコマンドを利用する際にはエスケー
プコードを利用する.リモートのシェルを利用する Telnet サービスは,基本的に
ポート番号 23 番を使用するが,ほとんどのクライアントはポート番号を指定でき,
それ以外のテキストベースのソケット通信のクライアントとして利用することも
可能である.
7
Telnet クライアントの利用法
ターミナルから telnet というコマンドで読み出すことができる.サービスを提
供しているサーバに対して,IP アドレスとポート番号を指定すれば接続すること
ができる.
telnet [IP アドレス (ホスト名)] [ポート番号]
サーバによって応答が異なるが,基本的に 1 行単位でコマンドを入力し,Enter
でサーバに送信する点は共通である.なお,通信内容は標準出力にすべて返って
くるので,これをファイルに記録したい場合は tee コマンドにパイプで渡すとよ
い.記録したファイルはテキストエディタなどで開けるので,様々な用途に活用
できる.
telnet [IP アドレス (ホスト名)] [ポート番号] |
名] (※ tee コマンドは windows では使用不可)
tee [記録したいファイル
またコマンド入力を失敗したときなど,サーバとの接続を切断したいときはエ
スケープ文字を入力し,Telnet クライアントのメニューに移ってから q を入力す
ると終了することができる.
telnet 192.168.2.xxx 8080
Escape character is ’^ ]’.
## この場合は CTRL キーを押しながら’]’ がエ
スケープ文字
hiog;ehi;o machigatta-----^ ] ## 間違ったのでエスケープ文字入力
telnet> q
## q を入力
Connection closed.
## 接続切断
課題 2
Telnet クライアントを利用し,IP アドレス 192.168.2.4 の 7 番ポートに対して
接続しなさい.また,適当にコマンドを送信して反応を確認し,このプロトコ
ルが何をするものなのかをまとめなさい.
4.2
HTTP
普段私たちが使っているアプリケーションの中でも,特にもっとも利用されて
いるのが HTTP(Hyper Text Transport Protocol) である.Web ブラウザで文章を
閲覧する際,必ずこのプロトコルを利用して文章や画像が転送されている.Web
ブラウザがどのようにして Web サーバからデータをダウンロードしているか,そ
の手続きについて学ぶ.
8
4.2.1
やりとりの構成
HTTP プロトコルにおけるやりとりは,ヘッダ部とデータ部の 2 つに分かれる.ヘ
ッダ部はやりとりするデータの制御に必要な情報から構成され,データ部は要求され
たデータをクライアントに送るものである.実際の手続きでは,まずクライアントか
らヘッダを送り,その情報を元にサーバがヘッダとデータを送り返してくる流れとな
る.例えば,Telnet クライアントで http://www.ist.hokudai.ac.jp/index.html
にアクセスする場合には,次のようなやりとりでダウンロードする.(↓ は Enter)
telnet www.ist.hokudai.ac.jp 80 ↓ ## サーバとポート番号を指定して接続
GET /index.html HTTP 1.0 ↓ ## ファイルを要求
User-Agent: Jikken2016 ixxxxx ↓ ## User-Agent を報告
(空行) ↓ ## ヘッダ送信終了
上記の通り,HTTP では通常,80 番のポートを利用している.サーバとの接続
が確立されると,ページを要求する手続きに移る.GET から始まる文は HTTP
サーバからデータを要求することを意味し,引数にファイルの URL とプロトコル
のバージョンを渡す.その次の行からは任意に追加する情報が続くが,今回指定
している User-Agent は,クライアントの種類とバージョン情報をサーバに伝える
ものである.
一通りの情報をサーバに伝え終わったら空行を送り,サーバからの応答を得る.
サーバは次のような反応を返す.
HTTP/1.1 200 OK
Date: Mon, 23 Apr 2009 07:38:00 GMT
Server: Apache/2.0.54 (Debian GNU/Linux)
Last-Modified: Wed, 09 Nov 2005 10:02:52 GMT
ETag: "5f0008-4bc-fdcbeb00"
Accept-Ranges: bytes
Content-Length: 1212
Connection: close
Content-Type: text/html
<HTML>
..
.
..
.
情報工学研究科のホームページを得ることができた.Web ブラウザで http://
www.ist.hokudai.ac.jp/index.html を開く場合,ブラウザ内部ではこのような
やりとりが行われている.
9
課題 3
Telnet クライアントを用いて以下の手順を実行しなさい.
• IP アドレスは 192.168.2.4,ポート番号は 80 に設定する.
• GET を用い, 文章 /kadai3.html をダウンロードする.
• User-Agent を「Jikken2016 ixxxxx」に設定 (x は各自の学生番号).
• もう一度 TELNET 接続し, /mcm.html をダウンロードする.
• もう一度 TELNET 接続し, /kadai/kadai3.html をダウンロードする.
• もう一度 TELNET 接続し, GET の代わりに GOT を用いて, /kadai3.
html をダウンロードする.
• 以上を実行し, もしエラーが発生した場合, そのエラーを調べる.
User-Agent は指定の書式以外受け付けないようになっているので,各自自分の
User-Agent を設定して作業しなさい (評価対象になるので間違いに注意).ま
た,Telnet クライアントのやりとりも記録し (画像ファイルのバイナリ列を除
く),レポートに記載すること.
10
電子メールの仕組み
5
電子メールをネットワーク上で実現しているものがメールサーバである.電子
メールサーバは,主にメールを配送するサーバ (SMTP サーバ) とユーザが届い
たメールを自ホストに持ってくることをサポートするサーバ (POP サーバまたは
IMAP サーバ) に分類することができる.この 2 種類のサーバがお互いに連携する
ことによって,現在の電子メールシステムが成り立っている.
5.1
電子メールに使用されるプロトコル
SMTP
メールを送信するためには『SMTP』というプロトコルを用いた通信手段が必
要である.SMTP とは『Simple Mail Transfer Protocol』の略称で,きわめてシン
プルなメール転送プロトコルである.このプロトコルに従って情報を送受信する
ことにより,メールという形で任意の相手にメッセージを送信することができる.
課題 4
Telnet を用いてメールサーバにアクセスし,SMTP プロトコルを手動で入力
して以下のあて先にメールを送信せよ.ただし,メールの本文には学生番号と
名前 (ローマ字) を入力すること.
※入力したコマンドを添付するかは任意とする.
送信先メールアドレス : ensyu@celcius
11
6
レポート・評価
レポートには以下の内容を記して提出すること
• 各課題についての解答
• 課題解答導出のためのコマンド入出力過程
• 感想
提出先:情報科学研究科棟 7-16 前レポートボックス
締め切り:8 月 1 日 (月) 8 時 45 分まで
※原則として締め切り後のレポート提出は受け付けない.
(何らかの事情で遅れ
ざるを得ないときは必ず事前に連絡すること)
連絡先:質問等はメールで受け付ける.
メディア創生学研究室 姜 助教 kssrh@ist.hokudai.ac.jp
12
補足 : Telnet によるメールサーバへのアクセス
Telnet でメールサーバにアクセスするためには,まずコマンドライン上で以下
のコマンドを入力しログインする.
telnet [サーバ名 or IP アドレス] [port 番号]
・コマンド入力例
telnet
192.168.2.4 25 ログイン後は SMTP プロトコルを入力しメールを送信することが可能となる.
・SMTP についての基本的なコマンド
コマンド:HELO
入力内容:
HELO␣<domain>
説明:HELO コマンドは SMTP サーバに接続している自分のホスト名を引数に取
る.
ここでのホスト名は,celcius とする.
コマンド:MAIL
入力内容
:
MAIL␣FROM:<
送信者のメールアドレス
>
説明:MAIL コマンドで送信元のメールアドレスを指定.
コマンド:RCPT
入力内容
:
RCPT␣TO:<
送信先のメールアドレス
>
説明:RCPT コマンドで送信先のアドレスを指定.
コマンド:DATA
入力内容:
DATA 説明:DATA コマンドでメールの内容の書き込み開始を伝える.その後は好きなこ
とを書く (半角英数字以外は使わない).最後に"."(ピリオド) だけの行を送ると,
そこで入力が終了となる.
13
コマンド:QUIT
入力内容:
QUIT
説明:QUIT コマンドを実行すると接続がきれ,メールが送信される.
DATA の内容
'
DATA
Subject:<題名>
From:<送信者のアドレス>
To:<受信者のアドレス>
<本文>
.
&
$
%
14