0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

「web ページを見る」ということ

Last updated at Posted at 2023-07-25

最近、身の回りで、webフレームワークを学んでいるけど、そもそも「web」とか「HTTP」わからない、みたいな、そんな話があって本記事を記載しました。

そのような方々に、少しでも参考にしていただければと思います。

もくじ

  • はじめに
  • この記事のゴール
  • web ページとは
  • 「web ページをみること」の第一歩
  • TCP/IP とは
  • HTTP とは
  • web はおまじないではない
  • 終わりに

はじめに

この記事では、基本的な HTTP の動きを、ざっくり理解してもらうことを目標としています。

昨今の web 開発では、基本的にはライブラリやフレームワークなどは当たり前に導入されています。そのため、新卒で入社すると、フレームワークの使い方を先に学ぶために、そもそも web ページとは?HTTP とは?という、一番重要と思っている部分が蔑ろ(早期戦力化のため?)にされているように思います。(個人経験談です)

そのため、フレームワークに依存しない素の HTTP を学び、基礎的な部分の知識を習得することを目指します。

この記事のゴール

以下を目指します。

  1. web ページを見ること、はおまじないではないことを知る
  2. HTTP についてざっくりと知る

全体のイメージを掴み、「web ページを見ること」がおまじないではなく、HTTP という確固たる技術のもとに動いている、ということを知っていただきたいです。

そのため、ステータスコードや HTTP メソッドなどはざっくりとしか触れません。また、web アプリケーションについても触れません。

それでは本題に入ります。


web ページとは

safari とか、Chrome とかで見ている、これ、今ここ。この qiita のページも web ページですね。

普段から見ている通販サイトから、チケットの販売サイト、会社のコーポレートサイトなど、ブラウザを用いて閲覧しているページの全てを指します。

「web ページをみること」の第一歩

web ページをみること、これには普段意識しませんが、HTTP(Hypertext Transfer Protocol) という通信のもと、クライアントとサーバーが同じルールで通信を行います。

「Protocol」は規約を意味し、通信のルールのことです。

HTTP 通信の全体像を示します。

web1.png

まず、以下の二つの存在から成り立ちます。

  • クライアント
  • サーバー

そして、その 2 点間の通信は、以下の二つで成り立ちます。

  • リクエスト
  • レスポンス

このように、

  • 「クライアント」と「サーバー」

の間で、

  • 「リクエスト」と「レスポンス」

を行うことで、「web ページをみること」が成り立ちます。ここでいう「サーバー」は。HTML 置き場、くらいのニュアンスとします。

改めてになりますが、クライアントとサーバーは、「HTTP」というルール(プロトコル)のもとに通信を行います。

ここから、この「web ページをみること」について、さらに深堀をしていきます。


TCP/IP とは

とてもとても大切なトピックですが、ここでは、「宛先の端末(IP アドレス)の、宛先のプログラム(ポート)までの通信を行う仕組み」 、くらいとして、クライアントとサーバーを繋ぐ通信の仕組みとご理解ください。

TCP/IP もとても重要なプロトコルです。興味があれば学習してみてください。

通信の全体像については、「OSI 参照モデル」というワードで検索してみてください。

HTTP とは

HTTP とは、web ページの閲覧に使用されるプロトコルです。

クライアントからの「リクエスト」を受けると、サーバーが「レスポンス」を返す、仕組みとしてはこれだけです。

みなさまが、普段ブラウザで web ページを開いた時に

  • ブラウザが URL の宛先に「リクエスト」を送り、
  • 受け取ったサーバーが「レスポンス」を返す、
  • レスポンスを受け取ってブラウザが画面を表示する

ということが起こる、基本的にはそれだけです。

それでは一つずつ見ていきます。

リクエスト

ブラウザで web ページを開いた際に、クライアントがサーバーに送信する文字列です。

以下がその例です。

GET /index.html HTTP/1.1
Host: localhost:3000
Connection: keep-alive

それぞれ

req.png

という名称があり、

  • リクエストライン
    • リクエストの最初の行
    • HTTP メソッド(例は 「GET」、リソースの取得を示す)
    • ターゲット(例は 「/index.html」、そのリソースの取得するリクエストであることを示す)
    • HTTP バージョン(HTTP/1.1)
  • ヘッダ
    • リクエストラインの次の行
    • リクエスト自体の情報、クライアントの情報などを記載
  • 空行
    • ヘッダの終わりを示す。(正確には、2 回連続の CRLF)
  • ボディ
    • サーバーになんらかの情報を送信する際に使用する

という意味のある文字列です。

HTTP メソッドについて、他にどのようなものが、どのような目的で存在するか調べてみてください。

なお、web ページの閲覧における「リクエスト」は、ブラウザが送ってくれています。

レスポンス

サーバーがクライアントからリクエストを受け取って、クライアント側に返す文字列です。

以下がその例です。

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 1000

<html>
<body>
<h1>サンプル</h1>
</body>
</html>

それぞれ

res.png

という名称があり、

  • ステータスライン
    • レスポンスの最初の行
    • HTTP バージョン(HTTP/1.1)
    • ステータスコード(例は「200」 リクエストの処理の結果を示す。200は成功)
    • ステータステキスト(OK)
  • ヘッダ
    • ステータスラインの次の行
    • リクエスト自体の情報、サーバーの情報などを記載
  • 空行
    • ヘッダの終わりを示す。(正確には、2 回連続の CRLF)
  • ボディ
    • web ページの閲覧においては、画面に描画する HTML 自体

という意味のある文字列です。

ステータスコードについて、他にどのようなものが、どのような目的で存在するか調べてみてください。

この記事では触れませんが、リクエストによってレスポンスを変えて、機能を実現したものを、広義で web アプリケーションといいます。

レスポンスを受け取ると

ブラウザがリクエストに対するレスポンスを受け取ると、レスポンスの

  • ステータスコードが「200」だった
    • リクエストの応答が正常に返ってきたのか
  • ヘッダ
    • こんな情報なのか
    • Content-type が「HTML」で、HTML が返ってきたのか
  • ボディ
    • Content-type が「HTML」だったから、これを画面に描画するのか

一例として、このような情報をもとに、画面に web ページが描画されます。

これが 基本的な HTTP であり、web ページを見ること、の第一歩です。

web はおまじないではない

ここまできて、上記で記載した、

web ページを見ること、はおまじないではないことを知る

について、ご理解いただけましたか。

改めて絵にすると、このような全体像です。

all.png

再三になりますが、「クライアント」と「サーバー」からなり、その2点間で、リクエストとレスポンスのやりとりをする、これが HTTP であり、「web ページを見ること」の全体像です。

CSS や JavaScript、SPA、API、Web アプリケーションと、そのためのライブラリやフレームワークなど、web の世界では、まだまだ内容は足りませんが、第一歩として、「web ページをみること」を説明できるくらいの知識は必要かと思います。

また、ライブラリやフレームワークを導入して、どれだけ開発を便利に(複雑に)しても、根底で動いている技術は HTTP であり、上記で説明した内容になります。

終わりに

この記事は、web を学び始めた方、フレームワークから初めたため根底の理解が疎かになっている方に向けて、そもそも「web ページを見ること」ってなに?から、HTTP の基礎を知っていただくために記載しました。

実際のサービスの開発、テスト、運用保守では、プログラムの正しさだけでは対応しきれない事象が起こり、往々にして、ベーシックな知識が求められることがあるように思います。

そのため、この記事から少しでも、HTTP の全体像をご理解いただき、(イケてる技術だけでなく)基礎を大切にしていただけると幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?