概要
Web技術の基本についてアウトプットしていきます。この記事については随時追記していきます。
Webとは
ニュースや自分の調べたいことなどの文書を簡単に探して閲覧することができたり、自分の文書や画像・動画などを世界中の人たちに簡単に公開することができる。このような文書の公開や閲覧のためのシステムをWebと呼ぶ。
Webページはハイパーテキストと呼ばれる言語で構成されている。
ハイパーテキストというのは1つのWebページの中に別のWebページへの参照を埋め込むことができ、複数の文書を相互に結びつけたものである。他のWebページへの参照というのは ハイパーリンクと呼び、単にリンクと呼ぶ場合もある。
ハイパーテキストは ハイパーリンクで繋がっている。
このリンクをクリックすることで次々と別のWebページに移動していくことができる。
そして最終的に世界中のあらゆるWebぺージとの繋がりを持つことができる。
Webの柔軟性と表現力
コンピューターの機能とユーザーのやり取りの橋渡しをする機能をユーザーインターフェースと呼ぶ。簡単に例えると人間とコンピューターの接点ということである。
例・メールはハイパーテキストを用いて一覧画面や編集画面などを表示することで、ユーザーがメールサーバーの中のメールを表示したり操作したりするための橋渡しを行う。
次にソフトウェア同士のやりとりの橋渡しをする機能をAPIと呼ぶ。
例・天気予報アプリで地域などを指定してデータをサーバーに要求する。そしてサーバーは受け取った地域の天気予報のデータをアプリに返すというような橋渡しをおこなっている。
上記で出てきたハイパーテキストを記述する言語がHTMLです。文書の表示方法やハイパーリンクをタグと呼ばれるマークで表現する。このような言語をマークアップ言語と呼ぶ。
そしてHTMLで記述された文書のことをコンテンツと呼ぶ。
しかし、タグで意味つけされた文書というのは人間が読むには適していない。そこで人間が読みやすいように解釈して表示してくれるのがWebブラウザと呼ばれるプログラムだ。
WebブラウザはInternetExplorer,Firefox,Chromeなどがある。
Webブラウザの種類によって表示に多少の違いはあるが基本的にどのブラウザでも同じようにコンテンツを閲覧することができる。
プロトコル
WebブラウザはWebサーバーに対してHTTPリクエストという要求を行う。そしてサーバーはブラウザに対してHTTPレスポンスという返事を返す。このやりとりを繰り返すことでブラウザでWebページを表示することができる。簡単にいうと、ブラウザが『このコンテンツをもっていますか?』という要求に対してサーバーが『持っていない』というメッセージを返したり、別のサーバーに要求するよう案内してくれたりする。
サーバーは一般的にはApacheやIISというプログラムが利用されている。
上記で出てきているHTTPとはハイパーテキストのやり取りの手順のことを示す。
HTTPリクエストやHTTPレスポンスといったやり取りの手順や、やり取りするメッセージの書式は世界共通の仕様として決められている。
そしてこのHTTPなどのように共通のルールや手順のことをプロトコルと呼ぶ。お互いに同じプロトコルを利用することでデータのやり取りが可能になっている。
しかし、HTTPはブラウザとサーバー間でデータのやり取りをするプロトコルなのでHTTPだけではサーバーがどこにあるのか、また、コンテンツをどのように転送するのかなどの取り決めがない。そこで足りない部分を補うために数種類のプロトコルが存在し、お互いが接続することを可能にしている。
・用途に応じてざまざなプロトコルが存在する
例 HTTP・・・データ送受信用のプロトコル
FTP・・・ファイル送受信用のプロトコル
SMTP・・・メール送信用のプロトコル
POP・・・メール受信用のプロトコル
上記のようにHTTPだけではなくさまざまなプロトコルが存在する。
そして様々なサービスを実現するためのプロトコルの集まりのことをTCP/IPと呼ぶ。
ちなみにTCP/IPは複数のプロトコルの集まりのことを指すが、中心的な役割を果たすプロトコルがTCPとIPなのでTCP/IPと呼ばれるようになった。
次にTCP/IPについて簡単に説明する。
TCP/IPとは
以下の4つの階層(レイヤー)に分かれている。
・アプリケーション層 (レイヤー4)アプリケーションごとの役割を規定
・トランスポート層 (レイヤー3)データの分割や品質保証を規定
・インターネット層 (レイヤー2)通信の規定
・ネットワークインターフェース層 (レイヤー1)ハードウェアに関する規定
このように層に分かれていて、役割ごとに応じたプロトコルが各レイヤーにで利用され、インターネットでの通信が可能になっている。
・アプリケーション層ではクライアントサーバーシステムで構成されていて、クライアント(ブラウザ)とサーバー間の要求と応答で成り立っている。データを人間が理解できるように変換する機能なども持っている。
そしてデータの転送処理などは下位の層が担当している。
・トランスポート層ではアプリケーション層のやりとりに応じて実際にデータの転送処理をおこなっている。そしてこれを可能にしているのが上記で出てきたTCPというプロトコルである。そしてTCPは分割されたデータの順番や欠落をチェックしているのに対して、データの順番や欠落を保証していないのがUDPというプロトコルである。
TCPはメールなどの損失が起きると困るようなアプリケーションで利用されており、UDPは信頼性は低いが通信がかなり簡略化されているので効率よく通信することができ、動画ストリーミングなどで利用されている。
ちなみに、TCPは受信側と送信側でお互いに確認を取り合うコネクション型と呼ばれ、UDPは送信側と受信側で確認を取らないコネクションレス型と呼ばれている。
・インターネット層ではIPやICMPなどのプロトコルがネットーワーク間の通信をおこなっている。
IPアドレスとポート番号とは
コンピューターを特定し、データの行き先を管理するために利用されているのがIPアドレスと呼ばれる識別番号である。簡単に例えると『住所』のようなもので、この『住所』を特定することでインターネット上の特定のコンピューターに接続することができる。
IPアドレスは10進数と2進数で表されている。
メールなどコンピューターは色々なサービスを提供しているが、IPアドレスだけでは接続したいコンピューターは指定できるが提供するサービスまでは特定できない。そこで、サービスを指定するためにポート番号というものを利用する。例えるとマンションの中にある部屋番号のようなものである。IPアドレスでマンションを特定してポート番号で部屋番号を特定するようなイメージ。