大量のデータから、「コレ」特定のデータを指定するには、確実に識別できるなんらかのキーが必要となる。行を特定したり、表と表に関係を持たせたりするためには、主キーや外部キーという、鍵となる情報が必要。主キーに該当するのが、身近なところでは社員番号や、学生番号がある。個人を識別するなら名前をそのまま使えばいいじゃなかいか、といういわれれば、同姓同名の存在が否定てきないので、主キーには使えない。あ
表の中で各行を識別するために使う列のことを、主キーと呼ぶ。要は、主キーというのは、ID番号が入った列のこと。主キーとできる条件は、表の中で内容が重複しないことと、内容が空ではないこと。 キーには、ひとつの列では一意にならないけど、複数の列を組み合わせれば一意になるぞ、という場合がある。このような、複数列を組み合わせて主キーとしたものを という。例えば、ボクは6年生だとか、3組だとか、出席番号16番だとか、ひとつひとつの列では主キーになりえないものを、複合することで、6年3組 出席番号16番、とすれば複合キーになる。複合キー
表と表とを関係付けるため、他の表の主キーを参照する列のことを、外部キーという。外部キーによって、両者が関係付けされていることで、ある表から、ある表へ参照することができる。外部キー
正規化の目的は、データに矛盾や重複を生じさせないこと。関係データベースでは、第3正規形の表を管理します。他にも正規形は複数種類あり、正規化されていない繰り返し部分を持つ表を という非正規形
非正規形の表から、繰り返し部分を取り除いたものが となります。もちろんそのままデータを捨てちゃいけません。切り離したそれぞれのデータを、独立したレコードとして挿入してやるのです。第1正規形
表の中における列と列の関係をあらわしたものが関係従属と、部分関数従属。主キーが決まれば、列の値が一意に定まる関係。例えば、社員番号が分かれば、名前、部署が決まる。学年、組、出席番号が分かれば、名前が決まる。例えば、名前は、社員番号に している、などと使う。関数従属
「受注No」がきまれば、これら3つの列が、決まり、「商品コード」が決まればこれら2つの列が決まる。
主キーの一部分に対して関数従属する項目なので、このような関係を と呼びます部分関数従属
それでは第2正規形の説明に移りましょう。第1正規形の表から、部分関数従属している列を切り出したものが第2正規形となります。第2正規形
第2正規形の表から、主キー以外の列に関数従属している列を切り出したものが となります。第3正規形
これら正規化の目的は、データの重複や矛盾の排除をし、いわゆる属性間の結合度を低下させることでら更新時の、ロック待ちを減らす。
ロック待ちのロックとは、ファイルへの書き込みや周辺機器の操作などを行う際に、他からのアクセスを一時的に禁止する方式をいう。 並行して複数のプログラムなどが動作している場合に、データや機器の状態の整合性を保つために行われる。
特定のレコードをロックすると、他のトランザクションはロックが解除されるまで待たなくてはいけません。 これをロック待ちと言います。 SQL (Structured Query Language) というのは、
DBMSへと指示を伝えるために用いる言語のことです。
SQLには、様々な命令文が用意されています。 たとえば表を定義 )したり、
レコードを挿入 したり、 削除したり、時にはレコードの一部
を更新 したりなどなど。
これらの命令は、スキーマの定義や表の作成といった定義を担当するデータ定義言語(DDL: Data Definition Language) と、 データの抽出や挿入、更新、削除といった操作を担当するデータ操作言語 (DMC Data Manipulation Language) とに大別することができます。 SQLは、この2つの言語によって構成されているというわけです。
SQLが持つ命令の中でもっとも特徴的なのが、 様々な条件を付加することで、柔軟にデータを抽出することができるSELECT文でしょう。
データというのは、 “ただ貯め込んだだけ”ではあまり意味を持ちません。(たとえば「店舗の時間帯ごとに見る顧客の年齢分布」とか「売上上位10店舗の商品
スト」とか)を行って抽出することで、はじめてデータに意味がくっついてくるわけです。これを担当するのがSELECT文。当然その重要性は大きいわけですね。 SELECT文によるデータ抽出の基本は、「どのような条件で」「どの表から)どの列を取り出すか」です。これらを指定することによって、データベースから多様なデータを取り出すことができるのです。
SELECT 列名 FROM 表名 WHERE 条件
SELECT 商品名、単価 FROM 商品表 WHERE 単価 =300 射影は、表の中から列を取り出す関係演算です。SELECT文で射影を行うには、次のように取り出したい列を指定します。
SELECT 商品名 FROM 商品表
すると商品名の列が取り出される。
SELECT * FROM〜にすると全ての列が取り出される 選択は、表の中から行を取り出す関係演算です。SELECT文で選択を行うには、WHERE句を使って、取り出したい行の条件を指定します。
SELECT * FROM 商品表 WHERE 単価<200
すると単価が200未満の行が取り出される 「200円以上500円未満の品」とかって
どう指定するんだろ?という疑問がでてきます。その時は条件を組み合わせて抽出する。
単価が40より大きいかつ200未満を指定したい時
SELECT * FROM 商品表 WHERE
の後ろに単価>40 AND 単価<200
単価が40未満または200より大きい時を指定したい時
単価<40 OR 単価>200
(単価が40未満または200より大きい)ではないを指定したい時
NOT (単価<40 OR 単価>200) 結合は、表と表とをくっつける関係演算です。SELECT文で結合を行うには、FROM句の中にくっつけたい表の名前を羅列して、WHERE句で「どの列を使ってくっつけるか」を定します。
SELECT *FROM 受注表,顧客表(くっつけたい表たち)WHERE 受注表.顧客コード=顧客表.顧客コード(使いたい列)
表名と列名の間にある「.」は所属をあらわしていて、「どの表に属する列か」を表現するために用いられます。ここでいうと受注表"の"顧客コード 抽出結果を整列させておきたい場合はORDER BY句を使います。
ORDER BY 列名 ASC(またはDESC)
データを見やすくするのに整列は欠かせないですからね!
整列に用いる列名
昇順で並べたい場合はASC(省略可)
降順の場合はDESCを指定
例えば商品表を単価順で並び替えるには、次のように指定します。
SELECT *FROM 商品表 ORDER BY 単価
昇順なのでASCは省略している。
複数の列で並び替えるには、ORDER BY句の後ろに複数の列を指定します。
SELECT 顧客コード,受注No,受注日付
FROM 受注表
ORDER BY 顧客コード,受注日付 DESC
顧客コードを昇順に並べて、受注日付を降順て並べる SQLには、データを取り出す際に集計を行う、様々な関数(集合関数と言う)が用意されています。
この集合関数を用いると、列の合計値や最大値、レコードの件数(行数)などを求めることができる。
たとえば、「扱っている商品の数を取り出したい」という場合、COUNT(*)関数(行数を求める関数)を使って次のように指定します。
SELECT COUNT(*) FROM 商品表
データをグループ化する。
グループ化というのは、特定の列を指して、その中身が一致する項目をひとまとめにして扱うことを言います。前ページの集合関数は、このグループ化と組み合わせることで、より威力を発揮するのであります。
例えば色んな部署の人が羅列されたデータがあるとして、それを部署ごとにまとめたりするのがグループ化。
グループ化には、GROUP BY句を使います。実際の例を見て、感覚を掴みましょう。
GROUP BY グループ化したい列名
グループに条件をつけて絞り込む
グループ化をした際、これに条件をつけて、取り出すグループを炊り込むことができます。「条件をつけて校り込む」というのは、たとえば次のようなことを指します。部署ごとにグループ化して、その部署の平均年齢が30歳未満のものだけ取り出す。このような絞り込みを、行うには、HAVING句を使います。 データベースを複数の人が同時に変更できてしまうと、内容に不整合が生じる恐れがあります。そうした問題からデータベースを守るのがトランザクション管理と排他制御です。 データベースでは、一連の処理をひとまとめにしたものをトランザクションと呼びます。例えば、在庫数を確認し、在庫数の更新、この一連の流れのこと。
データベースは、このトランザクション単位で更新処理を管理します。
一方、排他制御は処理中のデータをロックして、他の人が読み書きできないようにする機能です。つまりトランザクションの間、使用するデータをロックしておけば、誰かに割り込まれてデータの不整合が生じたりする恐れがなくなるわけです。ロックする方法には、2種類ある。
排他制御のロック方法のうち、各ユーザはデータを読むことができますが、書くことはできない。読むことはできるので、在庫数を調べることに内題はありません共有ロック
排他制御のロック方法のうち、他のユーザはデータを読むことも、書くこともできません。自分は読むことも書くこともできる。 ただしロック機能を使う場合には注意しないと、複数のトランザクションがお互いに相手の使いたいデータをロックしてしまい、「お互いがお互いのロック解除を永遠に待ち続ける」
という、かなりやるせない現象が起こりえます。これをデッドロックと呼びます。 データベース管理システム(DBMS)では、トランザクション処理に対して4つの特性が必須とされます。それぞれの頭文字をとって、ACID特性と呼ばれます。 ACID特性の一つ目は、トランザクションの処理結果は、「すべて実行されるか」「まったく実行されないか」のい
すれかで終了すること。中途半端に一部だけ実行されるようなことは許容しない。Atomicity(原始性)
ACID特性のうち、データベースの内容が矛盾のない状態であること。トランザクションの処理結果が、矛盾を生じさせるようなことになってはいけない。例えば、在庫数の推移と、売上のデータが一致しない等。Consistency(一貫性)
ACID特性の一つに、複数のトランザクションを同時に実行した場合と、順番に実行した場合の処理結果が一致すること。ようするに「排他処理きちんとやって相互に影響させないよーにね」ってこと。
一個で処理させた場合も、2個の場合も処理の結果ぎ変わらないようにIsolation (隔離性)
ACID特性のうち、正常に終了したトランザクションの更新結果は、障害が発生してもデータベースから消失しないこと。つまりなんらかの復旧手段が保証されてないといけない。Durability(耐久性)
一連のSQL文をひとつのプログラムにまとめて、DBMS上に保存しておくことを という。こうすることで、ちまちまとSQL文を流す必要がないのでネットワークの負荷が軽減できる、プロシージャはSQL文の解析も済ませた即実行可能な形式なので処理速度の向上が見込める。ストアドプロシージャ
データベースは障害の発生に備えて定期的にバックアップを取ることが基本です。バックアップ後の更新は、ジャーナルと呼ばれるログファイルに、更新前の状態(更新前ジャーナル)と更新後の状態(更新後ジャーナル)を逐一記録して、データベースの更新履歴を管理するようにしています。実際に障害が発生した場合は、これらのファイルを使って、ロールバックやロールフォワードなどの解害回復処理を行い、元の状態に復旧します。 前節でも述べたように、データベースは、トランザクション単位で更新処理を管理します。これはどういうことかというと、「トランザクション内の更新すべてを反映する」か、「トランザクション内の更新すべてを取り消す」かの、どちらかしかないということです。
たとえば口座間の銀行振込を見てみましょう。仮にAさんがBさんに1,000円振り込むとした場合、処理の流れは次のようになります。Aさんの口座残高を確認。そしてAさんの残高を1000円減らす。そしてBさんの口座残高を確認。そしてBさんの残高を1000円増やす。この一連の流れがトランザクション。この中で、たとえばどこかの処理がすっこけちゃって、「Aさんの口座は減額されてるのに、
Bさんの口座はお金が増えてない」なんてことになると困りますよね。場合によっては「訴えてやる!」なんて言われて、大変なことになりかねません。そのため、データベースに更新内容を反映させるのは、「すべての処理が問題なく完了しました」というタイミングじゃないといかんわけです。
トランザクションは、一連の処理が問題なく完了できた時、最後にその更新を確定することで、データベースへと更新内容を反映させます。これをコミットと呼びます。一方、トランザクション処理中になんらかの障害が発生して更新に失敗した場合、そこまでに行った処理というのは、すべてなかったことにしないといけません。そうじゃないとデータに不整合が生じてしまうからです。そこでこのような場合には、データベース更新前の状態を更新前ジャーナルから取得して、データベースをトランザクション開始直前の状態にまでします。この処理をロールバックと呼びます。
例)更新前ジャーナルを使ってロールバック処理を行いデータベースの内容を巻き戻します。 一つのデータベースとして扱えるようになってるんだけど、実は各サイトのデータベースと連携して動いているシステムを分散データベースシステムと呼ぶ。
ます全サイトに対して「コミットできる?」という問いあわせを行い、その結果を見てコミット、もしくはロールバックを行います。この方式を2相コミットと呼びます。 トランザクション処理中ではなく、ディスク障害などで突然データベースが故障したとき、バックアップファイルと更新後ジャーナルを使って、データベースを障害発生直前の状態にまで復旧させる。これをロールフォワードと呼ぶ 事業所やオフィスの中など、比較的狭い範用のネットワークをLAN(local area network)と呼びます。
そして、地理的に離れているLANとLANとをつないだネットワークをWAN(wide area network)と呼びます。 コンピュータがデータをやり取りするためには、もっともシンプルな形は、互いを直接1本の回線で結んでしまうこと。これを専用回線方式と言います。
しかしこれでは1対1の通信しか行えません。そこで、交換機(にあたるもの)が回線の選択を行って、必要に応じた通信路が確立される方式を交換方式と言います。交換方式には、大きく分けて2種類があります。 交換方式のネットーワークの一つは、
送信元から送信先にまで至る経路を交換機がつなぎ、通信路として固定。
通信路に選ばれた回線は、占有されるので、他の端末がその回線を使うことはできない。アナログ電話がこのタイプで、通話料というのは回線の占有時間に対して課金されてるわけですね。この方式を という回線交換方式
パケット(小包の意)という単位に分割された通信データを、交換機が適切な回線へと送り出すことで通信路を形成します。具体的には、送信データをバラバラに分割して、パケットにする。パケットには宛先情報がくっついてとり、それを回線に送り出す。交換機はパケットの仕分け係を務め、パケットを受け取ると宛先から適切な回線に送り出す。こうすることで、回線が使用中になるのはポケットという小さなデータが送られる短時間だけになり、かつパケットを交換機は蓄積しておくので、複数の端末で回線を共有して使うことができる。WANの構築で拠点間を接続する場合などを除いて、現在のコンピュータネットワークで用いられるのは基本的にすべてこの です。パケット交換方式
WANの構築では電気通信事業者の提供する通合サービスを用いて拠点をつなぐことになります。そこで用いられる通信方式として代表的なものが、専用線、フレームリレー方式、ATM交換方式(セルフリレー方式)、広域イーサネットがある。 拠点間を専用回線で結ぶサービス。回線速度と距離によって費用が決まる。セキュリティは高いが、非常に高額な通信方式は?専用線
パケット交換方式をもとに、伝送中の誤り制徴を簡路化して高速化を図ったもの。データ転送の単位は可変長のフレームを用いる。フレームリレー方式
パケット交換方式をもとに、デー夕転送の単位を可変長ではなく固定長のセル(53バイト)とすることで高速化を図ったもの。パケット交換方式と比べて、伝送遅延は小さい。ATM交換方式(セルフリレー方式)
LANで一般的に使われているイーサネット技術を用いて拠点間を接続するもの。高速で、しかも一般的に使用している機器をそのまま使えるためコスト面でのメリットも大きい。WAN構築における近年の主流サービス。広域イーサネット
LANを構築する時に、各コンピュータをどのようにつなぐか。その接続形態のことをトポロジーと呼びます。代表的なトポロジーは3つある。 トポロジーで、ハブを中心として、放射状に各コンピュータを接続する形態です。イーサネットの10BAS-Tや100BASE-TXや1000BASE-Tという規格などで使われています。
規格名称10BASE-T
100BASE-TX
1000BASE-T
伝送速度10Mbps
100Mbps
1G (1000M) bps
伝送距離最大100m
最大100m
*100m
伝送媒体ツイストペアケーブル
ツイストペアケーブル
ツイストペアケーブル
インターネットの有線LANと似たケーブルスター型
トポロジーで、1本の基幹となるケーブルに、各コンピュータを接続する形態です。イーサネットの10BASE-5や
10BASE-2という規格などで使われています。
規格名称 10BASE5
伝送速度 10Mbps
伝送距離 最大500m
伝送媒体 同軸ケーブル(Thick coax)
太さ10mmのケーブル
規格名称 10BASE2
伝送速度 10Mbps
伝送距離 最大185m
伝送媒体 同軸ケーブル(Thin coax)
太さ5mmjケーブルバス型
トポロジーで、リング状に各コンピュータを接続する形態です。
トークンリングという規格などで使われています。
リング型LANの代表格であるトークンリングでは、アクセス制御方式にトークンバッシング方式を用います。平常時は、トークンだけがネットワーク上をぐるぐると流れています。データを送信した
い時は、このトークンにデータをくっつけて次へ流します。「自分宛てじゃないなぁ」という場合はそのまま次へ流し、「あ、自分宛てだ」という場合はデータを受け取ってから、「受信しましたよ」というマークをつけて再度ネットワークに流します。マークが付加されたトークンが送信元に到着すると、送信元はトークンをフリートークンに戻してからネットワークに放流します。これでネットワークは平常時の状態へと戻ります。リング型
現在のLANはイーサネットがスタンダード。
LANの規格として、現在もっとも普及しているのがイーサネット(Ethernet)です。IEEE(米国電気電子技術者協会)によって標準化されており、接続形態や伝送速度ごとに、次のような規格に分かれています。伝送速度に使われているbps (bits per second) という単位は、1秒間に送ることのできるデータ量(ビット数)をあらわしています。
イーサネットは、アクセス制御方式としてCSMA/CD (Carrier Sense Multiple
Access/Collision Detection)方式を採用しています。
CSMA/CD方式では、ネットワーク上の通信状況を監視して、他に送信を行っている者がいないことを確認してデータの送信を開始します。
それでも同時に送信してしまい、通信パケットの衝突(コリジョン)が発生した場合は、各々ランダムに決めた時間待機してから、再度送信を行います。
このような通信を行うことで、一本のケーブルを複数のコンピュータで共有することができる。 無線LANの通信方法には、アクセスポイントを介して通信を行うインフラストラクチャ通信モードと、アクセスポイントを介さず、機器同士で直接通信を行う、アドホック通信モードがある。便利である反面、電波を盗聴されてしまう恐れもあるため、通信を暗号化するなどセキュリティ対策が必要。
そこで、下記のような暗号化規格を用いて、アクセスポイントと接続することになる。
WEP
WiFiの暗号化規格として、最初に採用された方式。数分で暗号化が解かれてしまう脆弱性があるため、利用は非推奨となっている。
WPA
WEPのセキュリティ面を向上させた規格。だが、脆弱性がなくなったわけではないため、利用は推奨されていない。
WPA2
WPAを改良した規格で、現在の主流である規格。AES方式を使うことで、より安全性を高められる。
WPA3
WPA2で発見された脆弱性を解消した規格。個人用と企業用の2種類がある 無線LANは固有の名前を持つ。これをS S I D(もしくはE S S I D)という。
同一S S I Dの中は同一グループとみなし、互いに通信できる。アクセスポイントを置く、インフラストラクチャ通信モードではアクセスポイントにS S I Dを設定する。機器同士が直接通信を行う、アドホック通信モードでは、すべての機器に同じS S I Dを設定する。
このS S I Dを隠して使うS S I Dステルスという機能があります。S S I Dを隠ぺいすることで、不正利用されるリスクを減少できるとされています。
他にもゲストS S I Dという機能によって、インターネットへの接続のみを開放する使い方もあります。この場合利用者は、他の端末へはアクセスできないため、安全性を保つことができます。 ネットワークにより、複数のコンピュータが組み合わさって働く処理の形態にはいくつか種類がある。
ホストコンピュータが集中的に処理をして、他のコンピュータはそれにぶら下がる構成の処理形態。
長所としては、一台に集中しているため、データの一貫性を維持管理しやすい。そのためセキュリティの確保や運用管理が容易。
短所は、システムの拡張が大変、壊れると全体が止まる
しかし、最近ではホストコンピュータをそれぞれのパソコン内で、いわゆる仮想環境で扱えるようになってきており、短所がなくなりつつある集中処理
複数のコンピュータに負荷を分散させて、それぞれで処理を行うようにした構成の処理形態。
長所は、システムの拡張が容易。
一部のコンピュータが壊れても全体には影響しない。
短所は、データの一貫性を維持管理しづらい、セキュリティの確保や運用管理が大変分散処理
昔は集中処理が主流でしたが、近年ではコンピュータの性能が上がってきたことにより、分散処理ではあるが、集中処理の良い所も、取り込んだようなシステム形態、クライアントサーバシステムが登場した。
集中的に管理した方が良い資源(プリンタやハードディスク領域など)やサービス(メールやデータベースなど)を提供するサーバと、必要に応じてリクエストを投げるクライアントという、2種類のコンピュータで処理を行う構成で、現在の主流となっています。
クライアントは通常の処理は自前で行い、サーバの管理下にある資源やサービスを利用したい時に、リクエストを投げる。サーバがクライアントとして他のサーバに要求を出すこともあるし、1台のサーバマシンに複数のサーバ機能を兼任させることもある。 ネットワークを通じてコンピュータ同士がやり取りするための約束事。これをプロトコルといいます。
プロトコルには様々な種類があり、「どんなケーブルを使って」「どんなデータ形式で」といったことが、事細かに決まっています。それらを7階層に分けてみたのがO S I基本参照モデル。
第1層 物理層
物理的にどう繋ぐか
第2層 データリンク層
同一ネットワーク内でどう通信するか
第3層 ネットワーク層
ネットワークとネットワークをどう中継するか
第4層 トランスポート爽
通信の信頼性をどう確保するか
第5層 セッション層
通信の始終をどう管理するか
第6層 プレゼンテーション層
データはどんな形式にするか
第7層 アプリケーション層
具体的にどんなサービスを提供するのか
このように階層分けする理由は、プロトコル改変する際に便利だから 現在は、インターネットの世界で標準とされていることから、TCP/IPというプロトコルが広く利用されている。
TCP/IPというプロトコルを使うネットワークでは、通信データをパケットに分割して通信路へ流します。なんでわざわざ分割して流すのかというと、通信路上を流せるデータ量は有限だから。たとえば100BASE-TXのネットワークだと、1秒間に流せるのは100Mbitまでと決まってます。仮にデータを細切れにせず、そのままの形でドカンと流したとすると・。
5ooMBは500x 8 = 4000Mbitなのでこれを流し終わるまでの40秒間(4000M÷100M)は誰もネットワークを利用できなくなってしまう。
また、通信エラーが起きても、エラーになったパケットだけを再送すればよいので、帯域を浪費することがない LANの装置とO S I基本参照モデルの関係
第1層の物理層に位置している。
LANケーブル
NIC
リピータ
電気的な信号を送ったり、受け取ったり、増幅したりする。
第2層 データリンク層に位置する。
ブリッジ
パケットのMACアドレス情報を使って、ネットワーク内のセグメント間を中継します。
第3層 ネットワーク層に位置する装置
ルータ
パケットのIPアドレス情報を使って、ネットワーク間を中継します。
第4層以降
ゲートウェイ
プロトコル変換を行うことで、トランスポート(第4層)以上か異なるネットワーク同士を中継します。
ちなみに、なんでネットワークの速度はバイトじゃなくてビットであらわすのかというと、実際の通信路を構成するNICやLANケーブルが属する物理層では、単に「1か0か(オンかオフカ)」という電気信号を扱うだけだから。
電気信号以外のことなんか知ったこっちゃないので、「どれだけのオンオフを1秒間に流せるか」という表記の方が向いている・・・というわけですね。 コンピュータをネットワークに接続するための拡張カードが、NIC(LANボード)。
NICの役割は、データを電気信号に変換してケーブル上に流すこと。そして受け取ること。要するに、コンピュータがネットワークでやり取りしようと思ったら、欠かすことのできない部品がNICというわけ。 NICをはじめとするネットワーク機器には、製造段階でMACアドレスという番号が割り振られています。これはIEEE(米国電気電子技術者協会)によって管理される製造メーカ番号と、自社製品に割り振る製造番号との組み合わせで出来ており、世界中で重複しない一意の番号であることが保証されています。
イーサネットでは、このMACアドレスを使って各機器を機別します。
MACアドレス 00:00:F8:02:14:B3
先頭24ビットが製造メーカ番号
00:00:F8
後ろ24ビットが製造番号をあらわす リピータは物理層(第1層)の中継機能を提供する装置です。ケーブルを流れる電気信号を増幅して、LANの総延長距離を伸ばします。LANの規格では、10BASE5や10BASETなどの方式ごとに、ケーブルの総延長距離が定められています。それ以上の距離で通信しようとすると、信号が歪んでしまってまともに通信できません。リピータを間にはさむと、この信号を整形して再送出してくれるので、信号の歪みを解消することができます。
ただし、パケットの中身を解さす、ただ電気信号を増幅するだけなので、不要なパケットも中継してしまうあたりが少々難なところです。 ちなみに、ネットワークに流したパケットは、宛先が誰かに依らずとにかく全員に渡されるわけですが、
この、「無条件にデータが流される範囲(論理的に1本のケーブルでつながっている範囲)」をセグメントと呼びます。
ひとつのセグメント内に大量のコンピュータがつながれていると、パケットの衝突(コリジョン)が多発するようになって、回線の利用効率が下がります。 ブリッジはデータリンク層(第2層)の中継機能を提供する装置です。
セグメント間の中継役として、流れてきたパケットのMACアドレス情報を確認、必要であれば他方のセグメントへとパケットを流します。
ブリッジは、流れてきたパケットを監視することで、最初に「それぞれのセグメントに属するMACアドレスの一覧」を記憶してしまいます。
以降はその一覧に従って、セグメント間を構渡しする必要のあるパケットだけ中継を行います。中継パケットはCSMA/CD方式に従って送出するため、コリジョンの発生が抑制されて、ネットワークの利用効率向上に役立ちます。 ハブは、LANケーブルの接続口(ポート)を複数持つ集線装置です。
ハブには内部的にリピータを複数束ねたものであるリピータハブと、ブリッジを複数束ねたものであるスイッチングハブの2種類があります。それぞれ次のように動作します。
リピータハブ
無条件に全てのポートへパケットを流す
スイッチングハブ
宛先MACアドレスに該当するコンピュータが繋がっているポートにだけ流す。 ルータはネットワーク(第3層)の中継機能を提供する装置です。
異なるネットワーク(LAN) 同士の中継役として、流れてきたパケットのIPアドレス情報を確認した後に、最適な経路へとバケットを転送します。
ブリッジが行う転送は、あくまでもMACアドレスが確認できる範囲でのみ有効なので、外のネットワーク宛のパケットを中継することはできません。
そこでルータの出番。ルータはパケットに書かれた宛先IPアドレスを確認します。IPアドレスというのは、「どのネットワークに属する何番のコンピュータか」という内容を示す情報なので、これと自身が持つ経路表(ルーティングテーブル)とを付き合わせて、最適な転送先を選びます。このことを経路選択(ルーティング)と呼びます。といっても、いつも隣接しているネットワーク宛とばかりは限りません。特にインターネットのように、接続されているネットワークが膨大な数となる場合には、直接相手のネットワークに転送するのはまず不可能です。
そのような場合は、「アッチなら知ってんじゃね?」というルータに放り投げる。
そこもわかんなきゃ、さらに次へ、さらに次へと、ルータ同士がさながらバケツリレーのようにパケットの転送を繰り返して行くことで、いつかは目的地のネットワークへと辿り着く
・・と、そういう仕組みになっているのです。 ゲートウェイはトランスポート層(第4層)以上が異なるネットワーク間で、プロトコル変換による中継機能を提供する装置です。
ネットワーク双方で使っているプロトコルの差異をこの装置が変換、吸収することで、お互いの接続を可能とします。
たとえば、携帯メールとインターネットの電子メールが互いにやり取りできるのも、間にメールゲートウェイという変換器が入ってくれているおかげ。
ゲートウェイは、専用の装置だけではなく、その役割を持たせたネットワーク内のコンピュータなども該当します。
LANと外部ネットワークとの出入り口になるルータをゲートウェイという場合もあります ネットワーク機器というのは、通常だとそれぞれが制御機能を持ち、自身の学習した情報を元にして、パケットの転送処理を行います。当然ネットワーク管理者は、設定変更を行う際には、個々の機器に対して個別に作業しなくてはなりません。
この制御機能をソフトウェア化して分離させることにより、柔軟なネットワーク構成を可能とする技術の総称をSDN (Software-Defined Network)と言います。このSDNを実現する技術の1つにOpenFlowがあります。
従来のネットワーク機器とは異なり、経路制御の機能部分とデータ転送の機能部分を分離させることによって、管理者が経路制御を柔軟に設計・実装して必要な機能を実現できるようにしています。 データの誤りとは、ビットの内容が「0→1」「1→0」と、ノイズやひずみによって、異なる値に化けてしまうことです。
コンピュータがデータを細切れにして送ることができるのは、そのデータが区切りのあるデジタルなデータだから・・でしたよね。そしてそのデータは、突き詰めていくと結局は0か1かの、ビットの集まりなのでありました。
でもケーブルの上を「0なら0」「1なら1」というはっきりしたデータが流れるわけじゃありません。ケーブルの上を流れるのは、あくまでも単なる電気的な信号のみ。この信号の波形を、「この範囲の波形は0」「この範囲の波形は1」と値に置き換えることで、ビットの内容をやり取りしているわけです。
さて、「電気的な信号」なのですから、伝送距離が伸びれば信号は減衰していきますし、横から別の電気的な干渉を加えてやれば、当然波形は乱れます。波形が乱れれば、0か1かの判断も狂うというのは容易に想像できる話です。
こうして生まれるのがデータの誤りです。
データの誤りを、100%確実に防ぐ手段はありません。そこで、パリティチェックやCRC(巡回冗長検査)などの手法を用いて、誤りを検出したり訂正したりするのです。 パリティチェックでは、送信するビット列に対して、パリティビットと呼ばれる検査用のビットを付加することで、データの誤りを検出します。
パリティビットを付加する方法には2種類あって、偶数パリティと、奇数パリティがある。偶数パリティだと、ビット列が1000001のとき、ビット列の1の個数が偶数になるように先頭にパリティビットをセットする。この場合、01000001となり、パリティビットは0。
奇数パリティの場合1000001の中の1は2個あり偶数個なので一つ増やして奇数個にする。よって11000001となり、奇数パリティは1。ただしパリティチェックで可能なのは、「1ビットの誤り」を検出することだけ。偶数個のビット誤りは検出できませんし、「どのビットが誤りか」ということもわかりません。したがってこの方式では、誤り訂正も行えません。 パリティビットは、「どの方向に付加するか」によって垂直パリティと水平パリティに分かれます。水平パリティと垂直パリティを組み合わせて使うのが、水平垂直パリティです。縦横両面から誤りを検出できるので、1ビットの誤りであれば位置を、特定、でき、誤り訂正が行えます。ただし、2ビット以上の誤りになると位置の特定ができなくなるので、その場合誤り訂正はできません。検出はできる。 CRC(巡回冗長検査)
CRC (Cyclic Redundancy Check)は、ビット列を特定の式(生成多項式と呼ばれる)で割り、その余りをチェック用のデータとして付加する方法です。送信側は、計算で得られた余りを、元々のビット列にくっつけて送信データとします。実はこうすることで、そのデータは、計算に用いた生成多項式で「割り切れるはずの数」に変わります。したがってデータを受信した側は、送信側と同一の生成多項式を使って、受信データを割り算します。当然データに問題がなければ割り切れるはすです。この方式では、データの誤り訂正は行えませんが、連続したビットの誤り(バースト誤りという)など、複数ビットの誤りを検出することができます。 TCPとIPという2つのプロトコルの組み合わせが、インターネットにおけるデファクトスタンダードです。
デファクトスタンダードとは、「事実上の標準」という意味。特に標準として定めたわけではないのだけど、みんなしてそれを使うもんだから標準みたいな扱いになっちゃった…という規格などを指す言葉です。TCP/IPもそのひとつ、というわけですね。
で、その中身ですが、まずIP。これは、「複数のネットワークをつないで、その上をパケットが流れる仕組み」といったことを規定しています。いわばネットワークの土台みたいなものです。前節で取り上げたルータが、IPアドレスをもとにバケットを中継したりできるのもコイツのおかげだったりします。
一方のTCPは、そのネットワーク上で「正しくデータが送られたことを保証する仕組み」を定めたもの。
両者が組み合わさることで、「複数のネットワークを渡り歩きながら、パケットを正しく相手に送り届けることができるのですよ」という仕組みになるわけですね。
こうしたインターネットの技術を、そのまま企業内LANなどに転用したネットワークのことをイントラネットと呼びます。 TCP/IPネットワークを構成する上で、中核となるプロトコルが3つある。第4層のトランスポート層のTCP と、UDPが、送信データの信頼性をどのように保証するか、第3層のネットワーク層のIPが、ネットワークをいかにしてつなぎ、経路制御を行うか。ネットワーク層のIPが網としての経路機能を担当し、その上のTCPやUDPが「ではその経絡で小包(パケット)をどのように運ぶのか」という約束事を担当しています。
コネクションレス型の通信(事前に送信相手と接続確認を取ることなく一方的にパケットを送りつける)であるため、通信品質の保証についてはTCPやUDPなどの上位層に任せます。 TCPは、通信相手とのコネクションを確立してから、データを送受信するコネクション型の通信プロトコルです。バケットの順序や送信エラー時の再送などを制御して、送受信するデータの信頼性を保証します。
送信エラー時の再送で、もし、しばらく待っても何も返答がない場合は、念のため同じのを送っとこうとすることで、パケットの欠損を防止します。受信確認をいちいち待ってから次を送るのも時間のムダなので、とりあえず連続して送っとくことで効率アップを図ったりします。確認なしで送信できる最大サイズをウインドウサイズと言います。 UDPは、事前に送信相手と接続確認を取ったりせず、一方的にバケットを送りつけるコネクションレス型の通信プロトコルです。パケットの再送制御などを一切行わないため信頼性に欠けますが、その分高速です。データの信頼性よりもリアルタイム性を重視する用途に適している。身近なとこでは映像配信サービスなんかがそう。多少のコマ落ちは許容しちゃう TCP/IPのネットワークにつながれているコンピュータやネットワーク機器は、IPアドレスという番号で管理されている。IPアドレスは32ビットの数値を、8ビットずつに区切って、それぞれを10進数で表して、それらを.でつないでいる。
11000000101010000000000100000011
11000000 10101000 00000001 00000011
192.168.1.3 IPアドレスには、グローバルIPアドレス(またはグローバルアドレス)とプライベートIPアドレス(またはプライベートアドレス)という、2つの種類があります。
グローバルIPアドレスは、インターネットの世界で使用するIPアドレスです。世界中で一意であることが保証されないといけないので、地域ごとのNIC (Network InformationCenter)と呼ばれる民間の非営利機関によって管理されています。
プライベートIPアドレスは、企業内などLANの中で使えるIPアドレスです。LAN内で重複がなければ、システム管理者が自由に割り当てて使うことができます。グローバルIPアドレスとプライベートIPアドレスの関係は、電話の外線番号と内線番号の関係によく似ています。 ●IPアドレスは「ネットワーク部」と「ホスト部」で出来ている
「IPアドレスはコンピュータの住所みたいなもの」と書きました。
私たちが普段用いている宛名表記をコンピュータ用にしたもの、という意味で書いたわけですが、実際、IPアドレスの内容というのは、それとよく似ているのです。IPアドレスの内容は、ネットワークごとに分かれるネットワークアドレス部(どのネットワークかを示す)と、そのネットワーク内でコンピュータを識別するためのホストアドレス部(どのコンピュータかを示す)とに分かれています。つまり、宛名表記が、「住所と名前」で構成されているのと同じことです。
ネットワークアドレス部
110000001010100000000001
00000011
ホストアドレス部
10進数表記で192.168.1.3
つまりは
1番ホスト 192.168.1.1
2番ホスト 192.168.1.2
3番ホスト 192.168.1.3
冒頭の例で言えば
「ちば県ちば市緑の丘1-1」のドングリ家がネットワークアドレス部
その家の中に一部、二部、三部と兄弟(ホスト)がいるイメージです IPアドレスは、使用するネットワークの規模によってクラスA、クラスB、クラスCと3つのクラスに分かれています(実際にはもっとあるけど一般的でない)。
それぞれ「32ビット中の何ビットをネットワークアドレス部に割り振るか」が規定されているので、それによって持つことのできるホスト数が違ってきます。
クラスA 大規模ネットワーク用
先頭ビットは0と決まっている
ネットワーク部8ビット
ホストアドレス部24ビット 割り当て可能なホスト数:16,777,214台
クラスB 中規模ネットワーク用
先頭2ビットは10と決まっていまる
ネットワークアドレス部16ビット
ホストアドレス部16ビット 割り当て可能なホスト数:65,534台
クラスC 小規模ネットワーク用
先頭3ビットは110と決まっている
ネットワークアドレス部24ビット
ホストアドレス部8ビット 割り当て可能なホスト数:254台
ホストアドレス部が「すべて0」「すべて1」となるアドレスは、それぞれ「ネットワークアドレス(すべて0)」「ブロードキャストアドレス(すべて1)」という意味で予約されているため割り当てには使えません。上図の「割り当で可能なホスト数が、そのビット数で本来あらわせるはずの数から-2した数値になっているのはそのためです。
同一ネットワーク内のすべてのホストに対して、一斉に同じデータを送信することをブロードキャストと言います。
ブロードキャストを行うには、宛先として「ホストアドレス部がすべて1となるIPアドレス」を指定します。このアドレスがつまりは「全員宛て」という意味を持つわけです。
ブロードキャストは「ネットワーク内の全員」宛てなので、OSI階層モデル第3層(ネットワーク層)のルータを越えてパケットが流れることはありません。インターネットに流出する前にルータがいるから。ブロードキャストの逆の言葉として、特定の1台のみに送信することをユニキャストと言います。また、複数ではあるけれども不特定多数ではなく決められた範囲内の複数ホストに送信する場合はマルチキャストと言います。 一番小規模向けのクラスCでも254台のホストを扱えるわけですが、「そんなにホスト数はいらないから、事業部ごとにネットワークを分けたい!」とかいう場合、サブネットマスクを用いてネットワークを分割することができます。
一つのネットワークに大量のホストがいると、通信トラフィックが多くなり、通信効率が下がるため、ネットワークを分割するということ。なのでネットワーク内の全ホスト宛に送信するブロードキャストは最悪。
サブネットマスクは、ビット列のネットワークアドレス部が全て1で、ホストアドレス部が全て0によって、IPアドレスのネットワーク部とホストアドレス部を再定義することができる。
たとえばクラスCのIPアドレスで、次のようにサブネットマスクを指定した場合、62台すつの割り当てが行える4つのサブネットに分割することができます。
IPアドレスとサブネットマスクはセットなので、別々ではなくまとめて記述したい時がままあります。ルータの設定画面とかだと、ちょくちょくあります。
そんな時は、IPアドレスの後に「/サブネットマスク」と、まとめて書くことができます。
IPアドレス サブネットマスク
192.168.1.3 / 255.255.255.0
しかし、これだとちょっと長いので、実際にそんな入力をしていることはまず見かけません。だいたい、次のように省略して記載します。
192.168.1.3/24
IPアドレス サブネットマスクのネットワークアドレス部の長さ(ビット数)
この/24の部分をアドレスプレフィックスといいます。
もともとこれは、CIDR (サイダーと読む)(Classless Inter-Domain Routing)と呼ばれる方式の表記法から来ています。わかりやすくて便利なので、サブネットマスクの書き方としても一般化したわけです。
サブネットではネットワークアドレス部の拡張しかできませんが、CIDRの場合は縮小もできるため、ネットワークを分割するだけではなく、逆に割り当てられるホストのアドレス数を増やして複数のネットワークを集約するなど、より柔軟な構成が可能です。ちなみにこの
CIDR表記は、次に出てくるIPv6でも、同様に使えます。 現在広く用いられているIPはVersion 4のもので、IPv4とも呼ばれています。このプロトコルでは32ビットの数値によってIPアドレスを割り当てるため、表現できる個数は約43億個。
決して少なくはない数ですが、全世界のインターネット接続人口を考えた場合、十分な数とは言えません。
そこで、IPv4の後継規格として置き換えが進められているのがIPV6です。IPv6ではIPアドレスを128ビットの数値によって表現します。そのため、約340個(潤は10^36をあらわす)
という、1兆の1兆倍よりも大きい、実質無限と言ってよい個数のIPアドレスを割り当てることができます。 IPアドレスとMACアドレスの役割の違い
複数の端末がハブに接続されている、単一のネットワーク内では、イーサネット規格によって構成されています。イーサネットはOSI参照モデルの第一層(物理層)と第2層(データリンク層)をサポートするもので、端末(端末の持つNIC)はそれぞれ固有のMACアドレスを持ち、これによって識別されます。しかし、これではネットワークを跨いでの通信ができません。そこで働くのがOSI参照モデル第3層(ネットワーク層)のIPです。この層では、IPアドレスを用いて端末を識別し、ネットワーク間を中継できるようにします。ネットワークを超えた相手にパケットを送りたい場合、送り元には自分のIPアドレス、宛先には相手のIPアドレスを記載してパケットにくっつけます。これは第3層にIPを用いた時のお約束。それを誰に投げるのかと言うと、実際の配送は第2層以下のイーサネットが担当するのです。そこで送信元には自分のMACアドレス、宛先は…実は「LAN1のルータ」のMACアドレスを記載することになるんですね。そして、イーサネットフレームとしてパケットを流すわけ。受けとったルータは、宛先IPアドレスを見て「あ、外側に中継するのね」と理解します。
そうしたら今度は、送信元MACアドレスを自分にして、宛先MACアドレスは中継先のMACアドレスに書き換えて、またまたイーサネットフレームとして流します。
配送はイーサネット。そこで近距離をバケツリレーしてつなぐために使われるのはMACアドレス。中継はIP。そのために使われるのはIPアドレス。
この役割分担と、パケットが運ばれていくイメージを掴んでおきましょう。 LANにつなぐコンピュータの台数が増えてくると、1台ずつに重複しないIPアドレスを割り当てることが思いのほか困難となってきます。DHCP (Dynamic Host Configuration Protocol) というプロトコルを利用すると、こうしたIPアドレスの割り当てなどといった、ネットワークの設定作業を自動化することができます。管理の手間は省けますし、人為的な設定ミスも防ぐことができてバンバンザイ。プロバイダなどのインターネット接続サービスを利用する場合にも、最初にDHCPを使ってインターネット上でのネットワーク設定を取得する手順が一般的です。 LANの中ではプライベートIPアドレスを使っているのが一般的ですが、外のネットワークとやり取りするためにはグローバルIPアドレスが必要です。なので、ルータはLAN側とWAN側の2つのIPアドレスをもっていたりします。では、プライベートIPアドレスしか持たない各コンピュータは、どうやって外のコンピュー夕とやり取りするのでしょうか。それにはNATやIPマスカレード (NAPTともいいます)といったアドレス変換技術を用います。これらは、ルータなどによく実装されています。
NATは、グローバルIPアドレスとプライベートIPアドレスとを1対1で結びつけて、相互に変換を行います。同時にインターネット接続できるのは、グローバルIPアドレスの個数分だけです。
IPマスカレードは、グローバルIPアドレスに複数のプライベートIPアドレスを結びつけて、1対複数の変換を行います。IPアドレスの変換時にポート番号もあわせて書き換えるようにすることで、1つのグローバルIPアドレスでも複数のコンピュータが同時にインターネット接続をすることができます。具体的には、ルータは、送信元IPアドレスを自分の管理するグローバルIPアドレスに書き換えると同時にポート番号も書き換えて、それと各コンピュータとの対応表を覚えておきます。返信されてきたパケットは、着信したポート番号により元々のIPアドレスを割り出して、その値に書き戻してからLAN側へ流します 10進数で表記されたIPアドレスは、2進数で表記されているのよりかはマシですが、それでも人間にとって「覚えやすい」とは言いづらいものがあります。数字の羅列って、丸暗記しないといけないから大変なんですよね。そこで、覚えづらいIPアドレスに対して、文字で別名をつけたものがドメイン名です。た
とえば「技術評論社のネットワークに所属するwwwという名前のコンピュータ」を表現する場合は、次のように書きあらわします。
www.gihyo.co.ip
コンピュータ名.組織名.組織種類.国名
このドメイン名とIPアドレスとを関連づけして管理しているのがDNS (Domain NameSystem) です。DNSサーバに対して「www.gihyo.co.jpのIPアドレスは何?」とか、「IPアドレスが219.101.198.19のドメイン名って何?」とか問い合わせると、それぞれに対応するIPアドレスやドメイン名が返ってきます。
ドメイン名とは、人間にも分かりやすく別名を付けたもの ネットワーク上のサービスは、そのプロトコルを処理するサーバによって提供されています。代表的なプロトコルには次のものがあります。こうした主だったプロトコルにはあらかじめポート番号が予約されており、これをウェルノウンポートと言います。
HTTP Webページの転送に利用するプロトコル。Webブラウザを使ってHTMLで記述された文書を受信する時などに使います。TCP
FTP ファイル転送サービスに利用するプロトコル。インターネット上のサーバにファイルをアップロードしたり、サーバからファイルをダウンロードしたりするのに使います。TCP 転送用20 制御用21
Telnet 他のコンピュータにログインして、適格操作を行う際に使うプロトコル。TCP
SMTP
(Simple Mail
Transfer Protocol)
電子メールの配送部分を担当するプロトコル。メール送信時や、メールサーバ間での送受信時に使います。TCP
POP 電子メールの受信部分を担当するプロトコル。メールサーバ上にあるメールボックスから、愛信したメールを取り出すために使います。TCP
NTP コンピュータの時刻合わせを行うプロトコル。UDP
ネットワーク上で動くサービスたちは、個々に「それ専用のサーバマシンを用意しなきゃいけない」というわけではありません。サーバというのは、「プロトコルを処理してサービスを提供するためのプログラム」が動くことでサーバになっているわけですから、ひとつのコンピュータが、様々なサーバを兼任することは当たり前にあるわけです。でもIPアドレスだと、パケットの宛先となるコンピュータは識別できても、それが「どのサーバブログラムに宛てたものか」までは特定できません。そこで、プログラムの側では0〜65.535までの範囲で自分専用の接続口を設けて待つようになっています。この接続口を示す番号のことを、ポート番号と呼ぶ。IPアドレスとポート番号は
実は常に1セット
IPアドレスでコンピュータを指し、ポート番号で通信相手となるサービス(アプリケーション)を指定するわけです TCP/IPをはじめとするプロトコル群や、続々と登場する各種サービスなど、こうしたインターネットで利用される技術の標準化を推進する任意団体IETF(Internet Engineering Task Force)です。
JETFにおいて取りまとめた技術仕様は、RFC (Request For Comments)という名前で文書化され、インターネット上で公開されています。 インターネットとWWWが同義語として使われるケースがあるほど、今や定着しているサービスです。自宅からインターネットに接続する場合、ほとんどの人がインターネットプロバイダ(ISP、単にプロバイダとも)と呼ばれる接続事業者を利用することになります。その時頭に思い浮かべる「インターネットで使いたいサービス」の多くがWwW。「http://~」とアドレスを打ち込んでホームページなるものを見るあれがそうです。最近はテレビでも「続きはWebで!」とかやってますよね。
このサービスでは、Webブラウザ(ブラウザ)を使って、世界中に散在するWebサーバから文字や画像、音声などの様々な情報を得ることができます。特徴的なのはそのドキュメント形式。ハイパーテキストといわれる構造で「文書間のリンクが設定できる」「文書内に画像や音声、動画など様々なコンテンツを表示できる」などの特徴を持ちます。これによって、インターネット上のドキュメント同士がつながりを持ち、互いに補完しあうような使い方もできるようになっているのです。上のイラストにもあるように、そうした「ドキュメント間にリンクが張り巡らされて網の目状となっている構造」をクモの巣に例えたことが、Wwwというサービス名の由来です。 wwwはインターネットで標準的に使われているドキュメントンステム。
そして、もっとも利用されているサービス。散在するドキュメント同士が相互に
つながりを持つのが特徴で、そのつなから様が、グクモの巣を連想させることからWorld Wide Web
(世界た広がるクモの※)
と名付けられました Webサーバに、「くれ」と言って表示する
WWWのサービスにはWebサーバとWebブラウザ(という名のクライアント)が欠かせないわけですが、そのやり取りは、実はものすごく単純だったりします。サーバの仕事というのは、基本的に「くれ」と言われたファイルを渡すだけ。なにかデー夕を整形したり、特別な処理を加えたりとかは一切なっしんぐ。
整形したり、さらに必要なファイルがないか確認したりとWebブラウザがとにかくがんばる。サーバとwebブラウザのやり取りに使われているプロトコルがHTTP。でも、そんな単純な仕組みで出来ているからこそ、様々なファイルが扱えたり、拡張も容易だったりと、広い範囲で使える仕組みになっているのです。 http://www.gihyo.co.jp/book/index.html
プロトコル/ドメイン名/ディレクトリ名/ファイル名 Webサーバと外部プログラムを連携させる仕組みがCGI。
Webブラウザからの要求に応じて、Webサーバ側で外部プログラムを実行するために用いる仕組みに、CGI(Common Gateway Interface)があります。
CGIプログラムを示すURLが要求されると、Webサーバは外部のプログラムを実行して、その処理結果を返します。
たとえば次のように指定した場合、
これは、
http:/www.sitye.co.jp/esinkin/bbs.cgi
・・・を開くのだ」
下にある、bbs.cgiを実行せよ」と言ったことになります
Cgi-bin/ちゃんは一生懸命に処理を行って、その結果を「標準出力」という
ところに吐き出します
処理結果が届くという
寸法なのです。
これにより、HTMLだけでは表現できない、インタラクティブ(対話的)なページを作ることができます。 Ajax (Asynchronous JavaScript And XML)
Webページ内に組み込むことで、その中身を動的に書き換えることのできるスクリプト。
言語にJavaScriptがあります 。このJavascriptの非同期通信機能を用いてサーバと通信を行うことで、Webアプリケーションにおいて、よりユーザビリティの高い動的なユーザインタフェースを実現する技術、これをAjax (Asynchronous JavaScript And
XML) といいます。
Asynchronous Javascript And XML
JavaScript
非同期の通信 JavaScript と XML による
こんな感じの意味になります。
たとえば現在では当たり前に利用されている地図サイトなどは、この技術を用いることで、滑らかな地図のスクロールや拡大縮小操作を可能にしています。
地図の任意の箇所を..ドラックすると...
書き換えが必要になった箇所だけが描画される。これが非同期ではない場合だと...ページ全体のデータをすべて受信し直して描画するので、一度番面全体が真っ白になってから、全体を書き換えるという動きになってしまいます。
Ajaxは単一の特別な技術ではなく、複数の技術を組み合わせることにより実現する実装手法です。
Webブラウザでマウスドラッグというイベントが発生すると、
②ページ内のスクリプトが実行されて
③非同期通信のためのweb APIがよびだされ、
④バックグラウンドで
サーバと通信を行い、XMLや、JSONなどの形式でデータが送られてくので、 サーチエンジンとSEO(Search Engine Optimization)
WWwに広がる膨大な量のドキュメントから、利用者が自身の求める適切な情報を探し出すには、検索サイトの存在が欠かせません。
このような検索サイトにおいて、特定のキーワードで検索された場合に、自社のWebサイトが検索結果の上位に表示されるよう構成を工夫する取り組みのことをSEOと言います。
SEO (Search Engine Optimization)
日本語に興味すると
「検索エンジン最適化」という意味になります。
検索エンジンがWebサイトを評価するクセを分新し、
それに最適化させたサイト構成とすることで
自身のサイトが検素結果の上位に出てくるようにします。ちなみに、この手法を悪用して、詐欺サイトや不正なソフトウェアを仕込んだページが
検索結果の上位に表示されるよう細工する攻撃手法がSEOポイズニングです。
CGM (Consumer Generated Media)
CGMとは、直訳すると「消費者により生成されたメディア」という意味になります。
要するに、サービス利用者が投稿することによって形成されていくメディアのことです。
わかりやすいところでは、読者投稿型の料理レシピサイトなど。各種プログやBBS、SNS
などもこれに該当します。 電子メールは手紙のコンピュータネットワーク版。
メールアドレスを使ってメッセージをやり取りします。
携帯電話が普及したことで、電子メールという存在はかなり認知されるようになりました。
いちいち文書を印刷して封筒に入れてポストに投函して・としていた従来の手紙とは異なり、コンピュータ上の文書をそのままネットワークに乗せて短時間で相手へ送り届けることができる手紙(mail)。それが電子メールです。
電子メールでは、ネットワーク上のメールサーバをポスト・私書箱のように見立てて、テキストや各種ファイルをやり取りします。昔はテキスト情報しかやり取りできなかったのですが、MIME (Multipur pose Internet Mail Extensions) という規格の登場によって、横々なファイル形式が扱えるようになりました。メール本文に画像や音声など、なんらかのファイルを添付する場合に、このMIME規格が使われます。
電子メールを実際にやり取りするには、電子メールソフト(メーラー)と呼ばれるアプリケーションソフトを使用します。 手紙のやり取りに住所と名前が必要であるように、電子メールのやり取りにもメールアドレスという、住所+名前に相当するものが使われます。
これは、「インターネット上で自分の私書箱がどこにあるか」を表現したもので、次のような形式となっています。
kitami@gihyo.co.ie
ユーザ名 ドメイン名
ドメイン名
メールアドレスの、@より右側の部分は「ドメイン名」をあらわします。
インターネット上における私書箱の位置・・・つまりは郵便で言うところの住所にあたる情報です。
ユーザ名
メールアドレスの、@より左側の部分は「ユーザ名」をあらわします。
郵便で言うところの名前にあたる情報です。ひとつのドメイン内で重複する名
前を用いることはできません。 大量のデータから、「コレ」特定のデータを指定するには、確実に識別できるなんらかのキーが必要となる。行を特定したり、表と表に関係を持たせたりするためには、主キーや外部キーという、鍵となる情報が必要。主キーに該当するのが、身近なところでは社員番号や、学生番号がある。個人を識別するなら名前をそのまま使えばいいじゃなかいか、といういわれれば、同姓同名の存在が否定てきないので、主キーには使えない。あ
表の中で各行を識別するために使う列のことを、主キーと呼ぶ。要は、主キーというのは、ID番号が入った列のこと。主キーとできる条件は、表の中で内容が重複しないことと、内容が空ではないこと。 キーには、ひとつの列では一意にならないけど、複数の列を組み合わせれば一意になるぞ、という場合がある。このような、複数列を組み合わせて主キーとしたものを という。例えば、ボクは6年生だとか、3組だとか、出席番号16番だとか、ひとつひとつの列では主キーになりえないものを、複合することで、6年3組 出席番号16番、とすれば複合キーになる。複合キー
表と表とを関係付けるため、他の表の主キーを参照する列のことを、外部キーという。外部キーによって、両者が関係付けされていることで、ある表から、ある表へ参照することができる。外部キー
正規化の目的は、データに矛盾や重複を生じさせないこと。関係データベースでは、第3正規形の表を管理します。他にも正規形は複数種類あり、正規化されていない繰り返し部分を持つ表を という非正規形
非正規形の表から、繰り返し部分を取り除いたものが となります。もちろんそのままデータを捨てちゃいけません。切り離したそれぞれのデータを、独立したレコードとして挿入してやるのです。第1正規形
表の中における列と列の関係をあらわしたものが関係従属と、部分関数従属。主キーが決まれば、列の値が一意に定まる関係。例えば、社員番号が分かれば、名前、部署が決まる。学年、組、出席番号が分かれば、名前が決まる。例えば、名前は、社員番号に している、などと使う。関数従属
「受注No」がきまれば、これら3つの列が、決まり、「商品コード」が決まればこれら2つの列が決まる。
主キーの一部分に対して関数従属する項目なので、このような関係を と呼びます部分関数従属
それでは第2正規形の説明に移りましょう。第1正規形の表から、部分関数従属している列を切り出したものが第2正規形となります。第2正規形
第2正規形の表から、主キー以外の列に関数従属している列を切り出したものが となります。第3正規形
これら正規化の目的は、データの重複や矛盾の排除をし、いわゆる属性間の結合度を低下させることでら更新時の、ロック待ちを減らす。
ロック待ちのロックとは、ファイルへの書き込みや周辺機器の操作などを行う際に、他からのアクセスを一時的に禁止する方式をいう。 並行して複数のプログラムなどが動作している場合に、データや機器の状態の整合性を保つために行われる。
特定のレコードをロックすると、他のトランザクションはロックが解除されるまで待たなくてはいけません。 これをロック待ちと言います。 SQL (Structured Query Language) というのは、
DBMSへと指示を伝えるために用いる言語のことです。
SQLには、様々な命令文が用意されています。 たとえば表を定義 )したり、
レコードを挿入 したり、 削除したり、時にはレコードの一部
を更新 したりなどなど。
これらの命令は、スキーマの定義や表の作成といった定義を担当するデータ定義言語(DDL: Data Definition Language) と、 データの抽出や挿入、更新、削除といった操作を担当するデータ操作言語 (DMC Data Manipulation Language) とに大別することができます。 SQLは、この2つの言語によって構成されているというわけです。
SQLが持つ命令の中でもっとも特徴的なのが、 様々な条件を付加することで、柔軟にデータを抽出することができるSELECT文でしょう。
データというのは、 “ただ貯め込んだだけ”ではあまり意味を持ちません。(たとえば「店舗の時間帯ごとに見る顧客の年齢分布」とか「売上上位10店舗の商品
スト」とか)を行って抽出することで、はじめてデータに意味がくっついてくるわけです。これを担当するのがSELECT文。当然その重要性は大きいわけですね。 SELECT文によるデータ抽出の基本は、「どのような条件で」「どの表から)どの列を取り出すか」です。これらを指定することによって、データベースから多様なデータを取り出すことができるのです。
SELECT 列名 FROM 表名 WHERE 条件
SELECT 商品名、単価 FROM 商品表 WHERE 単価 =300 射影は、表の中から列を取り出す関係演算です。SELECT文で射影を行うには、次のように取り出したい列を指定します。
SELECT 商品名 FROM 商品表
すると商品名の列が取り出される。
SELECT * FROM〜にすると全ての列が取り出される 選択は、表の中から行を取り出す関係演算です。SELECT文で選択を行うには、WHERE句を使って、取り出したい行の条件を指定します。
SELECT * FROM 商品表 WHERE 単価<200
すると単価が200未満の行が取り出される 「200円以上500円未満の品」とかって
どう指定するんだろ?という疑問がでてきます。その時は条件を組み合わせて抽出する。
単価が40より大きいかつ200未満を指定したい時
SELECT * FROM 商品表 WHERE
の後ろに単価>40 AND 単価<200
単価が40未満または200より大きい時を指定したい時
単価<40 OR 単価>200
(単価が40未満または200より大きい)ではないを指定したい時
NOT (単価<40 OR 単価>200) 結合は、表と表とをくっつける関係演算です。SELECT文で結合を行うには、FROM句の中にくっつけたい表の名前を羅列して、WHERE句で「どの列を使ってくっつけるか」を定します。
SELECT *FROM 受注表,顧客表(くっつけたい表たち)WHERE 受注表.顧客コード=顧客表.顧客コード(使いたい列)
表名と列名の間にある「.」は所属をあらわしていて、「どの表に属する列か」を表現するために用いられます。ここでいうと受注表"の"顧客コード 抽出結果を整列させておきたい場合はORDER BY句を使います。
ORDER BY 列名 ASC(またはDESC)
データを見やすくするのに整列は欠かせないですからね!
整列に用いる列名
昇順で並べたい場合はASC(省略可)
降順の場合はDESCを指定
例えば商品表を単価順で並び替えるには、次のように指定します。
SELECT *FROM 商品表 ORDER BY 単価
昇順なのでASCは省略している。
複数の列で並び替えるには、ORDER BY句の後ろに複数の列を指定します。
SELECT 顧客コード,受注No,受注日付
FROM 受注表
ORDER BY 顧客コード,受注日付 DESC
顧客コードを昇順に並べて、受注日付を降順て並べる SQLには、データを取り出す際に集計を行う、様々な関数(集合関数と言う)が用意されています。
この集合関数を用いると、列の合計値や最大値、レコードの件数(行数)などを求めることができる。
たとえば、「扱っている商品の数を取り出したい」という場合、COUNT(*)関数(行数を求める関数)を使って次のように指定します。
SELECT COUNT(*) FROM 商品表
データをグループ化する。
グループ化というのは、特定の列を指して、その中身が一致する項目をひとまとめにして扱うことを言います。前ページの集合関数は、このグループ化と組み合わせることで、より威力を発揮するのであります。
例えば色んな部署の人が羅列されたデータがあるとして、それを部署ごとにまとめたりするのがグループ化。
グループ化には、GROUP BY句を使います。実際の例を見て、感覚を掴みましょう。
GROUP BY グループ化したい列名
グループに条件をつけて絞り込む
グループ化をした際、これに条件をつけて、取り出すグループを炊り込むことができます。「条件をつけて校り込む」というのは、たとえば次のようなことを指します。部署ごとにグループ化して、その部署の平均年齢が30歳未満のものだけ取り出す。このような絞り込みを、行うには、HAVING句を使います。 データベースを複数の人が同時に変更できてしまうと、内容に不整合が生じる恐れがあります。そうした問題からデータベースを守るのがトランザクション管理と排他制御です。 データベースでは、一連の処理をひとまとめにしたものをトランザクションと呼びます。例えば、在庫数を確認し、在庫数の更新、この一連の流れのこと。
データベースは、このトランザクション単位で更新処理を管理します。
一方、排他制御は処理中のデータをロックして、他の人が読み書きできないようにする機能です。つまりトランザクションの間、使用するデータをロックしておけば、誰かに割り込まれてデータの不整合が生じたりする恐れがなくなるわけです。ロックする方法には、2種類ある。
排他制御のロック方法のうち、各ユーザはデータを読むことができますが、書くことはできない。読むことはできるので、在庫数を調べることに内題はありません共有ロック
排他制御のロック方法のうち、他のユーザはデータを読むことも、書くこともできません。自分は読むことも書くこともできる。 ただしロック機能を使う場合には注意しないと、複数のトランザクションがお互いに相手の使いたいデータをロックしてしまい、「お互いがお互いのロック解除を永遠に待ち続ける」
という、かなりやるせない現象が起こりえます。これをデッドロックと呼びます。 データベース管理システム(DBMS)では、トランザクション処理に対して4つの特性が必須とされます。それぞれの頭文字をとって、ACID特性と呼ばれます。 ACID特性の一つ目は、トランザクションの処理結果は、「すべて実行されるか」「まったく実行されないか」のい
すれかで終了すること。中途半端に一部だけ実行されるようなことは許容しない。Atomicity(原始性)
ACID特性のうち、データベースの内容が矛盾のない状態であること。トランザクションの処理結果が、矛盾を生じさせるようなことになってはいけない。例えば、在庫数の推移と、売上のデータが一致しない等。Consistency(一貫性)
ACID特性の一つに、複数のトランザクションを同時に実行した場合と、順番に実行した場合の処理結果が一致すること。ようするに「排他処理きちんとやって相互に影響させないよーにね」ってこと。
一個で処理させた場合も、2個の場合も処理の結果ぎ変わらないようにIsolation (隔離性)
ACID特性のうち、正常に終了したトランザクションの更新結果は、障害が発生してもデータベースから消失しないこと。つまりなんらかの復旧手段が保証されてないといけない。Durability(耐久性)
一連のSQL文をひとつのプログラムにまとめて、DBMS上に保存しておくことを という。こうすることで、ちまちまとSQL文を流す必要がないのでネットワークの負荷が軽減できる、プロシージャはSQL文の解析も済ませた即実行可能な形式なので処理速度の向上が見込める。ストアドプロシージャ
データベースは障害の発生に備えて定期的にバックアップを取ることが基本です。バックアップ後の更新は、ジャーナルと呼ばれるログファイルに、更新前の状態(更新前ジャーナル)と更新後の状態(更新後ジャーナル)を逐一記録して、データベースの更新履歴を管理するようにしています。実際に障害が発生した場合は、これらのファイルを使って、ロールバックやロールフォワードなどの解害回復処理を行い、元の状態に復旧します。 前節でも述べたように、データベースは、トランザクション単位で更新処理を管理します。これはどういうことかというと、「トランザクション内の更新すべてを反映する」か、「トランザクション内の更新すべてを取り消す」かの、どちらかしかないということです。
たとえば口座間の銀行振込を見てみましょう。仮にAさんがBさんに1,000円振り込むとした場合、処理の流れは次のようになります。Aさんの口座残高を確認。そしてAさんの残高を1000円減らす。そしてBさんの口座残高を確認。そしてBさんの残高を1000円増やす。この一連の流れがトランザクション。この中で、たとえばどこかの処理がすっこけちゃって、「Aさんの口座は減額されてるのに、
Bさんの口座はお金が増えてない」なんてことになると困りますよね。場合によっては「訴えてやる!」なんて言われて、大変なことになりかねません。そのため、データベースに更新内容を反映させるのは、「すべての処理が問題なく完了しました」というタイミングじゃないといかんわけです。
トランザクションは、一連の処理が問題なく完了できた時、最後にその更新を確定することで、データベースへと更新内容を反映させます。これをコミットと呼びます。一方、トランザクション処理中になんらかの障害が発生して更新に失敗した場合、そこまでに行った処理というのは、すべてなかったことにしないといけません。そうじゃないとデータに不整合が生じてしまうからです。そこでこのような場合には、データベース更新前の状態を更新前ジャーナルから取得して、データベースをトランザクション開始直前の状態にまでします。この処理をロールバックと呼びます。
例)更新前ジャーナルを使ってロールバック処理を行いデータベースの内容を巻き戻します。 一つのデータベースとして扱えるようになってるんだけど、実は各サイトのデータベースと連携して動いているシステムを分散データベースシステムと呼ぶ。
ます全サイトに対して「コミットできる?」という問いあわせを行い、その結果を見てコミット、もしくはロールバックを行います。この方式を2相コミットと呼びます。 トランザクション処理中ではなく、ディスク障害などで突然データベースが故障したとき、バックアップファイルと更新後ジャーナルを使って、データベースを障害発生直前の状態にまで復旧させる。これをロールフォワードと呼ぶ 事業所やオフィスの中など、比較的狭い範用のネットワークをLAN(local area network)と呼びます。
そして、地理的に離れているLANとLANとをつないだネットワークをWAN(wide area network)と呼びます。 コンピュータがデータをやり取りするためには、もっともシンプルな形は、互いを直接1本の回線で結んでしまうこと。これを専用回線方式と言います。
しかしこれでは1対1の通信しか行えません。そこで、交換機(にあたるもの)が回線の選択を行って、必要に応じた通信路が確立される方式を交換方式と言います。交換方式には、大きく分けて2種類があります。 交換方式のネットーワークの一つは、
送信元から送信先にまで至る経路を交換機がつなぎ、通信路として固定。
通信路に選ばれた回線は、占有されるので、他の端末がその回線を使うことはできない。アナログ電話がこのタイプで、通話料というのは回線の占有時間に対して課金されてるわけですね。この方式を という回線交換方式
パケット(小包の意)という単位に分割された通信データを、交換機が適切な回線へと送り出すことで通信路を形成します。具体的には、送信データをバラバラに分割して、パケットにする。パケットには宛先情報がくっついてとり、それを回線に送り出す。交換機はパケットの仕分け係を務め、パケットを受け取ると宛先から適切な回線に送り出す。こうすることで、回線が使用中になるのはポケットという小さなデータが送られる短時間だけになり、かつパケットを交換機は蓄積しておくので、複数の端末で回線を共有して使うことができる。WANの構築で拠点間を接続する場合などを除いて、現在のコンピュータネットワークで用いられるのは基本的にすべてこの です。パケット交換方式
WANの構築では電気通信事業者の提供する通合サービスを用いて拠点をつなぐことになります。そこで用いられる通信方式として代表的なものが、専用線、フレームリレー方式、ATM交換方式(セルフリレー方式)、広域イーサネットがある。 拠点間を専用回線で結ぶサービス。回線速度と距離によって費用が決まる。セキュリティは高いが、非常に高額な通信方式は?専用線
パケット交換方式をもとに、伝送中の誤り制徴を簡路化して高速化を図ったもの。データ転送の単位は可変長のフレームを用いる。フレームリレー方式
パケット交換方式をもとに、デー夕転送の単位を可変長ではなく固定長のセル(53バイト)とすることで高速化を図ったもの。パケット交換方式と比べて、伝送遅延は小さい。ATM交換方式(セルフリレー方式)
LANで一般的に使われているイーサネット技術を用いて拠点間を接続するもの。高速で、しかも一般的に使用している機器をそのまま使えるためコスト面でのメリットも大きい。WAN構築における近年の主流サービス。広域イーサネット
LANを構築する時に、各コンピュータをどのようにつなぐか。その接続形態のことをトポロジーと呼びます。代表的なトポロジーは3つある。 トポロジーで、ハブを中心として、放射状に各コンピュータを接続する形態です。イーサネットの10BAS-Tや100BASE-TXや1000BASE-Tという規格などで使われています。
規格名称10BASE-T
100BASE-TX
1000BASE-T
伝送速度10Mbps
100Mbps
1G (1000M) bps
伝送距離最大100m
最大100m
*100m
伝送媒体ツイストペアケーブル
ツイストペアケーブル
ツイストペアケーブル
インターネットの有線LANと似たケーブルスター型
トポロジーで、1本の基幹となるケーブルに、各コンピュータを接続する形態です。イーサネットの10BASE-5や
10BASE-2という規格などで使われています。
規格名称 10BASE5
伝送速度 10Mbps
伝送距離 最大500m
伝送媒体 同軸ケーブル(Thick coax)
太さ10mmのケーブル
規格名称 10BASE2
伝送速度 10Mbps
伝送距離 最大185m
伝送媒体 同軸ケーブル(Thin coax)
太さ5mmjケーブルバス型
トポロジーで、リング状に各コンピュータを接続する形態です。
トークンリングという規格などで使われています。
リング型LANの代表格であるトークンリングでは、アクセス制御方式にトークンバッシング方式を用います。平常時は、トークンだけがネットワーク上をぐるぐると流れています。データを送信した
い時は、このトークンにデータをくっつけて次へ流します。「自分宛てじゃないなぁ」という場合はそのまま次へ流し、「あ、自分宛てだ」という場合はデータを受け取ってから、「受信しましたよ」というマークをつけて再度ネットワークに流します。マークが付加されたトークンが送信元に到着すると、送信元はトークンをフリートークンに戻してからネットワークに放流します。これでネットワークは平常時の状態へと戻ります。リング型
現在のLANはイーサネットがスタンダード。
LANの規格として、現在もっとも普及しているのがイーサネット(Ethernet)です。IEEE(米国電気電子技術者協会)によって標準化されており、接続形態や伝送速度ごとに、次のような規格に分かれています。伝送速度に使われているbps (bits per second) という単位は、1秒間に送ることのできるデータ量(ビット数)をあらわしています。
イーサネットは、アクセス制御方式としてCSMA/CD (Carrier Sense Multiple
Access/Collision Detection)方式を採用しています。
CSMA/CD方式では、ネットワーク上の通信状況を監視して、他に送信を行っている者がいないことを確認してデータの送信を開始します。
それでも同時に送信してしまい、通信パケットの衝突(コリジョン)が発生した場合は、各々ランダムに決めた時間待機してから、再度送信を行います。
このような通信を行うことで、一本のケーブルを複数のコンピュータで共有することができる。 無線LANの通信方法には、アクセスポイントを介して通信を行うインフラストラクチャ通信モードと、アクセスポイントを介さず、機器同士で直接通信を行う、アドホック通信モードがある。便利である反面、電波を盗聴されてしまう恐れもあるため、通信を暗号化するなどセキュリティ対策が必要。
そこで、下記のような暗号化規格を用いて、アクセスポイントと接続することになる。
WEP
WiFiの暗号化規格として、最初に採用された方式。数分で暗号化が解かれてしまう脆弱性があるため、利用は非推奨となっている。
WPA
WEPのセキュリティ面を向上させた規格。だが、脆弱性がなくなったわけではないため、利用は推奨されていない。
WPA2
WPAを改良した規格で、現在の主流である規格。AES方式を使うことで、より安全性を高められる。
WPA3
WPA2で発見された脆弱性を解消した規格。個人用と企業用の2種類がある 無線LANは固有の名前を持つ。これをS S I D(もしくはE S S I D)という。
同一S S I Dの中は同一グループとみなし、互いに通信できる。アクセスポイントを置く、インフラストラクチャ通信モードではアクセスポイントにS S I Dを設定する。機器同士が直接通信を行う、アドホック通信モードでは、すべての機器に同じS S I Dを設定する。
このS S I Dを隠して使うS S I Dステルスという機能があります。S S I Dを隠ぺいすることで、不正利用されるリスクを減少できるとされています。
他にもゲストS S I Dという機能によって、インターネットへの接続のみを開放する使い方もあります。この場合利用者は、他の端末へはアクセスできないため、安全性を保つことができます。 ネットワークにより、複数のコンピュータが組み合わさって働く処理の形態にはいくつか種類がある。
ホストコンピュータが集中的に処理をして、他のコンピュータはそれにぶら下がる構成の処理形態。
長所としては、一台に集中しているため、データの一貫性を維持管理しやすい。そのためセキュリティの確保や運用管理が容易。
短所は、システムの拡張が大変、壊れると全体が止まる
しかし、最近ではホストコンピュータをそれぞれのパソコン内で、いわゆる仮想環境で扱えるようになってきており、短所がなくなりつつある集中処理
複数のコンピュータに負荷を分散させて、それぞれで処理を行うようにした構成の処理形態。
長所は、システムの拡張が容易。
一部のコンピュータが壊れても全体には影響しない。
短所は、データの一貫性を維持管理しづらい、セキュリティの確保や運用管理が大変分散処理
昔は集中処理が主流でしたが、近年ではコンピュータの性能が上がってきたことにより、分散処理ではあるが、集中処理の良い所も、取り込んだようなシステム形態、クライアントサーバシステムが登場した。
集中的に管理した方が良い資源(プリンタやハードディスク領域など)やサービス(メールやデータベースなど)を提供するサーバと、必要に応じてリクエストを投げるクライアントという、2種類のコンピュータで処理を行う構成で、現在の主流となっています。
クライアントは通常の処理は自前で行い、サーバの管理下にある資源やサービスを利用したい時に、リクエストを投げる。サーバがクライアントとして他のサーバに要求を出すこともあるし、1台のサーバマシンに複数のサーバ機能を兼任させることもある。 ネットワークを通じてコンピュータ同士がやり取りするための約束事。これをプロトコルといいます。
プロトコルには様々な種類があり、「どんなケーブルを使って」「どんなデータ形式で」といったことが、事細かに決まっています。それらを7階層に分けてみたのがO S I基本参照モデル。
第1層 物理層
物理的にどう繋ぐか
第2層 データリンク層
同一ネットワーク内でどう通信するか
第3層 ネットワーク層
ネットワークとネットワークをどう中継するか
第4層 トランスポート爽
通信の信頼性をどう確保するか
第5層 セッション層
通信の始終をどう管理するか
第6層 プレゼンテーション層
データはどんな形式にするか
第7層 アプリケーション層
具体的にどんなサービスを提供するのか
このように階層分けする理由は、プロトコル改変する際に便利だから 現在は、インターネットの世界で標準とされていることから、TCP/IPというプロトコルが広く利用されている。
TCP/IPというプロトコルを使うネットワークでは、通信データをパケットに分割して通信路へ流します。なんでわざわざ分割して流すのかというと、通信路上を流せるデータ量は有限だから。たとえば100BASE-TXのネットワークだと、1秒間に流せるのは100Mbitまでと決まってます。仮にデータを細切れにせず、そのままの形でドカンと流したとすると・。
5ooMBは500x 8 = 4000Mbitなのでこれを流し終わるまでの40秒間(4000M÷100M)は誰もネットワークを利用できなくなってしまう。
また、通信エラーが起きても、エラーになったパケットだけを再送すればよいので、帯域を浪費することがない LANの装置とO S I基本参照モデルの関係
第1層の物理層に位置している。
LANケーブル
NIC
リピータ
電気的な信号を送ったり、受け取ったり、増幅したりする。
第2層 データリンク層に位置する。
ブリッジ
パケットのMACアドレス情報を使って、ネットワーク内のセグメント間を中継します。
第3層 ネットワーク層に位置する装置
ルータ
パケットのIPアドレス情報を使って、ネットワーク間を中継します。
第4層以降
ゲートウェイ
プロトコル変換を行うことで、トランスポート(第4層)以上か異なるネットワーク同士を中継します。
ちなみに、なんでネットワークの速度はバイトじゃなくてビットであらわすのかというと、実際の通信路を構成するNICやLANケーブルが属する物理層では、単に「1か0か(オンかオフカ)」という電気信号を扱うだけだから。
電気信号以外のことなんか知ったこっちゃないので、「どれだけのオンオフを1秒間に流せるか」という表記の方が向いている・・・というわけですね。 コンピュータをネットワークに接続するための拡張カードが、NIC(LANボード)。
NICの役割は、データを電気信号に変換してケーブル上に流すこと。そして受け取ること。要するに、コンピュータがネットワークでやり取りしようと思ったら、欠かすことのできない部品がNICというわけ。 NICをはじめとするネットワーク機器には、製造段階でMACアドレスという番号が割り振られています。これはIEEE(米国電気電子技術者協会)によって管理される製造メーカ番号と、自社製品に割り振る製造番号との組み合わせで出来ており、世界中で重複しない一意の番号であることが保証されています。
イーサネットでは、このMACアドレスを使って各機器を機別します。
MACアドレス 00:00:F8:02:14:B3
先頭24ビットが製造メーカ番号
00:00:F8
後ろ24ビットが製造番号をあらわす リピータは物理層(第1層)の中継機能を提供する装置です。ケーブルを流れる電気信号を増幅して、LANの総延長距離を伸ばします。LANの規格では、10BASE5や10BASETなどの方式ごとに、ケーブルの総延長距離が定められています。それ以上の距離で通信しようとすると、信号が歪んでしまってまともに通信できません。リピータを間にはさむと、この信号を整形して再送出してくれるので、信号の歪みを解消することができます。
ただし、パケットの中身を解さす、ただ電気信号を増幅するだけなので、不要なパケットも中継してしまうあたりが少々難なところです。 ちなみに、ネットワークに流したパケットは、宛先が誰かに依らずとにかく全員に渡されるわけですが、
この、「無条件にデータが流される範囲(論理的に1本のケーブルでつながっている範囲)」をセグメントと呼びます。
ひとつのセグメント内に大量のコンピュータがつながれていると、パケットの衝突(コリジョン)が多発するようになって、回線の利用効率が下がります。 ブリッジはデータリンク層(第2層)の中継機能を提供する装置です。
セグメント間の中継役として、流れてきたパケットのMACアドレス情報を確認、必要であれば他方のセグメントへとパケットを流します。
ブリッジは、流れてきたパケットを監視することで、最初に「それぞれのセグメントに属するMACアドレスの一覧」を記憶してしまいます。
以降はその一覧に従って、セグメント間を構渡しする必要のあるパケットだけ中継を行います。中継パケットはCSMA/CD方式に従って送出するため、コリジョンの発生が抑制されて、ネットワークの利用効率向上に役立ちます。 ハブは、LANケーブルの接続口(ポート)を複数持つ集線装置です。
ハブには内部的にリピータを複数束ねたものであるリピータハブと、ブリッジを複数束ねたものであるスイッチングハブの2種類があります。それぞれ次のように動作します。
リピータハブ
無条件に全てのポートへパケットを流す
スイッチングハブ
宛先MACアドレスに該当するコンピュータが繋がっているポートにだけ流す。 ルータはネットワーク(第3層)の中継機能を提供する装置です。
異なるネットワーク(LAN) 同士の中継役として、流れてきたパケットのIPアドレス情報を確認した後に、最適な経路へとバケットを転送します。
ブリッジが行う転送は、あくまでもMACアドレスが確認できる範囲でのみ有効なので、外のネットワーク宛のパケットを中継することはできません。
そこでルータの出番。ルータはパケットに書かれた宛先IPアドレスを確認します。IPアドレスというのは、「どのネットワークに属する何番のコンピュータか」という内容を示す情報なので、これと自身が持つ経路表(ルーティングテーブル)とを付き合わせて、最適な転送先を選びます。このことを経路選択(ルーティング)と呼びます。といっても、いつも隣接しているネットワーク宛とばかりは限りません。特にインターネットのように、接続されているネットワークが膨大な数となる場合には、直接相手のネットワークに転送するのはまず不可能です。
そのような場合は、「アッチなら知ってんじゃね?」というルータに放り投げる。
そこもわかんなきゃ、さらに次へ、さらに次へと、ルータ同士がさながらバケツリレーのようにパケットの転送を繰り返して行くことで、いつかは目的地のネットワークへと辿り着く
・・と、そういう仕組みになっているのです。 ゲートウェイはトランスポート層(第4層)以上が異なるネットワーク間で、プロトコル変換による中継機能を提供する装置です。
ネットワーク双方で使っているプロトコルの差異をこの装置が変換、吸収することで、お互いの接続を可能とします。
たとえば、携帯メールとインターネットの電子メールが互いにやり取りできるのも、間にメールゲートウェイという変換器が入ってくれているおかげ。
ゲートウェイは、専用の装置だけではなく、その役割を持たせたネットワーク内のコンピュータなども該当します。
LANと外部ネットワークとの出入り口になるルータをゲートウェイという場合もあります ネットワーク機器というのは、通常だとそれぞれが制御機能を持ち、自身の学習した情報を元にして、パケットの転送処理を行います。当然ネットワーク管理者は、設定変更を行う際には、個々の機器に対して個別に作業しなくてはなりません。
この制御機能をソフトウェア化して分離させることにより、柔軟なネットワーク構成を可能とする技術の総称をSDN (Software-Defined Network)と言います。このSDNを実現する技術の1つにOpenFlowがあります。
従来のネットワーク機器とは異なり、経路制御の機能部分とデータ転送の機能部分を分離させることによって、管理者が経路制御を柔軟に設計・実装して必要な機能を実現できるようにしています。 データの誤りとは、ビットの内容が「0→1」「1→0」と、ノイズやひずみによって、異なる値に化けてしまうことです。
コンピュータがデータを細切れにして送ることができるのは、そのデータが区切りのあるデジタルなデータだから・・でしたよね。そしてそのデータは、突き詰めていくと結局は0か1かの、ビットの集まりなのでありました。
でもケーブルの上を「0なら0」「1なら1」というはっきりしたデータが流れるわけじゃありません。ケーブルの上を流れるのは、あくまでも単なる電気的な信号のみ。この信号の波形を、「この範囲の波形は0」「この範囲の波形は1」と値に置き換えることで、ビットの内容をやり取りしているわけです。
さて、「電気的な信号」なのですから、伝送距離が伸びれば信号は減衰していきますし、横から別の電気的な干渉を加えてやれば、当然波形は乱れます。波形が乱れれば、0か1かの判断も狂うというのは容易に想像できる話です。
こうして生まれるのがデータの誤りです。
データの誤りを、100%確実に防ぐ手段はありません。そこで、パリティチェックやCRC(巡回冗長検査)などの手法を用いて、誤りを検出したり訂正したりするのです。 パリティチェックでは、送信するビット列に対して、パリティビットと呼ばれる検査用のビットを付加することで、データの誤りを検出します。
パリティビットを付加する方法には2種類あって、偶数パリティと、奇数パリティがある。偶数パリティだと、ビット列が1000001のとき、ビット列の1の個数が偶数になるように先頭にパリティビットをセットする。この場合、01000001となり、パリティビットは0。
奇数パリティの場合1000001の中の1は2個あり偶数個なので一つ増やして奇数個にする。よって11000001となり、奇数パリティは1。ただしパリティチェックで可能なのは、「1ビットの誤り」を検出することだけ。偶数個のビット誤りは検出できませんし、「どのビットが誤りか」ということもわかりません。したがってこの方式では、誤り訂正も行えません。 パリティビットは、「どの方向に付加するか」によって垂直パリティと水平パリティに分かれます。水平パリティと垂直パリティを組み合わせて使うのが、水平垂直パリティです。縦横両面から誤りを検出できるので、1ビットの誤りであれば位置を、特定、でき、誤り訂正が行えます。ただし、2ビット以上の誤りになると位置の特定ができなくなるので、その場合誤り訂正はできません。検出はできる。 CRC(巡回冗長検査)
CRC (Cyclic Redundancy Check)は、ビット列を特定の式(生成多項式と呼ばれる)で割り、その余りをチェック用のデータとして付加する方法です。送信側は、計算で得られた余りを、元々のビット列にくっつけて送信データとします。実はこうすることで、そのデータは、計算に用いた生成多項式で「割り切れるはずの数」に変わります。したがってデータを受信した側は、送信側と同一の生成多項式を使って、受信データを割り算します。当然データに問題がなければ割り切れるはすです。この方式では、データの誤り訂正は行えませんが、連続したビットの誤り(バースト誤りという)など、複数ビットの誤りを検出することができます。 TCPとIPという2つのプロトコルの組み合わせが、インターネットにおけるデファクトスタンダードです。
デファクトスタンダードとは、「事実上の標準」という意味。特に標準として定めたわけではないのだけど、みんなしてそれを使うもんだから標準みたいな扱いになっちゃった…という規格などを指す言葉です。TCP/IPもそのひとつ、というわけですね。
で、その中身ですが、まずIP。これは、「複数のネットワークをつないで、その上をパケットが流れる仕組み」といったことを規定しています。いわばネットワークの土台みたいなものです。前節で取り上げたルータが、IPアドレスをもとにバケットを中継したりできるのもコイツのおかげだったりします。
一方のTCPは、そのネットワーク上で「正しくデータが送られたことを保証する仕組み」を定めたもの。
両者が組み合わさることで、「複数のネットワークを渡り歩きながら、パケットを正しく相手に送り届けることができるのですよ」という仕組みになるわけですね。
こうしたインターネットの技術を、そのまま企業内LANなどに転用したネットワークのことをイントラネットと呼びます。 TCP/IPネットワークを構成する上で、中核となるプロトコルが3つある。第4層のトランスポート層のTCP と、UDPが、送信データの信頼性をどのように保証するか、第3層のネットワーク層のIPが、ネットワークをいかにしてつなぎ、経路制御を行うか。ネットワーク層のIPが網としての経路機能を担当し、その上のTCPやUDPが「ではその経絡で小包(パケット)をどのように運ぶのか」という約束事を担当しています。
コネクションレス型の通信(事前に送信相手と接続確認を取ることなく一方的にパケットを送りつける)であるため、通信品質の保証についてはTCPやUDPなどの上位層に任せます。 TCPは、通信相手とのコネクションを確立してから、データを送受信するコネクション型の通信プロトコルです。バケットの順序や送信エラー時の再送などを制御して、送受信するデータの信頼性を保証します。
送信エラー時の再送で、もし、しばらく待っても何も返答がない場合は、念のため同じのを送っとこうとすることで、パケットの欠損を防止します。受信確認をいちいち待ってから次を送るのも時間のムダなので、とりあえず連続して送っとくことで効率アップを図ったりします。確認なしで送信できる最大サイズをウインドウサイズと言います。 UDPは、事前に送信相手と接続確認を取ったりせず、一方的にバケットを送りつけるコネクションレス型の通信プロトコルです。パケットの再送制御などを一切行わないため信頼性に欠けますが、その分高速です。データの信頼性よりもリアルタイム性を重視する用途に適している。身近なとこでは映像配信サービスなんかがそう。多少のコマ落ちは許容しちゃう TCP/IPのネットワークにつながれているコンピュータやネットワーク機器は、IPアドレスという番号で管理されている。IPアドレスは32ビットの数値を、8ビットずつに区切って、それぞれを10進数で表して、それらを.でつないでいる。
11000000101010000000000100000011
11000000 10101000 00000001 00000011
192.168.1.3 IPアドレスには、グローバルIPアドレス(またはグローバルアドレス)とプライベートIPアドレス(またはプライベートアドレス)という、2つの種類があります。
グローバルIPアドレスは、インターネットの世界で使用するIPアドレスです。世界中で一意であることが保証されないといけないので、地域ごとのNIC (Network InformationCenter)と呼ばれる民間の非営利機関によって管理されています。
プライベートIPアドレスは、企業内などLANの中で使えるIPアドレスです。LAN内で重複がなければ、システム管理者が自由に割り当てて使うことができます。グローバルIPアドレスとプライベートIPアドレスの関係は、電話の外線番号と内線番号の関係によく似ています。 ●IPアドレスは「ネットワーク部」と「ホスト部」で出来ている
「IPアドレスはコンピュータの住所みたいなもの」と書きました。
私たちが普段用いている宛名表記をコンピュータ用にしたもの、という意味で書いたわけですが、実際、IPアドレスの内容というのは、それとよく似ているのです。IPアドレスの内容は、ネットワークごとに分かれるネットワークアドレス部(どのネットワークかを示す)と、そのネットワーク内でコンピュータを識別するためのホストアドレス部(どのコンピュータかを示す)とに分かれています。つまり、宛名表記が、「住所と名前」で構成されているのと同じことです。
ネットワークアドレス部
110000001010100000000001
00000011
ホストアドレス部
10進数表記で192.168.1.3
つまりは
1番ホスト 192.168.1.1
2番ホスト 192.168.1.2
3番ホスト 192.168.1.3
冒頭の例で言えば
「ちば県ちば市緑の丘1-1」のドングリ家がネットワークアドレス部
その家の中に一部、二部、三部と兄弟(ホスト)がいるイメージです IPアドレスは、使用するネットワークの規模によってクラスA、クラスB、クラスCと3つのクラスに分かれています(実際にはもっとあるけど一般的でない)。
それぞれ「32ビット中の何ビットをネットワークアドレス部に割り振るか」が規定されているので、それによって持つことのできるホスト数が違ってきます。
クラスA 大規模ネットワーク用
先頭ビットは0と決まっている
ネットワーク部8ビット
ホストアドレス部24ビット 割り当て可能なホスト数:16,777,214台
クラスB 中規模ネットワーク用
先頭2ビットは10と決まっていまる
ネットワークアドレス部16ビット
ホストアドレス部16ビット 割り当て可能なホスト数:65,534台
クラスC 小規模ネットワーク用
先頭3ビットは110と決まっている
ネットワークアドレス部24ビット
ホストアドレス部8ビット 割り当て可能なホスト数:254台
ホストアドレス部が「すべて0」「すべて1」となるアドレスは、それぞれ「ネットワークアドレス(すべて0)」「ブロードキャストアドレス(すべて1)」という意味で予約されているため割り当てには使えません。上図の「割り当で可能なホスト数が、そのビット数で本来あらわせるはずの数から-2した数値になっているのはそのためです。
同一ネットワーク内のすべてのホストに対して、一斉に同じデータを送信することをブロードキャストと言います。
ブロードキャストを行うには、宛先として「ホストアドレス部がすべて1となるIPアドレス」を指定します。このアドレスがつまりは「全員宛て」という意味を持つわけです。
ブロードキャストは「ネットワーク内の全員」宛てなので、OSI階層モデル第3層(ネットワーク層)のルータを越えてパケットが流れることはありません。インターネットに流出する前にルータがいるから。ブロードキャストの逆の言葉として、特定の1台のみに送信することをユニキャストと言います。また、複数ではあるけれども不特定多数ではなく決められた範囲内の複数ホストに送信する場合はマルチキャストと言います。 一番小規模向けのクラスCでも254台のホストを扱えるわけですが、「そんなにホスト数はいらないから、事業部ごとにネットワークを分けたい!」とかいう場合、サブネットマスクを用いてネットワークを分割することができます。
一つのネットワークに大量のホストがいると、通信トラフィックが多くなり、通信効率が下がるため、ネットワークを分割するということ。なのでネットワーク内の全ホスト宛に送信するブロードキャストは最悪。
サブネットマスクは、ビット列のネットワークアドレス部が全て1で、ホストアドレス部が全て0によって、IPアドレスのネットワーク部とホストアドレス部を再定義することができる。
たとえばクラスCのIPアドレスで、次のようにサブネットマスクを指定した場合、62台すつの割り当てが行える4つのサブネットに分割することができます。
IPアドレスとサブネットマスクはセットなので、別々ではなくまとめて記述したい時がままあります。ルータの設定画面とかだと、ちょくちょくあります。
そんな時は、IPアドレスの後に「/サブネットマスク」と、まとめて書くことができます。
IPアドレス サブネットマスク
192.168.1.3 / 255.255.255.0
しかし、これだとちょっと長いので、実際にそんな入力をしていることはまず見かけません。だいたい、次のように省略して記載します。
192.168.1.3/24
IPアドレス サブネットマスクのネットワークアドレス部の長さ(ビット数)
この/24の部分をアドレスプレフィックスといいます。
もともとこれは、CIDR (サイダーと読む)(Classless Inter-Domain Routing)と呼ばれる方式の表記法から来ています。わかりやすくて便利なので、サブネットマスクの書き方としても一般化したわけです。
サブネットではネットワークアドレス部の拡張しかできませんが、CIDRの場合は縮小もできるため、ネットワークを分割するだけではなく、逆に割り当てられるホストのアドレス数を増やして複数のネットワークを集約するなど、より柔軟な構成が可能です。ちなみにこの
CIDR表記は、次に出てくるIPv6でも、同様に使えます。 現在広く用いられているIPはVersion 4のもので、IPv4とも呼ばれています。このプロトコルでは32ビットの数値によってIPアドレスを割り当てるため、表現できる個数は約43億個。
決して少なくはない数ですが、全世界のインターネット接続人口を考えた場合、十分な数とは言えません。
そこで、IPv4の後継規格として置き換えが進められているのがIPV6です。IPv6ではIPアドレスを128ビットの数値によって表現します。そのため、約340個(潤は10^36をあらわす)
という、1兆の1兆倍よりも大きい、実質無限と言ってよい個数のIPアドレスを割り当てることができます。 IPアドレスとMACアドレスの役割の違い
複数の端末がハブに接続されている、単一のネットワーク内では、イーサネット規格によって構成されています。イーサネットはOSI参照モデルの第一層(物理層)と第2層(データリンク層)をサポートするもので、端末(端末の持つNIC)はそれぞれ固有のMACアドレスを持ち、これによって識別されます。しかし、これではネットワークを跨いでの通信ができません。そこで働くのがOSI参照モデル第3層(ネットワーク層)のIPです。この層では、IPアドレスを用いて端末を識別し、ネットワーク間を中継できるようにします。ネットワークを超えた相手にパケットを送りたい場合、送り元には自分のIPアドレス、宛先には相手のIPアドレスを記載してパケットにくっつけます。これは第3層にIPを用いた時のお約束。それを誰に投げるのかと言うと、実際の配送は第2層以下のイーサネットが担当するのです。そこで送信元には自分のMACアドレス、宛先は…実は「LAN1のルータ」のMACアドレスを記載することになるんですね。そして、イーサネットフレームとしてパケットを流すわけ。受けとったルータは、宛先IPアドレスを見て「あ、外側に中継するのね」と理解します。
そうしたら今度は、送信元MACアドレスを自分にして、宛先MACアドレスは中継先のMACアドレスに書き換えて、またまたイーサネットフレームとして流します。
配送はイーサネット。そこで近距離をバケツリレーしてつなぐために使われるのはMACアドレス。中継はIP。そのために使われるのはIPアドレス。
この役割分担と、パケットが運ばれていくイメージを掴んでおきましょう。 LANにつなぐコンピュータの台数が増えてくると、1台ずつに重複しないIPアドレスを割り当てることが思いのほか困難となってきます。DHCP (Dynamic Host Configuration Protocol) というプロトコルを利用すると、こうしたIPアドレスの割り当てなどといった、ネットワークの設定作業を自動化することができます。管理の手間は省けますし、人為的な設定ミスも防ぐことができてバンバンザイ。プロバイダなどのインターネット接続サービスを利用する場合にも、最初にDHCPを使ってインターネット上でのネットワーク設定を取得する手順が一般的です。 LANの中ではプライベートIPアドレスを使っているのが一般的ですが、外のネットワークとやり取りするためにはグローバルIPアドレスが必要です。なので、ルータはLAN側とWAN側の2つのIPアドレスをもっていたりします。では、プライベートIPアドレスしか持たない各コンピュータは、どうやって外のコンピュー夕とやり取りするのでしょうか。それにはNATやIPマスカレード (NAPTともいいます)といったアドレス変換技術を用います。これらは、ルータなどによく実装されています。
NATは、グローバルIPアドレスとプライベートIPアドレスとを1対1で結びつけて、相互に変換を行います。同時にインターネット接続できるのは、グローバルIPアドレスの個数分だけです。
IPマスカレードは、グローバルIPアドレスに複数のプライベートIPアドレスを結びつけて、1対複数の変換を行います。IPアドレスの変換時にポート番号もあわせて書き換えるようにすることで、1つのグローバルIPアドレスでも複数のコンピュータが同時にインターネット接続をすることができます。具体的には、ルータは、送信元IPアドレスを自分の管理するグローバルIPアドレスに書き換えると同時にポート番号も書き換えて、それと各コンピュータとの対応表を覚えておきます。返信されてきたパケットは、着信したポート番号により元々のIPアドレスを割り出して、その値に書き戻してからLAN側へ流します 10進数で表記されたIPアドレスは、2進数で表記されているのよりかはマシですが、それでも人間にとって「覚えやすい」とは言いづらいものがあります。数字の羅列って、丸暗記しないといけないから大変なんですよね。そこで、覚えづらいIPアドレスに対して、文字で別名をつけたものがドメイン名です。た
とえば「技術評論社のネットワークに所属するwwwという名前のコンピュータ」を表現する場合は、次のように書きあらわします。
www.gihyo.co.ip
コンピュータ名.組織名.組織種類.国名
このドメイン名とIPアドレスとを関連づけして管理しているのがDNS (Domain NameSystem) です。DNSサーバに対して「www.gihyo.co.jpのIPアドレスは何?」とか、「IPアドレスが219.101.198.19のドメイン名って何?」とか問い合わせると、それぞれに対応するIPアドレスやドメイン名が返ってきます。
ドメイン名とは、人間にも分かりやすく別名を付けたもの ネットワーク上のサービスは、そのプロトコルを処理するサーバによって提供されています。代表的なプロトコルには次のものがあります。こうした主だったプロトコルにはあらかじめポート番号が予約されており、これをウェルノウンポートと言います。
HTTP Webページの転送に利用するプロトコル。Webブラウザを使ってHTMLで記述された文書を受信する時などに使います。TCP
FTP ファイル転送サービスに利用するプロトコル。インターネット上のサーバにファイルをアップロードしたり、サーバからファイルをダウンロードしたりするのに使います。TCP 転送用20 制御用21
Telnet 他のコンピュータにログインして、適格操作を行う際に使うプロトコル。TCP
SMTP
(Simple Mail
Transfer Protocol)
電子メールの配送部分を担当するプロトコル。メール送信時や、メールサーバ間での送受信時に使います。TCP
POP 電子メールの受信部分を担当するプロトコル。メールサーバ上にあるメールボックスから、愛信したメールを取り出すために使います。TCP
NTP コンピュータの時刻合わせを行うプロトコル。UDP
ネットワーク上で動くサービスたちは、個々に「それ専用のサーバマシンを用意しなきゃいけない」というわけではありません。サーバというのは、「プロトコルを処理してサービスを提供するためのプログラム」が動くことでサーバになっているわけですから、ひとつのコンピュータが、様々なサーバを兼任することは当たり前にあるわけです。でもIPアドレスだと、パケットの宛先となるコンピュータは識別できても、それが「どのサーバブログラムに宛てたものか」までは特定できません。そこで、プログラムの側では0〜65.535までの範囲で自分専用の接続口を設けて待つようになっています。この接続口を示す番号のことを、ポート番号と呼ぶ。IPアドレスとポート番号は
実は常に1セット
IPアドレスでコンピュータを指し、ポート番号で通信相手となるサービス(アプリケーション)を指定するわけです TCP/IPをはじめとするプロトコル群や、続々と登場する各種サービスなど、こうしたインターネットで利用される技術の標準化を推進する任意団体IETF(Internet Engineering Task Force)です。
JETFにおいて取りまとめた技術仕様は、RFC (Request For Comments)という名前で文書化され、インターネット上で公開されています。 インターネットとWWWが同義語として使われるケースがあるほど、今や定着しているサービスです。自宅からインターネットに接続する場合、ほとんどの人がインターネットプロバイダ(ISP、単にプロバイダとも)と呼ばれる接続事業者を利用することになります。その時頭に思い浮かべる「インターネットで使いたいサービス」の多くがWwW。「http://~」とアドレスを打ち込んでホームページなるものを見るあれがそうです。最近はテレビでも「続きはWebで!」とかやってますよね。
このサービスでは、Webブラウザ(ブラウザ)を使って、世界中に散在するWebサーバから文字や画像、音声などの様々な情報を得ることができます。特徴的なのはそのドキュメント形式。ハイパーテキストといわれる構造で「文書間のリンクが設定できる」「文書内に画像や音声、動画など様々なコンテンツを表示できる」などの特徴を持ちます。これによって、インターネット上のドキュメント同士がつながりを持ち、互いに補完しあうような使い方もできるようになっているのです。上のイラストにもあるように、そうした「ドキュメント間にリンクが張り巡らされて網の目状となっている構造」をクモの巣に例えたことが、Wwwというサービス名の由来です。 wwwはインターネットで標準的に使われているドキュメントンステム。
そして、もっとも利用されているサービス。散在するドキュメント同士が相互に
つながりを持つのが特徴で、そのつなから様が、グクモの巣を連想させることからWorld Wide Web
(世界た広がるクモの※)
と名付けられました Webサーバに、「くれ」と言って表示する
WWWのサービスにはWebサーバとWebブラウザ(という名のクライアント)が欠かせないわけですが、そのやり取りは、実はものすごく単純だったりします。サーバの仕事というのは、基本的に「くれ」と言われたファイルを渡すだけ。なにかデー夕を整形したり、特別な処理を加えたりとかは一切なっしんぐ。
整形したり、さらに必要なファイルがないか確認したりとWebブラウザがとにかくがんばる。サーバとwebブラウザのやり取りに使われているプロトコルがHTTP。でも、そんな単純な仕組みで出来ているからこそ、様々なファイルが扱えたり、拡張も容易だったりと、広い範囲で使える仕組みになっているのです。 http://www.gihyo.co.jp/book/index.html
プロトコル/ドメイン名/ディレクトリ名/ファイル名 Webサーバと外部プログラムを連携させる仕組みがCGI。
Webブラウザからの要求に応じて、Webサーバ側で外部プログラムを実行するために用いる仕組みに、CGI(Common Gateway Interface)があります。
CGIプログラムを示すURLが要求されると、Webサーバは外部のプログラムを実行して、その処理結果を返します。
たとえば次のように指定した場合、
これは、
http:/www.sitye.co.jp/esinkin/bbs.cgi
・・・を開くのだ」
下にある、bbs.cgiを実行せよ」と言ったことになります
Cgi-bin/ちゃんは一生懸命に処理を行って、その結果を「標準出力」という
ところに吐き出します
処理結果が届くという
寸法なのです。
これにより、HTMLだけでは表現できない、インタラクティブ(対話的)なページを作ることができます。 Ajax (Asynchronous JavaScript And XML)
Webページ内に組み込むことで、その中身を動的に書き換えることのできるスクリプト。
言語にJavaScriptがあります 。このJavascriptの非同期通信機能を用いてサーバと通信を行うことで、Webアプリケーションにおいて、よりユーザビリティの高い動的なユーザインタフェースを実現する技術、これをAjax (Asynchronous JavaScript And
XML) といいます。
Asynchronous Javascript And XML
JavaScript
非同期の通信 JavaScript と XML による
こんな感じの意味になります。
たとえば現在では当たり前に利用されている地図サイトなどは、この技術を用いることで、滑らかな地図のスクロールや拡大縮小操作を可能にしています。
地図の任意の箇所を..ドラックすると...
書き換えが必要になった箇所だけが描画される。これが非同期ではない場合だと...ページ全体のデータをすべて受信し直して描画するので、一度番面全体が真っ白になってから、全体を書き換えるという動きになってしまいます。
Ajaxは単一の特別な技術ではなく、複数の技術を組み合わせることにより実現する実装手法です。
Webブラウザでマウスドラッグというイベントが発生すると、
②ページ内のスクリプトが実行されて
③非同期通信のためのweb APIがよびだされ、
④バックグラウンドで
サーバと通信を行い、XMLや、JSONなどの形式でデータが送られてくので、 サーチエンジンとSEO(Search Engine Optimization)
WWwに広がる膨大な量のドキュメントから、利用者が自身の求める適切な情報を探し出すには、検索サイトの存在が欠かせません。
このような検索サイトにおいて、特定のキーワードで検索された場合に、自社のWebサイトが検索結果の上位に表示されるよう構成を工夫する取り組みのことをSEOと言います。
SEO (Search Engine Optimization)
日本語に興味すると
「検索エンジン最適化」という意味になります。
検索エンジンがWebサイトを評価するクセを分新し、
それに最適化させたサイト構成とすることで
自身のサイトが検素結果の上位に出てくるようにします。ちなみに、この手法を悪用して、詐欺サイトや不正なソフトウェアを仕込んだページが
検索結果の上位に表示されるよう細工する攻撃手法がSEOポイズニングです。
CGM (Consumer Generated Media)
CGMとは、直訳すると「消費者により生成されたメディア」という意味になります。
要するに、サービス利用者が投稿することによって形成されていくメディアのことです。
わかりやすいところでは、読者投稿型の料理レシピサイトなど。各種プログやBBS、SNS
などもこれに該当します。 電子メールは手紙のコンピュータネットワーク版。
メールアドレスを使ってメッセージをやり取りします。
携帯電話が普及したことで、電子メールという存在はかなり認知されるようになりました。
いちいち文書を印刷して封筒に入れてポストに投函して・としていた従来の手紙とは異なり、コンピュータ上の文書をそのままネットワークに乗せて短時間で相手へ送り届けることができる手紙(mail)。それが電子メールです。
電子メールでは、ネットワーク上のメールサーバをポスト・私書箱のように見立てて、テキストや各種ファイルをやり取りします。昔はテキスト情報しかやり取りできなかったのですが、MIME (Multipur pose Internet Mail Extensions) という規格の登場によって、横々なファイル形式が扱えるようになりました。メール本文に画像や音声など、なんらかのファイルを添付する場合に、このMIME規格が使われます。
電子メールを実際にやり取りするには、電子メールソフト(メーラー)と呼ばれるアプリケーションソフトを使用します。 手紙のやり取りに住所と名前が必要であるように、電子メールのやり取りにもメールアドレスという、住所+名前に相当するものが使われます。
これは、「インターネット上で自分の私書箱がどこにあるか」を表現したもので、次のような形式となっています。
kitami@gihyo.co.ie
ユーザ名 ドメイン名
ドメイン名
メールアドレスの、@より右側の部分は「ドメイン名」をあらわします。
インターネット上における私書箱の位置・・・つまりは郵便で言うところの住所にあたる情報です。
ユーザ名
メールアドレスの、@より左側の部分は「ユーザ名」をあらわします。
郵便で言うところの名前にあたる情報です。ひとつのドメイン内で重複する名
前を用いることはできません。