30代専業主婦の独学エンジニア挑戦ブログ

実務未経験の30歳の専業主婦が独学でエンジニアを目指すブログです

「Web技術の基本」を読みました(1)

勉強記録 

今日は「Web技術の基本」という本を読みました。イラスト図解式なので、内容がとてもわかりやすかったです。

重要そうなところをまとめました。(長いので記事を3つに分けています)

 

 

インターネットの標準プロトコル

ネットに接続された機器同士が通信するときに、あらかじめ決められたルールや手順のこと
 
TCP/IPとは
プロトコルの集まり。
TCP/IPは役割ごとに階層化されている。
トランスポート層TCP、インターネット層でIPが利用されている。
 

TCP/IP

TCP/OPは役割ごとに4つの階層(レイヤー)に分かれている
-アプリケーション層(レイヤー4)
- トランスポート層(レイヤー3)
-インターネット層(レイヤー2)
-ネットワークインターフェース層(レイヤー1)
 
・アプリケーション層の機能とは
webブラウザやメールなどのアプリケーションごとのやりとりを規定している。
扱うデータをネットワークで転送するのに適したデータ形式に変換している。逆に受け取ったデータを私たちに理解できるように変換する。
データの転送処理などはアプリケーション層よりも下位の層が担当している。
 
TCPUDP
データの転送処理をしているのは、トランスポート層TCPUDPといったプロトコル
TCPは分割されたデータの順番や欠落をチェックしており、Webサイトやメールなどのデータ損失が起こると困るようなアプリケーションで利用される。
UDPは分割されたデータの順番や欠落を保証していないが効率よく通信できるので、動画ストリーミングなどで利用されている。
 

DNS

DNSとは
ドメインIPアドレスに変換する仕組み。(IPアドレスは覚えにくく扱いにくいので、ドメインと呼ばれる文字列を利用している)
DNSのサービスを提供するサーバーをDNSサーバーという。
DNSの仕組みは電話帳と似ており、DNSを利用することでドメインからIPアドレスを知ることができる。
複数のDNSサーバーがツリー状の階層構造をとり、分散処理をして膨大なドメインを効率よく処理している。
URLにドメインが指定してある場合には、必ずDNSサーバーにIPアドレスの問い合わせをしている。
 
 

HTTP

・HTTPとは
WebブラウザとWebサーバー間でデータのやりとりの手順や内容を決めているプロトコル
 
・HTTPによるクライアントとサーバー間のやりとり
1. Webブラウザのアドレス欄にURLを入力、またはWebサイト内のリンクをクリック
2. URLやリンクの情報に基づいて、Webサーバーに対してデータを要求
3. Webサーバーは受け取った要求内容を解析
4. 解析結果より、要求されたデータをWebブラウザへと応答
5. Webブラウザは受け取ったデータを解析し、Webページとして表示
 
2と4のステップは、Webコンテンツの送受信部分で、ここでHTTPが利用される。
HTTPリクエストを送るとき、データをいきなり送らず、TCPプロトコルの3ウェイハンドシェイクでコネクションが確立される。
OSI参照モデルを確認!)
 

HTTPリクエスト/HTTPレスポンス

・HTTPリクエス
大きく分けて3つに分けることができる
-リクエスト行
Webサーバーに対してどのような処理をしてほしいかというリクエストの要求内容が書かれている
-メッセージヘッダー
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ではTCPコネクション上に「ストリーム」という仮想敵な通信経路を複数つくり、それぞれのストリーム内でHTTPリクエストとHTTPレスポンスのやり取りができるので、高速。
 

HTTP/2での改良点

・バイナリ形式の利用
HTTP/1.1以前ではテキスト方式のフォーマットでやり取りを行なっていた。
HTTP/2ではより効率的にデータをやり取りするためにバイナリ形式のフォーマットを用いている。
 
・ヘッダー圧縮
HTTP/2ではヘッダー情報を圧縮することが可能。
ヘッダー情報には重複したデータも多いので、ヘッダー情報の中から差分だけを送るHPACKと呼ばれる圧縮方法を利用している。
 
・サーバープッシュ
HTTPリクエスト内容をもとにWebサーバー側で必要なファイルを判断して、事前にWebブラウザに送信することができる。
 

HTTPSの仕組み

HTTPSとは
HTTP over SSL/TLSの略で、HTTPの通信で、暗号化方式であるSSLTLSを利用することでWebサイトを安全に使うことができる。
 
・安全を確保する仕組み
-盗難防止
データを暗号化する
-改ざん防止
メッセージダイジェストの利用。メッセージダイジェストとは、あるデータから一意の短いデータ(ハッシュ値)を取り出す計算。
-なりすまし防止
Webサーバーに「SSLサーバー証明書」という電子証明書を配置しておき、接続時に検証することにより、Webサイトを運営する会社の身元を確認できる。
 

HTTPSのやりとり

SSL/TLSハンドシェイク
1. 暗号化方式の決定
WebブラウザとWebサーバーの両方が利用可能な暗号方式を決める。
そのほかにも、HTTPSで利用されるSSL、またはTLSのバージョンやメッセージダイジェストの方式も決定する。
 
2.通信相手の証明
SSLサーバー証明書により、Webサーバーが正しい相手なのか確認。
 
3.鍵の交換
データ転送に利用する鍵を交換する。鍵はデータを転送するときの暗号化、暗号化されたデータを復元するときに使用する。
 
4.暗号化方式の確認
暗号化方式の最終確認作業。これが終わるとWebブラウザとWebサーバー間において暗号化通信が開始される。
 

ステートフルとステートレス

「ステートレス」とは状態を保持しないという意味。HTTPはリクエスト/レスポンスの1往復のやりとりが完結された処理で、ステートレスである。
逆に、状態を保持しておいて次の処理内容に反映させる方式を「ステートフル」という。
 
ステートフルなシステムの場合、保持した情報を元にクライアントごとに処理をする必要があるので、クライアントの数が多いと負担になってしまう。
 

Cookie クッキー

Cookieのやりとり
Webサーバーへ接続してきたWebブラウザに、Webブラウザに保存してもらいたい情報をCookieとして送る。
Webブラウザはそれを保存しておき、次にWebサーバーに接続するときに保存していたCookieを送信することで、Webサーバーは接続してきた相手を識別できる。
 
・メッセージヘッダーの利用
Cookieの送信にはメッセージヘッダーが利用される。
WebサーバーはHTTPレスポンスに「Set-Cookie」ヘッダーを含めて送信、WebブラウザはHTTPリクエストに「Cookie」ヘッダーを含めることで送信できる。
 
・セッションCookie
有効期限(Expires属性)が設定されていないCookieは、Webブラウザが閉じられると同時に削除される(セッションCookie)。
有効期限が設定されたCookieは有効期限が来るまでWebブラウザの識別に利用される。
しかし、盗まれると他人になりすましをされることがあるので、セキュリティの面を考えて、ショッピングサイトなどではセッションCookieがよく使われている。
 
 

セッション

WebブラウザとWebサーバーのやりとりで、一連の関連性のある処理の流れを「セッション」という。
 
・セッションの管理
Webサーバーへのアクセスは複数のWebブラウザから行われる。
そのため、あるWebブラウザからの処理を関連性のある一連の処理(セッション)として扱いたい場合は、Cookieを用いてセッションを管理できる。
 
セッションIDはWebサーバーで生成され、Cookieに含めてWebブラウザに送信される。
セッションIDを受け取ったWebブラウザは、次回以降CookieにセッションIDを含めて処理することで、Webサーバーとのセッションを維持する。
 
・セッションIDのやりとり
Cookieが使えないWebブラウザもあるので、URLにセッションIDを埋め込む方法や、Webページ内のフォームに埋め込む手法がある。
しかし、これでは情報が漏洩する恐れがあるのであまり利用されていない手法である。
 

パーセントエンコーディング

URLで利用できる文字は決められていて、予約文字と非予約文字がある。
そのどちらでもない文字をURLで利用するには「パーセントエンコーディング」という方法で文字を変換する。
「%」に続けて、表記できない文字の文字コードを16進数で表す。