WEB関連の用語を分かりやすくまとめてみる①

# はじめに
web関連の用語を自分なりにまとめていきます。お付き合いいただければ幸いです。


## webとは
Webとは、World Wide Webの略称で、頭文字をとってWWWと呼ばれることもあります。

web上の文書はハイパーテキストと呼ばれる言語で書かれ、web同士がハイパーリンクと呼ばれるwebページの参照によりまるでクモの巣のように繋がっていることからそう呼ばれるそうです。

## ユーザーインターフェースとAPI
コンピューターの機能とユーザーのやり取りを橋渡しする機能をユーザーインターフェースと呼びます。

また、ソフトウェア同士のやり取りを橋渡しする機能をAPI（アプリケーションプログラミングインターフェース）と呼びます。

## HTMLとXMLとXHTML
HTMLは（Hyper Text Markup Language)の略称で、web上の文書であるハイパーテキストを記述するためのマークアップ言語のひとつです。タグによって記述されます。HTMLは特にwebに特化した機能を持ちます。

XMLは（Extensible Markup Language)の略称で、HTMLと同じマークアップ言語のひとつです。webに特化したHTMLに比べて、XMLは様々な用途に汎用的に利用されます。

XHTMLは(Extensible Hyper Markup Language)の略称で、HTMLをXMLの文法で再定義したものになっています。

##webブラウザ
safariやchromeなどがあります。主要な役割として、webサーバーから送られてきたHTMLを人間が見やすい形に変換します。![1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411258/5bcde4c5-c0c3-75e8-a3ff-3a4aa05fe6a7.png)
上図のように、webブラウザはまずwebサーバーに「HTMLを送ってくれ！」というGETリクエストというものを行います。

それを受けて、webサーバーはHTMLをwebブラウザに送信します。

そのあとに、webブラウザはHTMLを人間が分かりやすいのように変換します。

そのような動作により、webサイトを閲覧することが可能となっています。

##webサーバー
webサーバーはブラウザからコンテンツを送信するように要求があった際に、コンテンツをwebブラウザに送信する役割を担っています。

## HTTP
webブラウザがwebサーバーにコンテンツを要求し、それにwebサーバーが応答するといったやり取りの手順と、そのメッセージの書式は世界共通になっています。

このやり取りの手順をHTTP(Hyper Text Transfer Protocol)といいます。

webブラウザやwebサーバーには様々なものがありますが、HTTPは全てに共通です。

## URL
Uniform Resouce Locatorの略称で、どの手順で、どのサーバーに、何のコンテンツを取りにいくかが示されています。

これをwebブラウザが解釈することで、webサーバーにgetリクエストを送ることができます。

## 静的ページと動的ページ
いつも同じコンテンツが示されるwebページを静的ページとよび、検索結果のように状況に応じて毎回異なる結果が表示されるwebページを動的ページと呼びます。

## CGI
webブラウザからコンテンツを要求された際に、サーバー側でプログラムを起動してHTMLを作成する場合があります。

このようにサーバーでプログラムを起動させる仕組みをCGIと呼びます。![2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411258/650a61c9-b1b8-e9a7-b032-44dd7e5f0537.png)
サーバーサイドスクリプトにはpythonやPHP、Perlなどがあります。

また、サーバーサイドスクリプトに対して、webブラウザにより実行されるプログラムであるクライアントサイドスクリプトが存在します。

クライアントサイドスクリプトには、主にJavaScriptが用いられます。
##プロトコル
ネットワークに繋がれた機器が相互にやり取りする際の約束事のことです。

HTTP(Hyper Text Transfer Protocol)はその名前の通り、ハイパーテキストを送受信する際のプロトコル、という意味になります。

##TCP/IP
TCP/IPとは(Transmission Control Protocol/Internet Protocol)の略称で、簡単にいうとインターネットの多くのサービスに用いられるプロトコルの集合体です。HTTPもTC/ICPの一部となっています。

## IPアドレスとポート番号
IPアドレスとは、32ビットの数字の羅列で表されるインターネットの世界における住所のようなものです。

グローバルIPアドレスとプライベートIPアドレスが存在し、グローバルIPアドレスはインターネット上におけるコンピューターを一意に決定する必要があるため、自由に変更することはできません。

プライベートIPアドレスは、自宅や会社のLAN内での通信で利用されるものであり、同一LAN内でのみ一意である必要があります。

ポート番号は、IPアドレスをインターネット上の住所とした際の部屋番号のようなものであり、IPアドレスで指定したコンピューターのサービスの種類を決定できます。

## ドメイン
IPアドレスは文字列の羅列であるため、IPアドレスの別名としてドメインが利用されます。

例えば、Qiitaのドメインはqiita.comですよね。IPアドレスと同様に、インターネット上で一意である必要があります。

##DNS
ドメインはIPアドレスの別名として用いられますが、webブラウザがサイトにアクセスする際にはIPアドレスが必要になります。

例えば、Qiitaにアクセスする際にqiita.comというドメインが用いられますが、webブラウザはこのドメインを一度IPアドレスに変換する必要があります。

このドメインをIPアドレスに変換する仕組みがDNS(Domein Name System)であり、DNSを行うサーバーをDNSサーバーと呼びます。

このようにドメインとIPアドレスを紐づけることを名前解決といいます。![3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411258/0f05ac6a-d589-8cfd-e695-04285c6aefd1.png)
##HTTPリクエストとHTTPレスポンス
webブラウザはwebサーバーにHTTPリクエストを送ることによってデータを要求します。

HTTPリクエストは「リクエスト行」「メッセージヘッダー」「メッセージボディ」に分けることができます。

HTTPレスポンスはwebサーバーからwebブラウザへのHTTPリクエストに対する返答であり、「ステータス行」「メッセージヘッダー」「メッセージボディ」に分けることができます。

##HTTPS
HTTPSとはHTTP Over SSL/TLSの略称で、HTTPにおいて暗号化方式であるSSLやTLSを用いることで、安全にWebサイトが利用できます。簡単にいうと、安全なHTTPです。

##ステートフルとステートレス
ステートフルとは、状態を保持するということであり、ステートレスとは状態を保持しないことです。

HTTPはステートレスなプロトコルであり、webブラウザとwebサーバーの間の一連のやり取りの状態を保持することはできません。

つまり、HTTPのみを用いる場合においては、一連の流れを必要とする作業はできません。

##Cookie
HTTPSはステートレスなプロトコルであるため、ネットで買い物をするときなどに①商品をかごに入れ②レジに進み③注文を確定する、などといったことはできません。

②でレジに進んだ状態で①の商品をかごに入れたことサーバーは忘れているため、かごの中が空になっています。

しかし、ステートフルな通信をwebサーバーが行うとwebサーバーが一連の流れをすべて記録しなければならなくなるため、サーバーへの負担がとても大きなものになるます。

これを防ぐ手段がCookieです。

cookieにおいては①の商品をかごにいれたという情報をwebブラウザに送り、webブラウザはその情報を保存します。

そして、次にwebサーバーとやり取りする際にcookieを送ることで、商品をかごに入れた状態で②レジに進むことができる、というわけです。

#終わりに
今回はここまでになります。ここまで読んで下さりありがとうございました。もしよろしければ[次回の記事](https://qiita.com/renesisu727/items/9a4c2a0021ed4e1c0773)も読んで頂けると幸いです。