タグ : 基本情報技術者試験

TCP/IPモデルとOSI参照モデルの違い

TCP/IPモデルとOSI参照モデルってどんな違いがあるんだ?
って最近質問をうけたので、ちょいと記事に。

TCP/IPモデルとOSI参照モデルはまったくの別物。

OSI参照モデルは、国際標準化機構(ISO)によって策定された、コンピュータの持つべき通信機能を階層構造に分割したモデル。
TCP/IPモデルの方が普及したため、OSI参照モデルは普及しませんでした。
しかし、OSI参照モデルはネットワークの基本として残りました。

OSI参照モデルのプロトコル群は7つのレイヤーに分けています。
OSI参照モデル

TCP/IPのプロトコル群は4つのレイヤーに分けています。
TCP/IPモデル

データ通信を理解するには、OSI参照モデルの方がわかりやすい。
が、TCP/IPがデファクトスタンダード(事実上の標準)となっているので知っておく必要がある。
頭こんがらがっちゃいますね。

とりあえず、最初は、
TCP/IPモデルとOSI参照モデルは別物で、実際に使われているのはTCP/IP。
勉強するのに便利なのがOSI参照モデル。
TCP/IPはレイヤー4つで分けられていて、OSI参照モデルはレイヤー7つで分けられている。
それぞれのレイヤーはどんな働きをしているのか?
ってことを覚えておけばいいと思います。

スマートフォンのセキュリティ『サンドボックス』

サンドボックスとは、「砂場」を意味し、砂場のように区切られた範囲の内側でしかアプリのプログラムが動作できないようにし、システムが不正に操作されるのを防ぐセキュリティモデルのこと。

スマートフォンなどで使われています。

例えば、スマートフォンでは、勝手に電話帳や位置情報にアクセスさせないようになっています。
また、あるアプリケーションがウィルスの侵入されても、サンドボックス内で被害を食い止めることができます。

しかし、サンドボックス内だけではアプリケーションは、限定的な動作しかできなくなってしまいます。
そのため、必要な機能へアクセスできるように、私達ユーザーに許可を求めるようになっています。
スマートフォンでは、アプリをインストールするときに、カメラや位置情報などへのアクセスを許可するか確認されますね。

スマートフォンのセキュリティ

もし、アプリをインストールする時に、アプリ内で使われない機能の許可が求められていて、それに気付かずに許可してしまったら個人情報が流出してしまう可能性があります。
実際に、2010年12月には、ある海賊版アプリで、不要な課金情報や位置情報などの項目に許可を求められるものが発見されています。
この海賊版アプリはゲーム終了後に、通信が始まり電話番号や詳細な位置情報を勝手に送信してしまうように作られていました。

本当に、必要な機能への許可を求めているのかどうかなんてインストール前にはわからないですよね。
ちゃんと確認するのが面倒で、適当に許可してしまうこともありますよね。

AndroidとiPhone

iPhoneなら、iTunes App Storeは、事前審査がされているので、不必要な動作をするアプリが公開される可能性は低くなっています。

では、Androidなら、Android Marketから、アプリをダウンロードすれば安全かといえばそうでもなく。
Android Marketからも、フィッシングやらマルウェアが発見されています。
有害なアプリだということが発覚すれば、削除されます。
ので、何かアプリをインストールするときは、一度WEBで調べてからなど、個人個人対策が必要ですね。
Android Marketは、早さと自由さはいいところなんですが。

データベース『障害回復について』

データベースには、障害が発生したとしても、データ復旧のための手段が備わっています。
障害には、物理的な障害や人為的なミスなど様々あります。

データベースを復旧させるための仕組みとして
「バックアップ」「ログ(ジャーナル)」「チェックポイント」というものがあります。

バックアップは、データベースのすべての内容をコピーしたもの。

ログ(ジャーナル)は、データの変更前後の内容と変更内容を記録したもの。

チェックポイントは、データベースとログの内容に整合性がとれいる時点のこと。

ロールバックは、障害発生時のデータに対して、更新前のログでデータベースを復旧させる方法。

データベースに物理的な障害が発生した場合は、
まず、一番新しいバックアップデータで復元して、更新後のログで障害直前の状態に復旧させます。
このような復旧方法を「ロールフォワード」と言います。

データベース『トランザクションとは』

トランザクションとは、それ以上分けられない処理の単位のことです。
データベースでは、処理ごとにデータの更新をしたり、キャンセルすることができます。

たとえば、A銀行からB銀行に10万円振り込んだときのことを考えてみます。
A銀行から10万円の振り込み手続きが完了し、B銀行へ動こうとしたそのとき、B銀行でシステム障害が発生してしまいました。
結局、B銀行に10万円は振り込まれませんでしたが、A銀行からは10万円減ってしまいました。
10万円はどこかに消えてしまいました。

なんてなってしまっては、困ります。
このような事態に陥らない仕組みが、トランザクションです。
A銀行からB銀行へ振り込みに失敗してしまったら、このトランザクションをなかったことにします。
なかったことにすることで、10万円はA銀行に戻ってきます。
これを『ロールバック』といいます。

B銀行にシステム障害が発生していなければ、
A銀行からB銀行へ10万円が振り込まれます。
これは、正常に処理がされたので、トランザクションを確定することになります。
これを『コミット』といいます。
コミットされると、トランザクションのやり直しはできません。

トランザクション処理は、コミット(処理を確定)するか、ロールバック(処理をキャンセル)するかのどちらかを必ず実行します。

データベースのデータモデル-その3 『リレーショナルデータモデル』

前回の記事では『論理データモデル』階層型データモデルとネットワーク型データモデルを見てきました。

この記事では、現在の主流のデータモデル「リレーショナルデータモデル」です。
リレーショナルデータモデルは、データを2次元の表で表します。
2次元の表は、EXCELの表を思い浮かべるとわかりやすいですね。
この表を「テーブル」といいます。
テーブルの列を「フィールド」、行を「レコード」といいます。
フィールドでは、データ項目を、レコードにはデータそのものを表します。
リレーショナルデータモデル

現実社会では、2次元の表がそのまま使われていることも多く、人間にとって理解しやすい形です。

階層型データモデルとネットワーク型データモデルでは、アプリケーションがデータ構造に強く依存しているため、データ構造を変更するには、アプリケーション側もルートの再修正が必要になり、容易に変更することができませんでした。

リレーショナルデータモデルでは、データ構造がシンプルでわかりやすく、アプリケーションの変更も容易にできるメリットがあります。

リレーショナルデータベースには、さまざまな種類が存在します。
商用データベースでは

  • オラクル社のOracle Database
  • マイクロソフト社のSQL Server
  • IBM社のDB2

オープンソースでは

  • MySQL
  • FireBird
  • PostgreSQL

データベースのデータモデル-その2 『論理データモデル』

前回『概念データモデル』について学びました。
今回は、論理データモデルについてです。
論理データモデルは概念データモデルよりも、コンピューターに近い形で表現したものです。

論理データモデルは、データベースの種類によっていくつかに分けることができます。

階層型データモデル

階層型データモデルは、ツリー状に表現するデータモデルです。
会社の組織図のような形ですね。

階層型データモデル

階層型データモデル

このような形ですと必要なデータに対してルートが1つしかない状態になります。
1対多か1対1の関係になります。
Bにbが従属していますが、Dにもbが従属している。ということが起こってしまいます。
データの冗長化が起こりやすくなります。

ネットワーク型データモデル

ネットワーク型データモデルは、データのつながりを網状にし、多対多に対応させたデータモデルです。
ルートが1つしかなかった階層型データモデルでのデータの冗長化は発生しません。

ネットワーク型データモデル

ネットワーク型データモデル

ただ、これでは、データベースが巨大化すれば、複雑さがどんどん増してしまいます。

階層型データモデルにも言えることですが、アプリケーションはデータの構造に強く依存します。
データ構造に変更があれば、アプリケーションも修正を加えなくてはいけません。
容易にデータ構造を変更することができません。

データベースのデータモデル-その1 『概念データモデル』

データベースといっても様々な種類があります。
データベースを構築するには、まず現実社会のデータをコンピューター上で扱いやすくする必要があります。
この作業をデータモデリングといいます。
データモデリングによって、置き換えられたデータをデータモデルといいます。

データモデルは、データモデリングの段階によって分けることができます。

概念データモデル

概念データモデル、データベース設計において初期段階で作成されます。
概念データモデルはER図での記述が代表的。
エンティティ(Entity:実体)とリレーションシップ(Relationship:関連)の頭文字をとったもの。

ER図
E-R図の3つの記号
□ 実体=対象を構成する要素
◇ 関連=実体間の関係
○ 属性

実体には、人や商品などの「物」が該当します。
関連には、発注や受注、納品、所属などの「イベント」が該当します。
~すると言い換えられる単語が関連。
関連は、「1対1」「1対多」「多対多」のパターンで実体と実体を結びつけます。

属性(Attribute)は、実体と関連における固有の情報や特性を表現します。

次回は、論理データモデルをみてみましょう!

ハードディスクの中はどうなっているの?

最近は、PC以外にも、音楽プレーヤーやHDDレコーダー、HDDカーナビなど様々な場面でハードディスクは使われています。
PCにパーツを増設することがある人は、ハードディスクの外観は見慣れたものですね。

ハードディスク外観

ハードディスク外観

ここまでは、見たことがある人も多いでしょう。
このハードディスクの鉄製の箱を開けると、こんな感じになっています↓↓

ハードディスクの箱を開けると

ハードディスクの箱を開けると

拡大すると、

ハードディスク ヘッドとプラッタとアーム拡大

ハードディスク ヘッドとプラッタとアーム拡大

円盤はプラッタ。
プラッタにデータを保存していきます。
プラッタはガラスやアルミニウムなどに磁性体を塗布したものです。
(磁性体は、磁気を帯びる性質を持つ物質。)

アームの先には電流を流して電磁席となった磁気ヘッドがあります。
磁気ヘッドをプラッタに近づけると、S極とN極による磁界のパターンが生じます。
磁界のパターンは磁性体であるプラッタに刻まれ、データが書き込まれます。
これは、ビデオテープ、フロッピーディスクなどと同じ記録原理です。

読み取り時には、その磁界の変化で電流が流れるので、磁気ヘッドが変化を拾いパターンによって0と1を認識しています。

メモリの役割

メモリには、USBメモリなどの補助記憶装置としての役割をもつものも最近では多く、お持ちの方も多いでしょう。

今回ここで言う

「メモリとは」
CPU(中央処理装置)が直接読み書きできるRAMやROMなどの半導体記憶装置のことです。
メインメモリとも言います。

CPUが読み書きするための情報を一時保管しておく場所です。
メモリが記憶しておく情報は、CPUの計算結果やプログラム自体などです。
CPUは、メモリに記憶された命令を取り出して、命令を読んでそのとおりの動作を行います。

CPUの役割

CPUは、プログラムの命令を処理・実行します。
パソコンの頭脳にあたります。
CPUが処理する命令の一つ一つは、単純なものです。
例えば、2つの数を足したり、メモリから数を読み込んだり、メモリに数を書き込んだりなどです。
単純な命令も、膨大な量を高速に実行することで、私たちにとって実用的な仕事をすることができるのです。