webアプリケーションを構成する技術を学ぶ②

公開日:2019-02-03
最終更新:2019-02-03

知らない言葉を減らしていくシリーズの第二弾。
今回は通信にまつわる技術の部分をざっくりと。

クライアント/サーバ

webはクライアント/サーバのアーキテクチャスタイルを採用している。
アーキテクチャ=設計。

 

HTTP

TCP/IPをベースとしたプロトコル(規約)。
RESTの特徴を実現するwebの基盤。
リクエスト/レスポンス型のプロトコルでもある。

HTTPメッセージ

リクエストメッセージとレスポンスメッセージがある。

HTTPメッセージの構成

  1. スタートライン(リクエストライン/ステータスライン)
  2. ヘッダ(省略可)
  3. 空行
  4. ボディ(省略可)

HTTP通信の中身は別のメモ。

 

TPC/IP(ティーシーピー・アイピー)

ブラウザから受け取ったHTTPリクエスト等の情報をパケットという単位に分割して送信、受け取った側でパケットを組み立てるネットワークのプロトコル(規約)。

 

IPアドレス

世界のIPアドレスを管理しているICANN(アイキャン)が日本のIPアドレスを管理しているJPNICにIPアドレスを割り当て、プロバイダが各ユーザに一時的に割り当てる。
IPアドレス(コンピュータが分かりやすい形)から宛先のホスト(人間が分かりやすい形)を特定する。
グローバルIPアドレス:インターネット上で唯一のアドレス
プラベートIPアドレス:3種類用意されていて、プライベートネットワークで自由に利用できる。

 

DNS

ホスト名とIPアドレスの対応表をもっていてDNSサーバに問い合わせを行うとIPアドレスを返す。
ドメイン名の代わりにIPアドレスをブラウザへ入力してwebページを表示させることもできる。
ダウンするとインタネットが利用できなくなる根幹のシステムなので、DNSサーバは何万もの多数のサーバで分散管理されている。
jp, com, netなど最上位のドメインをトップレベルドメイン(TLD)という。
その上にあるのがルートサーバと呼び、ルートサーバから順に下位のDNSサーバへ問い合わせることでホスト名に対応するIPアドレスを知ることができる。

 

ポート番号

HTTP以外にもメールで使用されるSMTPやPOP3、ファイルの転送を行うFTPなど様々なプロトコルがあり、全てTPC/IPの上に成り立っている。
受信した情報がどのアプリケーションで処理されるべきか、TPC/IPには分からないため、portで指定する。
代表的なプロトコルで使用されるポートはウェル・ノウン・ポートと呼ばれ、標準で使用する番号が決まっている。
20,21 FTP(ファイル転送)
22 SSH(リモートコンピュータとの暗号化された汎用通信)
23 Telnet(リモートコンピュータとの汎用通信)
25 SMTP(メール送信)
53 DNS(ホスト名解決)
80 HTTP(webブラウジング)
110 POP3(メール受信)
443 HTTPS(暗号化されたHTTP)

 

HTTPは状態をもたないステートレスなプロトコル。
webアプリに必要なログインなどの情報を持たせるためにcookieが利用された。

  1. webサーバからwebブラウザへHTTPレスポンスのヘッダを使用してkey=valの組み合わせでcookieを送る。
  2. ブラウザは同じサーバへアクセスする際、受け取ったcookieをそのままヘッダに入れて送る。
  3. webアプリではcookieを調べることでアクセスしている相手を特定する。
    また、受け取ったサーバと異なるwebサーバへはcookieを送らない。
    一般的にcookieを削除することでログアウトを実現。

リクエストヘッダやレスポンスヘッダを利用して情報がやりとりされるため、簡単に覗ける。
また、一時ファイルやcookieはPC内にテキストファイルとして保存される。

 

セッションの登場

セッションIDは銀行の受付番号のようなもの。ID自体は意味を持たない。

  1. ログインIDとパスワードで認証。
  2. webサーバはセッションIDを発行。セッション情報にユーザを記録。
  3. cookieにセッションIDを格納してクライアントへ返す。
  4. クライアントは再度アクセスするときにセッションIDを格納したcookieを渡す。
  5. webサーバはセッションIDからユーザを識別。

セッションを利用するかは、cookieに情報そのものを持たせるかセッションIDだけを格納するかの違い。
セッションIDが漏れても問題ないというわけではないが、直に情報を持たせるよりはセキュリティ面でマシ。

記事が少しでもいいなと思ったらクラップを送ってみよう!
0
+1
学んだことの整理と忘備録としてアウトプット始めました。ログは自分用のちょっとしたメモ書き。

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする