WEBの基本について

<h1>概要</h1>
Web技術の基本についてアウトプットしていきます。

この記事については随時追記していきます。

# Webとは
ニュースや自分の調べたいことなどの文書を簡単に探して閲覧することができたり、自分の文書や画像・動画などを世界中の人たちに簡単に公開することができる。このような文書の公開や閲覧のためのシステムをWebと呼ぶ。
Webページは<font color="red">ハイパーテキスト</font>と呼ばれる言語で構成されている。
<font color="red">ハイパーテキスト</font>というのは1つのWebページの中に別のWebページへの参照を埋め込むことができ、複数の文書を相互に結びつけたものである。他のWebページへの参照というのは<font color="red"> ハイパーリンク</font>と呼び、単にリンクと呼ぶ場合もある。
<font color="red">ハイパーテキスト</font>は<font color="red"> ハイパーリンク</font>で繋がっている。
このリンクをクリックすることで次々と別のWebページに移動していくことができる。
そして最終的に世界中のあらゆるWebぺージとの繋がりを持つことができる。

# Webの柔軟性と表現力
コンピューターの機能とユーザーのやり取りの橋渡しをする機能を<font color="red">ユーザーインターフェース</font>と呼ぶ。簡単に例えると<font color="red">人間とコンピューターの接点</font>ということである。
例・メールはハイパーテキストを用いて一覧画面や編集画面などを表示することで、ユーザーがメールサーバーの中のメールを表示したり操作したりするための橋渡しを行う。

次にソフトウェア同士のやりとりの橋渡しをする機能を<font color="red">API</font>と呼ぶ。
例・天気予報アプリで地域などを指定してデータをサーバーに要求する。そしてサーバーは受け取った地域の天気予報のデータをアプリに返すというような橋渡しをおこなっている。

上記で出てきた<font color="red">ハイパーテキスト</font>を記述する言語が<font color="red">HTML</font>です。文書の表示方法やハイパーリンクを<font color="red">タグ</font>と呼ばれるマークで表現する。このような言語を<font color="red">マークアップ言語</font>と呼ぶ。
そしてHTMLで記述された文書のことを<font color="red">コンテンツ</font>と呼ぶ。
しかし、タグで意味つけされた文書というのは人間が読むには適していない。そこで人間が読みやすいように解釈して表示してくれるのが<font color="red">Webブラウザ</font>と呼ばれるプログラムだ。
<font color="red">Webブラウザ</font>はInternetExplorer,Firefox,Chromeなどがある。
Webブラウザの種類によって表示に多少の違いはあるが基本的にどのブラウザでも同じようにコンテンツを閲覧することができる。
　
# プロトコル
WebブラウザはWebサーバーに対してHTTPリクエストという要求を行う。そしてサーバーはブラウザに対してHTTPレスポンスという返事を返す。このやりとりを繰り返すことでブラウザでWebページを表示することができる。簡単にいうと、ブラウザが『このコンテンツをもっていますか？』という要求に対してサーバーが『持っていない』というメッセージを返したり、別のサーバーに要求するよう案内してくれたりする。
サーバーは一般的には<font color="red">Apache</font>や<font color="red">IIS</font>というプログラムが利用されている。
上記で出てきている<font color="red">HTTP</font>とはハイパーテキストのやり取りの手順のことを示す。
HTTPリクエストやHTTPレスポンスといったやり取りの手順や、やり取りするメッセージの書式は世界共通の仕様として決められている。
そしてこのHTTPなどのように共通のルールや手順のことを<font color="red">プロトコル</font>と呼ぶ。お互いに同じプロトコルを利用することでデータのやり取りが可能になっている。
しかし、HTTPはブラウザとサーバー間でデータのやり取りをするプロトコルなのでHTTPだけではサーバーがどこにあるのか、また、コンテンツをどのように転送するのかなどの取り決めがない。そこで足りない部分を補うために数種類のプロトコルが存在し、お互いが接続することを可能にしている。

・用途に応じてざまざなプロトコルが存在する
例　HTTP・・・データ送受信用のプロトコル
　　FTP・・・ファイル送受信用のプロトコル
　　SMTP・・・メール送信用のプロトコル
　　POP・・・メール受信用のプロトコル

上記のようにHTTPだけではなくさまざまなプロトコルが存在する。
そして様々なサービスを実現するためのプロトコルの集まりのことを<font color="red">TCP/IP</font>と呼ぶ。
ちなみに<font color="red">TCP/IP</font>は複数のプロトコルの集まりのことを指すが、中心的な役割を果たすプロトコルが<font color="red">TCP</font>と<font color="red">IP</font>なので<font color="red">TCP/IP</font>と呼ばれるようになった。
次にTCP/IPについて簡単に説明する。
# TCP/IPとは
以下の4つの階層（レイヤー）に分かれている。
・アプリケーション層　（レイヤー4）アプリケーションごとの役割を規定
・トランスポート層　（レイヤー3）データの分割や品質保証を規定
・インターネット層　（レイヤー2）通信の規定
・ネットワークインターフェース層　（レイヤー1）ハードウェアに関する規定
このように層に分かれていて、役割ごとに応じたプロトコルが各レイヤーにで利用され、インターネットでの通信が可能になっている。

・アプリケーション層ではクライアントサーバーシステムで構成されていて、クライアント（ブラウザ）とサーバー間の要求と応答で成り立っている。データを人間が理解できるように変換する機能なども持っている。
そしてデータの転送処理などは下位の層が担当している。

・トランスポート層ではアプリケーション層のやりとりに応じて実際にデータの転送処理をおこなっている。そしてこれを可能にしているのが上記で出てきた<font color="red">TCP</font>というプロトコルである。そして<font color="red">TCP</font>は分割されたデータの順番や欠落をチェックしているのに対して、データの順番や欠落を保証していないのが<font color="red">UDP</font>というプロトコルである。
TCPはメールなどの損失が起きると困るようなアプリケーションで利用されており、UDPは信頼性は低いが通信がかなり簡略化されているので効率よく通信することができ、動画ストリーミングなどで利用されている。
ちなみに、TCPは受信側と送信側でお互いに確認を取り合うコネクション型と呼ばれ、UDPは送信側と受信側で確認を取らないコネクションレス型と呼ばれている。

・インターネット層ではIPやICMPなどのプロトコルがネットーワーク間の通信をおこなっている。

# IPアドレスとポート番号とは
コンピューターを特定し、データの行き先を管理するために利用されているのが<font color="red">IPアドレス</font>と呼ばれる識別番号である。簡単に例えると『住所』のようなもので、この『住所』を特定することでインターネット上の特定のコンピューターに接続することができる。
IPアドレスは10進数と2進数で表されている。

メールなどコンピューターは色々なサービスを提供しているが、IPアドレスだけでは接続したいコンピューターは指定できるが提供するサービスまでは特定できない。そこで、サービスを指定するために<font color="red">ポート番号</font>というものを利用する。例えるとマンションの中にある部屋番号のようなものである。IPアドレスでマンションを特定してポート番号で部屋番号を特定するようなイメージ。