1時間で覚えるWeb用語集
SI業界→Web業界に入るため、まずは用語を理解するべきと考え、
ここにまとめたいと思います。
私も勉強しながらの理解の為、解釈が誤っていたり、こんな用語も知りたいという話があればFB頂けると幸いです(^^)
- HTML(HyperText Markup Language)
- HTTP(HyperText Transfer Protocol)
- HTTPメッセージ
- HTTPメソッド
- ステータスコード
- メッセージヘッダー
- プロトコル
- TCP/IP(Transmission Control Protocol / Internet Protocol)
- TCP(Transmission Control Protocol)
- UDP(User Datagram Plotocol)
- HTTPキープアライブ
- HTTPパイプライン
- ストリーム
- HTTPS(HTTP over SSL/TLS)
- ハッシュ値
- SSL/TLS ハンドシェイク
- Cookie
- セッション
- インターネットとWeb
- ユーザインターフェース(UI)
- API(Application Programming Interface)
- Webサーバ
- Webクライアント
- Webブラウザ
- クライアントプログラム
- URL(Uniform Resouce Locator)
- ドメイン
- DNS(Domain Name System)
- URI(Uniform Resource Identifier)
- IPアドレス
- CGI(Common Gateway Interface)
- MVCモデル
- フレームワーク
- トランザクション
- Ajax(Asynchronous JavaScript + XML)
- マッシュアップ
- パスワードクラッキング
- Dos攻撃(Denial of Service)
- セッションハイジャック
- ディレクトリトラバーサル
- クロスサイトスクリプティング(Cross Site Scripting)
- クロスサイトリクエストフォージェリ(Cross Site Request Forgeries)
- SQLインジェクション
- セキュリティホール
- ファイアーウォール
HTML(HyperText Markup Language)
文章の表示方法やハイパーリンクなどをタグと呼ばれるマークによって表現する。
このよ,うな言語は一般にマークアップ言語と呼ばれる。
HTTP(HyperText Transfer Protocol)
HTMLなどのテキストファイルや画像などのコンテンツをやり取りする際に利用されるプロトコルの事
ハイパーテキストの要求手順、ハイパーテキストの送信手順のほかにも、要求されたコンテンツを持っていなかった場合の応答方法やWebサイトが移転したことを伝える方法などのハイパーテキストのやり取りをするうえで必要な様々な手順が定義されている。
ブラウザなどが違ってもこのプロトコルに関しては同じ
HTTPメッセージ
WebブラウザとWebサーバ間でやり取りされるメッセージの事
Webブラウザからの要求であるHTTPリクエストとWebサーバからの応答であるHTTPレスポンスの2種類に分けることが出来る。
構成としては
・開始行(1行・この中にHTTPメソッドが含まれる)
・メッセージヘッダー(複数行)
・空白行(1行)
・メッセージボディ(複数行)
詳細の構成は下記のリンクなどを参照
HTTP入門
HTTPメソッド
WebブラウザからWebサーバに送信される、HTTPリクエスト内に含まれるWebサーバに対する要求内容の事
GET・・・HTMLや画像データを取得する
POST・・・フォームに入力したデータ内容を転送する
ステータスコード
WebサーバからWebブラウザに送信される、HTTPレスポンス内に含まれるWebサーバの処理結果
有名どころで言うと200番が成功で404番がリクエストされたコンテンツがなくなった。サイトが閉鎖したなどの通知
メッセージヘッダー
HTTPリクエストとレスポンスはいずれも、メッセージヘッダーを利用することで、HTTPメッセージに関する詳細な情報を送信することが出来る。
主なヘッダーフィールドは下記の通り、
・一般ヘッダーフィールド
→接続状態やHTTPメッセージが作成される。
・リクエストヘッダーフィールド
→HTTPリクエストに含まれるヘッダーフィールド
直前にリンクしていたWebページの情報やWebブラウザの固有情報が含まれる
・レスポンスヘッダーフィールド
→Webサーバの固有情報など。制限することも可能
・エンティティヘッダーフィールド
→コンテンツの種類やデータ変換の型やコンテンツのサイズなど。
プロトコル
ネットワークに卒属された機器同士が通信する際にあらかじめ決められたルールや手順の事。
のろしみたいなイメージ(敵が来た!ってのはルールがないとわからない。)
HTTPはハイパーテキストつまり、Webコンテンツを送受信するためのプロトコルを指す。
TCP/IP(Transmission Control Protocol / Internet Protocol)
インターネットにおける様々なサービスを実現するための、プロトコルの集まりの事
役割事に4つのレイヤー(階層)に分かれる。
・アプリケーション層(レイヤー4) アプリケーションごとのやり取りを規定(HTTP、SMTP、FTP)
・トランスポート層(レイヤー3) データの分割や品質保証について規定(TCP、UDP)
・インターネット層(レイヤー2) ネットワーク間の通信を規定(IP,ICMPなど)
・ネットワークインタフェース層(レイヤー1) ハードウエアに関する規定(イーサーネット、Wi-Fiなど)
TCP(Transmission Control Protocol)
データの転送は分割して行われるのだが、TCPはデータの順序や欠落をチェックしている。(コネクション型)
Webサイトやメールなどのデータ損失が起こると困るようなアプリケーションで利用される。
TCPではまずクライアントとサーバが互いに通信が出来る状態なのかを確認し、「コネクション」と呼ばれる通信経路を確立したうえで通信を実施する。
コネクション確立の流れ
①SYN(Webブラウザ→Webサーバ):接続要求の送信(synchronize)
②SYN+ACK(Webサーバ→Webブラウザ):接続許可の応答、接続要求の送信
③ACK(Webブラウザ→Webサーバ):接続許可の応答
コネクション切断の流れ
①FIN(Webブラウザ→Webサーバ):切断要求の送信
②ACK(Webサーバ→Webブラウザ):切断許可の応答
③FIN(Webサーバ→Webブラウザ):切断要求の送信
④ACK(Webブラウザ→Webサーバ):切断許可の応答
また、TCPではデータの順序や欠落を防ぐために、再送制御(遅れていなかった場合に再送する)や順序制御(順序が入れ替わってしまった場合に順序番号を見て元のデータに組み立てる)を実施する。
UDP(User Datagram Plotocol)
分割して送るデータの順序や欠落を保証しない方式(コネクションレス型)
効率よく転送が出来るため、動画ストリーミングなどで利用される。
HTTPキープアライブ
HTTP1.1以前はWebページを開く際にコネクションの確立→リクエスト→レスポンス→コネクションの切断を繰り返していたが、HTTP1.1にてキープアライブによってコネクションを継続して利用し、連続してリクエスト→レスポンスが出来るようになった。
HTTPパイプライン
HTTP1.1にてHTTPパイプラインの機能が利用できるようになった。
それまでは1つのリクエスト→レスポンスが終了するまで次のリクエストを行えなかったが、レスポンスがなくても次のHTTPリクエストを送信することが可能となった。
ストリーム
HTTP2.0より利用できるようになった機能
仮想的な通信経路を複数生成して処理を多重化することが出来る。
HTTPレスポンスはリクエストの順番通りに実施する必要があったが、
ストリームによって処理順序を制限なくレスポンスが出来るため待ち時間が軽減され効率よくデータが返せるようになった。
HTTPS(HTTP over SSL/TLS)
HTTPでは平文でのやり取りをするため、クレジットカードの番号が盗聴されたり、注文内容が改ざんされたり、なりすましサイトによって個人情報が盗まれる危険性がある。
そのため、SSL(Secure Sockets Layer)やTLS(Transport Layer Security)などの暗号化技術を使って安全に使う技術
機能としては
- 盗聴防止(暗号化通信)
暗号化を実施して情報通信をすることで、盗聴しても内容が読み取れない。 - 改ざん防止
メッセージダイジェストという、ハッシュ値を用いてデータが改善されていないことを確認する。 - なりすまし防止
SSLサーバー証明書と呼ばれる電子証明書を配置しておき、接続時に検証をして、Webサイトの身元の確認を行う。
認証局によるWebサイトの身元が保証されており、信用できない発行元のSSLサーバ証明書が利用されている場合はWebブラウザに警告が表示される。
ハッシュ値
ハッシュ関数と呼ばれる計算式によって任意の長さの文字列を固定長の文字列に変換する。
パスワードなどはハッシュ値の突合せを行えばよいためそれで管理することもできる。
SSL/TLS ハンドシェイク
HTTPS通信を開始するために実施する準備の事
- 暗号化方式の決定
Webブラウザ→Webサーバに利用できる暗号化方式をサーバに送る。Webサーバ→Webブラウザに暗号化方式を決める。 - 通信相手の証明
Webサーバ→WebブラウザにSSLサーバー証明書を送り、身元の保証を実施する。 - 鍵の交換
Webブラウザ→Webサーバに対して、公開鍵を送る。
上記のカギを使ってWebブラウザからWebサーバに送った暗号化データをWebサーバにて復号する。 - 暗号化方式の確認
Webブラウザから暗号化方式の最終決定を送り、Webサーバから方式の確定をレスポンスする。
上記の処理を行って、HTTPS通信が出来る。
Cookie
HTTPではステートレスなプロトコルであるため、ログイン状態やアクセス状況を保存し継続したやり取りができないため、Cookieで状態を保存し通信を実施することで再度ログインすることなく複数のページでアクセスすることが出来る。
Cookieは初回のWebサーバからのHTTPレスポンスのメッセージヘッダーにCookie情報を含めて送信し、Webブラウザ側にテキストメッセージとして保存しておく。
その後、HTTPリクエストにCookieの情報をメッセージヘッダーに含めて送信することで、連続したやり取りを実現する。
有効期限が設定されていないCookieはブラウザを閉じると削除されるが、有効期限が設定されているCookieは有効期限に到達されるまでWebブラウザに残る。
セッション
ショッピングサイトのカート内の情報などの1アクセスに対するデータを保持する技術
セッションIDをCookieに含めたり、URLで指定したり、フォームデータに埋め込んでWebサーバとWebブラウザでやり取りする。
Webサーバ側でセッションIDとユーザ名やカート情報を保持しておく。
インターネットとWeb
そもそもWebとインターネットは別物であり、Webは文章やページを公開する技術
インターネットはコンピュータ同士をつなぐ技術
ユーザインターフェース(UI)
利用者が対象を操作するために接する部分のこと。ブラウザにて表示される
メールを送るなど実作業はメールサーバにて実施されるが、指示はハイパーテキストでメール送信や受信や閲覧などの操作を実施する。
その際にユーザが操作するブラウザの画面のをいうイメージ
API(Application Programming Interface)
ソフトウェア同士のやり取りの橋渡しを行う機能
Webサーバ
ウェブブラウザからのレスポンスに対してコンテンツ(ハイパーテキスト)を返すサーバーのこと。
Webクライアント
Webシステムを利用するためのプログラムの事
基本的な機能はWebサーバへリクエストを送り、レスポンスを受け取ってユーザに分かりやすく表現する機能を持つ
クライアントプログラム(専用アプリ)やWebブラウザなどが含まれる
Webブラウザ
ハイパーテキストを解釈して人間が読みやすいように作り変えて表示してくれるプログラムの事
文字を大きくしたり画像を表示したり、ハイパーリンクにしたりしてくれるプログラム
クライアントプログラム
Webブラウザで表現できないものを専用クライアントとして実装する。
2ちゃんねるの専用ブラウザなどがあって、あれは検索の速度が通常のブラウザでは表現しきれないから作られているもの。
URL(Uniform Resouce Locator)
「どのやり取り手順で」「どのWebサーバに」「何のコンテンツを」取りに行くかという情報
例
https://inod-festival.hatenablog.com/entry/2019/07/29/181230
inod-festival.hatenablog.com(ホスト名・ドメイン名):inod-festival.hatenablog.comというWebサーバにアクセスするという意味。IPアドレスを使って指定することも可能。ここではドメイン名を利用してアクセスしている
/entry/2019/07/29/181230(パス名)本記事のコンテンツを表示
ドメイン
IPアドレスでWebサーバを指定することが出来るが、IPアドレスでは人間にとって覚えにくく扱いにくいため、IPアドレスの別名として使われるWebサーバを特定する文字列
ドメインはグローバルIPアドレスと同様に一意である。
DNS(Domain Name System)
URLにドメインが利用されている場合は常にDNSサーバに問い合わせを行ってIPアドレスを特定している。
URI(Uniform Resource Identifier)
情報やデータといったリソースを識別する記述方法
リソースの位置を表すものがURLであり、リソースの名前を示すものがURNである。URIとはURLとURNを合わせたもの見たいないイメージ。
IPアドレス
インターネットに接続されたコンピュータを特定し、データの行き先を管理するために利用する住所のようなもの。
IPアドレスにはグローバルIPアドレスというインターネット界で一意である必要があるものと、プライベートIPアドレスというLAN内での通信に利用するIPアドレスがある。
CGI(Common Gateway Interface)
WebサーバがWebブラウザからの要求に応じてプログラムを起動させるための仕組みのこと
CGIから呼び出されるプログラムはサーバサイド・スクリプトと呼ばれる。(サーバ側で処理
サーバサイド・スクリプトに対して、クライアントサイド・スクリプトはHTMLに埋め込まれ、Webブラウザによって読み込みの際に実行されたりする。主にJavaScriptが利用される。
MVCモデル
Webアプリケーション構造の考え方
Model・・・アプリケーションの扱うデータと業務処理
View・・・ユーザへの出力(画面表示)
Controller・・・処理をModelやViewに伝える役割
利点としては開発や回収の文案が容易になること。
分離されることによって、改修が他の要素に影響しない。
フレームワーク
一般的な処理の流れをひな形として準備しておき、利用してシステム開発が出来るようにしたものをフレームワークという。
ひな形はMVCモデルのようなパターンで作られているが、ひな形に沿う形で作ることでシステム開発の手間を削減できる。
トランザクション
全てのやり取りが成功するまで完了しない最小単位
トランザクション中に更新対象データは他のトランザクションからの更新を受けない。
Ajax(Asynchronous JavaScript + XML)
これまでは同期通信でブラウザより更新データや処理をリクエストとして送信し、Webサーバで処理を実施してHTMLファイルを生成し、ブラウザにレスポンスして表示していた。
これではブラウザはファイルを受け取って表示やWebサーバで処理が行われているうちには待つことしかた出来ない欠点があった。
そのため、同期通信の欠点を補うために登場した技術がAjax。
クライアントサイド・スクリプトであるJavaScriptが動的にデータの取得/更新を実施する。JavaScriptがDOMを使ってXMLやHTMLを操作する。そのため、更新に必要なデータのみを通信する必要がなくなるため、サーバ的にも負荷が減る。
また、レスポンス待ち状態の時のWebブラウザでも表示が出来るため、非同期通信が可能となり、処理を効率的に進めることが出来る。
例はGoogleのサジェスト機能(検索候補を表示させる機能)やGoogleマップの表示部分など。
マッシュアップ
WebAPIを使って複数のサービスがつながることで新たなWebサービスを生み出すこと。
パスワードクラッキング
会員制のWebサイトなどからユーザのパスワードを抜き出そうとする攻撃のこと
辞書攻撃・・・よく使われる単語をまとめたパスワードパターンを用意しておきそれを使ってログインを試すこと
ブルートフォース攻撃・・・パスワードとして利用できる文字の総当たり
パスワードの長さをある程度長くしたり、記号や数値などを組み合わせたりして対策する。連続失敗でロックアウトするなども対策としては有効(2段階認証とかも)
Dos攻撃(Denial of Service)
サーバの負荷を上げてサービス提供が出来ない状況にする攻撃
SYN Flood攻撃・・・TCPのやり取りとりのSYNのパケットだけを大量に送り付けることで、他の接続リクエストを確立できなくする攻撃
F5攻撃・・・ページの更新のリクエストを大量に投げることでサーバの負荷を高めること
対策としては不自然なアクセスの増加を検知し、送信元のIPアドレスからのアクセスをいち早く遮断するなどの対策をする。
セッションハイジャック
第三者がCookieの中身やセッションIDを取得して、利用することでIDやパスワードを知ることなく、システムを利用することが出来るようになる攻撃方法
CookieやセッションIDの取得方法はネットワークの登頂や脆弱性をつく方法など様々ある。
対策としては情報が読み取られないように通信を暗号化したり、ログインユーザのIPアドレスが異なった場合にログアウトするなどの対策が有効
ディレクトリトラバーサル
URLにて公開していないディレクトリのパスを入力して、公開されていないディレクトリを参照すること。対策としてはURLのチェックを行い、公開していないファイルが指定されていないかを確認すること。
クロスサイトスクリプティング(Cross Site Scripting)
掲示板サイトのような、ユーザの入力内容を表示するWebサイトの脆弱性を突く攻撃
とあるサイトにアクセスすることで、他のサイトなどに勝手に書き込みを行ったり、ウィルスをダウンロードした利する。
クロスサイトリクエストフォージェリ(Cross Site Request Forgeries)
悪意のあるサイトにアクセスすることで、SNSなどのログインしているサイトに対してパスワードの変更やコメントの公開範囲の変更などをする。
ログイン情報をブラウザに記憶させている場合などに使われる手法
SQLインジェクション
WebブラウザにてパスワードやユーザIDなどの入力フォームにDBが解釈できる内容を混ぜ込むことで、Webサーバから発行されるSQLに対して影響を与え想定外のレスポンスを返す手法
セキュリティホール
ソフトウエアの欠陥により、想定外のアクセスや実行が出来てしまったり、見えるべきではないユーザに情報が見えてしまうこと。
この脆弱性は完全になくすことは難しく、セキュリティパッチなどを当てることで防ぐ。
この時に、発見されたセキュリティホールに対して対策がとれていない状態で攻撃を仕掛けること。セキュリティパッチの提供が追い付いていなかったり、適応が間に合っていない場合にセキュリティホールが利用されることとなる。
ファイアーウォール
インターネットと内部ネットワークの間に設置し、送受信されるデータを監視して、通信の許可・拒否を行う。
特定のサーバのみにアクセスさせることや、特定のIPアドレスのみ許可するなどのフィルタリングを実施することが一般的に使われている。