はじめに
「プロになるためのWeb技術入門〜なぜあなたはWebシステムを開発することができないのか〜」を読んで、エンジニアであるならば必ず説明できないといけない基礎事項について簡単にまとめてみました。Webアプリケーションの勉強を始めたばかりのエンジニア一年生の方などの理解の助けになることができれば幸いです。
リクエストとレスポンスとは?
リクエストとはWebクライアントからWebサーバに対する要求のことを、レスポンスとはWebサーバからWebクライアントに対する応答のことを指します。ここでいうWebクライアントとは私たちが日々利用しているGoogleやSafariなどのwebブラウザのことを、WebサーバとはPCやスマホなどからの要求に対して適切なデータを提供することができるコンピュータのことを意味しています。
例えば、私たちがこのWebページを見たいなと思い、検索エンジンにURLを入力し、Enterキーを押したとします。サーバはその要求に対して適切なHTMLファイルを探し出し、クライアントであるあなたのブラウザにそのURLと紐づいたWebページを表示させます。この例の中で、検索スペースにURLを入力し、Enterボタンを押すことがリクエストと呼び、HTMLファイルをクラインアントに返す動きをレスポンスと呼びます。
プロトコルとは?
プロトコルとはWebサーバとWebクライアントが情報をやり取りする際の取り決めのことを言います。
プロトコルと一口に言っても、ファイル転送のためのプロトコルであるFTPやメール転送のためのプロトコルであるSMTP、現在最も幅広く利用されており、HTMLファイルのやり取りをするために定められたHTTPなど様々なものがあります。
さらに上記で挙げてきたプロトコルはある土台となるプロトコルによって支えられています。そのプロトコルの名をTCP/IPと言います。TCP/IPとは私たちの生活には欠かせない郵便局の役割ととても似ています。私たちが手紙を送る際に住所と宛名を書いてポストに投函すれば、郵便局の方々が届けてくれます。同様にインターネットの世界でもIPアドレス宛先さえ指定すれば、TCP/IPが責任を持って情報を届けてくれます。具体的にはHTTPリクエストなどの情報をパケットと呼ばれる小さな単位に分割し、送信して、受け手側のTCP/IPで分割された情報を組み立ててから、Webサーバに渡しています。
ステートフルとステートレスとは?
ステートフルとは状態を持っているということを意味であり、一方でステートレスとは状態を持たないということを意味しています。
例えば、1000円カットと高級美容室の違いについて思い浮かべてください。1000円カットでは、回転率を最優先に営業をしているため、お客様1人1人の記録を残していないお店がほとんどだと思います。つまりお客様は切ってもらうたびに希望の髪型を伝えなければなりません。言い換えれば、お客様の記録を取っていないため、希望の髪型を毎回ヒアリングしなければならない、つまりステートレスであるというわけです。その一方で、高級美容室ではどのようなお客様がどんな髪型をオーダーし、どのスタッフが対応したのかなどを記録していることが当たり前となっています。そのため、次回来店した際に「いつもの髪型でお願いします」と伝えれば、希望通りの髪型にしてもらうことができるはずです。つまりお客様が前回オーダーした髪型の記録を残すことによって、お客様に対して余計な手間をかけさせないことを可能にしているのです。お客様の状態を美容院側が把握している、つまりステートフルを基本としているので、このようなサービスを実現することができたことになります。
上記で挙げたような例はプロトコルにも当てはまります。プロトコルでいうステートフルとは、リクエストに伴い状態が変わっていく、つまり状態を持ち続けるプロトコルということを意味しています。例えば、FTPがそれにあたります。 FTPでは、ユーザー側がまずログインしてサーバ側に許可を貰わなければ、コマンドを受け付けてもらえません。これは前回のリクエスト結果を踏まえて、サーバとユーザーがやり取りを行なっているためです。他方で、ステートレスプロトコルとはFTPのような通信の手順を必要とせず、状態というものを持たないプロトコルのことを言います。前回のリクエスト結果に関わらず、1回のリクエストで用事が済むHTTPはステートレスのプロトコルであると言えます。
クッキー
クッキーとはWebブラウザに状態を持たせ、WebアプリとWebサーバの間で情報交換をできるようにした技術のことを言います。具体的にどのようにしてクッキーが利用されているかというと、WebサーバからWebブラウザへHTTPレスポンスのヘッダを利用して小さな情報が送られます。その情報は名前=値という組み合わせで送信されており、これがクッキーと言われるものとなっています。Webサーバからクッキーを受け取ったwebブラウザは何かしらリクエストを行う際に、それをHTTPリクエストヘッダに入れて、送り返します。そうすることによって、Webサーバ側は誰がアクセスしてきたかを把握することができるようになります。
身近な例でいうと、ログインしていない状態でURLを入力し、ショッピングサイトのホームページに移行しようとしてもログインすることはできません。これはログインしてWebサーバからパスワードなどをクッキーを取得してないことが理由です。

引用:https://ponsuke-tarou.hatenablog.com/entry/2020/09/14/225825
ポート番号
ポート番号とは受信した情報がどのようなプロトコルで、どのアプリケーションが処理すべきかをホストサーバ内で識別するための番号のことを言います。インターネット上で情報を届けるためには、IPアドレスと上記のポート番号を同時に指定する必要があります。ただし、HTTPなどよく利用されているプロトコルについては使用するポートを取り決められているため、ユーザー側が意識をしなくても問題なくWebサイトを閲覧することができます。このように代表的なプロトコルで使用されているポート番号のことウェル・ノウン・ポートと言います。
ポート番号 | プロトコル |
---|---|
20,21 | FTP(ファイル転送 |
22 | SSH(暗号化されたリモートコンピュータとの汎用通信) |
23 | Telnet(リモートコンピュータとの汎用通信) |
25 | SMTP(メール送信) |
53 | DNS(ホスト名解決) |
80 | HTTP(Webブラウジング) |
110 | POP3(メール受信) |
443 | HTTPS(暗号化されたHTTP) |