HTTPリクエスト&レスポンス
2020/08/31 06:17
HTTPリクエストとレスポンスについて動画でわかりやすく解説しています。基本的なイメージについて絵を描きながら、プロトコルという言葉やサーバーってなんなの?のような話までWEBのシステム開発を勉強し始めた人向けに提供しています。後半は開発用のサーバーを使って、サーバーがブラウザからどんな通信を取得しているのかについてログを確認したりしています。20分程度の動画2本立てです。
はじめに
インターネットブラウザを使ってインターネットの情報を見る際に起きていることを少しだけ掘り下げました。
- URLをブラウザのアドレスバーに入れると何が起こるのか
- ハイパーリンク(以下リンク)をクリックすると何が起こるのか
のような事が気になる方には有意義な内容が提供できていると思います。
内容
リンクをクリックした時に起こるHTTP通信
URLをブラウザのアドレスバーに入れたり、リンクをクリックしたりすると、以下のような流れで次の画面を見る事ができます。
- URLにある、ホスト(大抵は何かのサーバがゴールにいます)に向けて通信のリクエストが発生します。
- リクエストを受け取ったホストが何かの処理をします(内容はホストの中で行われる処理によって決まります。例えばファイルの内容を返却したり、ホストで行ったプログラミングの処理の結果を返却したりします)
- 2で起きる返却をレスポンスと言います(リクエストがブラウザから送られた場合、HTMLがレスポンスに含まれることは多いです)。
- レスポンスを受け取ったブラウザが、内容を表示します。
- リクエストを送るとレスポンスが返ってくるまで、通信を待つというルールがあります。
言葉
サーバとクライアント
サーバに対して通信を介して処理を依頼するのがクライアントです。大抵はネットワークのどこかに待っているサーバに対して、クライアントから通信を開始して、何かの処理を依頼し、その結果を受け取って表示するなどしています。
今回の内容ではMacやWindows上からインターネットブラウザを使って通信を起こすので、インターネットブラウザはクライアント(ソフトウェア)ですし、広くはそのマシン自体をクライアント(マシン)と言う場合もあります。
クライアントが狭義にはソフトウェア、広義にはマシンの意味になるのと同様に、サーバも本質的な実体はソフトウェアであり、サーバソフトを設置しているマシンをサーバと呼称している場合もあります。
サーバソフトウェアは大抵はデーモンとも呼ばれる、マシンが起動すると同時に起動して、バックグラウンドで依頼を待ち続けるソフトウェアです。なので、HTTPプロトコルを待ち受けるサーバーソフトにhttpdというd
がついていたりします。同様に sshd
や ftpd
のようにd
でデーモンの意味を示します。
プロトコル
インターネットブラウザが起こす通信はHTTPというプロトコルのルールに則っています。プロトコルという言葉は通信規格のような意味で、通信をどういうルールで成立させるかの仕様が決められています。HTTP以外にもプロトコルは色々とあって、SMTPやFTP、SSHもプロトコルです。
ブラウザの持つ機能
- HTMLのビューアー(ここではCSSやJavaScriptを解釈する意味も含めてビューアーと呼称します) 強調しておきますが、単純にHTMLを表示する機能しか持っていないと思うと良いでしょう。RubyやPHPのプログラムを実行するような機能は一般的には無いと思ってください。
- JavaScriptの実行環境(最近変化しつつありますが、ブラウザ上で動作するほぼ唯一のプログラミング言語としてJSが君臨してきました)
- HTTP通信をしてサーバーから情報を取得してくる
- ローカルマシン(ブラウザを実行しているマシン)のファイルの内容を取得してくる