「Web技術の基本」を読みました(1)
勉強記録
今日は「Web技術の基本」という本を読みました。イラスト図解式なので、内容がとてもわかりやすかったです。
重要そうなところをまとめました。(長いので記事を3つに分けています)
インターネットの標準プロトコル
・プロトコルとは
ネットに接続された機器同士が通信するときに、あらかじめ決められたルールや手順のこと
・TCP/IPとは
プロトコルの集まり。
TCP/IPは役割ごとに階層化されている。
TCP/IP
・TCP/OPは役割ごとに4つの階層(レイヤー)に分かれている
-アプリケーション層(レイヤー4)
- トランスポート層(レイヤー3)
-インターネット層(レイヤー2)
-ネットワークインターフェース層(レイヤー1)
・アプリケーション層の機能とは
webブラウザやメールなどのアプリケーションごとのやりとりを規定している。
扱うデータをネットワークで転送するのに適したデータ形式に変換している。逆に受け取ったデータを私たちに理解できるように変換する。
データの転送処理などはアプリケーション層よりも下位の層が担当している。
TCPは分割されたデータの順番や欠落をチェックしており、Webサイトやメールなどのデータ損失が起こると困るようなアプリケーションで利用される。
UDPは分割されたデータの順番や欠落を保証していないが効率よく通信できるので、動画ストリーミングなどで利用されている。
DNS
・DNSとは
HTTP
・HTTPとは
・HTTPによるクライアントとサーバー間のやりとり
1. Webブラウザのアドレス欄にURLを入力、またはWebサイト内のリンクをクリック
2. URLやリンクの情報に基づいて、Webサーバーに対してデータを要求
3. Webサーバーは受け取った要求内容を解析
4. 解析結果より、要求されたデータをWebブラウザへと応答
5. Webブラウザは受け取ったデータを解析し、Webページとして表示
2と4のステップは、Webコンテンツの送受信部分で、ここでHTTPが利用される。
(OSI参照モデルを確認!)
HTTPリクエスト/HTTPレスポンス
・HTTPリクエスト
大きく分けて3つに分けることができる
-リクエスト行
Webサーバーに対してどのような処理をしてほしいかというリクエストの要求内容が書かれている
-メッセージヘッダー
-メッセージボディ
Webページ内のフォーム欄などに入力したテキストデータをWebサーバーに送るために疲れる(空の場合もある)
・HTTPレスポンス
大きく分けて3つに分けることができる
-ステータス行
受け取ったHTTPリクエストに対してWebサーバー内での処理結果
-メッセージヘッダー
Webサーバーの種類や、送信するデータの形式などが書かれている
-メッセージボディ
リクエストされたHTMLや画像などのデータを格納している
HTTPリクエストとHTTPレスポンスのやり取りを繰り返し行うことで、Webサイトを閲覧できる。
TCPによるデータ通信
HTTPのデータのやりとりを行うのがTCPの役割。さまざまなデータ転送時に利用されている。
TCPでは、クライアントとサーバーがお互いに通信できる状態かを確認し、「コネクション」を確立したうえでデータのやりとりを行う。
・3ウェイハンドシェイク
1. クライアントからの接続要求(SYN)
クライアントからサーバーに対して、接続を要求するSYNパケットというデータを送る。
2.クライアントに対して確認応答および、サーバーからの接続要求(SYN+ACK)
データを送信した後、必ず送信相手から確認応答を受け取ってデータの送信完了を確認。
この確認応答がACKパケット。サーバーがACKパケットを送信することで、接続可能であることを伝える。ACKパケットと同時にSYNパケットも送信してクライアントに対して接続を要求する。
3. サーバーに対して確認応答(ACK)
サーバーからの接続要求に対してクライアントはACKパケットを送信。
このように、お互いSYNパケットを送り、ACKパケットで応答することでお互いに通信可能であることを確認し、コネクションの確立が完了する。
コネクションの確立により、クライアントとサーバーが通信可能であると確認した上で、データのやり取りが開始される。
HTTP/2のやりかた
Webサイトの閲覧を快適にするためにデータのやり取りを高速化することを目的として、HTTP/2が登場した。
・ストリームによる多重化
HTTP/1.1にあるHTTPパイプライン機能では「HTTPリクエストどうりにHTTPレスポンスを返さなければならない」という制約があり、処理が遅かった。
HTTP/2での改良点
・バイナリ形式の利用
HTTP/1.1以前ではテキスト方式のフォーマットでやり取りを行なっていた。
HTTP/2ではより効率的にデータをやり取りするためにバイナリ形式のフォーマットを用いている。
・ヘッダー圧縮
HTTP/2ではヘッダー情報を圧縮することが可能。
ヘッダー情報には重複したデータも多いので、ヘッダー情報の中から差分だけを送るHPACKと呼ばれる圧縮方法を利用している。
・サーバープッシュ
HTTPSの仕組み
・HTTPSとは
・安全を確保する仕組み
-盗難防止
データを暗号化する
-改ざん防止
メッセージダイジェストの利用。メッセージダイジェストとは、あるデータから一意の短いデータ(ハッシュ値)を取り出す計算。
-なりすまし防止
Webサーバーに「SSLサーバー証明書」という電子証明書を配置しておき、接続時に検証することにより、Webサイトを運営する会社の身元を確認できる。
HTTPSのやりとり
1. 暗号化方式の決定
WebブラウザとWebサーバーの両方が利用可能な暗号方式を決める。
2.通信相手の証明
SSLサーバー証明書により、Webサーバーが正しい相手なのか確認。
3.鍵の交換
データ転送に利用する鍵を交換する。鍵はデータを転送するときの暗号化、暗号化されたデータを復元するときに使用する。
4.暗号化方式の確認
暗号化方式の最終確認作業。これが終わるとWebブラウザとWebサーバー間において暗号化通信が開始される。
ステートフルとステートレス
「ステートレス」とは状態を保持しないという意味。HTTPはリクエスト/レスポンスの1往復のやりとりが完結された処理で、ステートレスである。
逆に、状態を保持しておいて次の処理内容に反映させる方式を「ステートフル」という。
ステートフルなシステムの場合、保持した情報を元にクライアントごとに処理をする必要があるので、クライアントの数が多いと負担になってしまう。
Cookie クッキー
・Cookieのやりとり
・メッセージヘッダーの利用
Cookieの送信にはメッセージヘッダーが利用される。
・セッションCookie
しかし、盗まれると他人になりすましをされることがあるので、セキュリティの面を考えて、ショッピングサイトなどではセッションCookieがよく使われている。
セッション
WebブラウザとWebサーバーのやりとりで、一連の関連性のある処理の流れを「セッション」という。
・セッションの管理
Webサーバーへのアクセスは複数のWebブラウザから行われる。
・セッションIDのやりとり
しかし、これでは情報が漏洩する恐れがあるのであまり利用されていない手法である。
パーセントエンコーディング
URLで利用できる文字は決められていて、予約文字と非予約文字がある。
そのどちらでもない文字をURLで利用するには「パーセントエンコーディング」という方法で文字を変換する。
「%」に続けて、表記できない文字の文字コードを16進数で表す。