【FJORD】HTTPの基本
本日はHTTPの基本をやります!
目次
1.HTTPとは
HTTPは HyperText Transfer Protocol の略ですよ、と言ったところで、プロトコルとは…?ってなりますね😆笑
sshの記事にも少しだけ出てきましたので、ちょっと脱線しますが、プロトコルの説明をします。
IT用語としてのプロトコルとは、通信をする際の約束事項のことだそうです。
データをやりとりする手順を決めることで、異なるコンピューター同士でも正しく通信ができるようになっているそうです。
IT用語でなくても、英単語として「(外交との)儀礼、条約原案、協定」などといった意味があるそうです。
ここまでくると HyperText Transfer Protocol がなんとなく分かってきました😊
HTTPとは、Webのサーバーとクライアント(ブラウザ)の間で通信をする時の取り決めです。
sshと違って、通信は暗号化されません!
HTTP接続は、例えば以下のような感じになります。
このやりとりの構成は以下のようになっています。ヘッダとメッセージボディの間には1行の空欄があります。
2.ポート
ウェルノウンポートについては先程も出てきたsshの記事でも少し触れています。
sshでは初期設定がポート22でしたが、HTTPはポート80です。
注意点は、同じWebページに見えても、http
はポート80でhttps
はポート443です。
今回はhttp://
から始まるページに対して、ポート80で接続します💻
なお、https://
から始まるページに対してポート80を指定するなど、ポートを間違えて接続しようとすると、Connection closed by foreign host.
というメッセージが出てきて接続が切れます😖
3.telnetでHTTPに接続
3-1. telnetインストール
実際のHTTPの通信を見てみるために、telnetという通信プロトコルを使ってみます。
まずtelnetをインストールします!(Linuxでもいいのですが、今回はmacにインストールしています)
既にHomebrewをインストールしているので、brew install telnet
でインストールできます😆
3-2. HTTP接続
インストールしたtelnetを使ってHTTP接続をしてみます。
telnet
を実行すると、telnetを起動することができます💡
コマンドを入力する行の先頭部分がtelnet>
に変わりましたね!
今回使うhttp://
から始まるページはhttp://example.comにします。
open [ホスト名] [ポート番号]
で接続ができます🙂
今回の場合はopen http://example.com 80
ですね🖊
ここまでtelnet
→open [ホスト名] [ポート番号]
としてきましたが、これを1行にまとめてtelnet [ホスト名] [ポート番号]
でもOKです👌
ここから、先程図で示したクライアントとサーバーのやりとりが開始します!!
方法のひとつとして、GET
メソッドをご紹介いたします。
3-3. GETメソッド
GETメソッドはクライアントがサーバーから情報を取得する時に使います。
まず最初はクライアント側からです。
これを入力するには、リクエスト行(1行目)をGET / HTTP/1.1
として、ヘッダ(2行目以降)にHost: [ホスト名]
とします。
GETメソッドにはメッセージボディ(補足事項のところ)はいらないので、最後に空欄行を1行入れたら終了です。
するとサーバー側から返事が返ってきます!✨
これを図にすると以下のような感じです。
ちなみに、GET
のあとの/
はトップページを指しているので、トップページより下層のページに接続する際は、URLのドメイン名以降を/
に続けて書くと指定したページに接続できます💪
例えばURLがhttp://domain.com/contents
だったら、リクエスト行はGET /contents HTTP/1.1
、ヘッダはHost: domain.com
になります。
本日は以上です!