9月17日(木)2コマ目

 今日、やったこと

HTTP

今日のホワイトボード

HTTPは

Webアクセスの際に使うプロトコル。

クライアント<=>サーバーでのリクエスト、レスポンスのフォーマットやリクエスト時に使うメソッド、レスポンスに使う処理結果通知(ステータスコード)などを定義している。

図 HTTPでやり取りされる内容


CurlでGETコマンド送信

通常はWebブラウザにURLを入力すると、WebブラウザがサーバーにGETコマンドを送信するが、curlコマンドでGETコマンドをサーバーへ送信し、やり取りを確認する。

GETコマンドはリンククリック等でホームページを表示させる際に使われる。

図 curlでGETコマンド送信

演習では

Webサーバー(172.16.8.10)上のgettestフォルダにあるindex.htmlをGETコマンドでリクエスト。

図 curl http://172.16.8.10/gettest/index.html


クライアント=>サーバー

HTTPのフォーマットに従ってリクエストライン、ヘッダーフィールドが作成される。

メッセージボディはパラメータがないためなし。

リクエストラインからGETコマンドでリクエストしていることがわかる。

 GET /gettest/index.html HTTP/1.1

サーバー=>クライアント

HTTPのフォーマットに従って、ステータスライン、ヘッダーフィールド、区切りの空白行、メッセージボディが送信される。

ステータスラインのステータスコードから正常終了だとわかる。

 HTTP/1.1 200 OK

メッセージボディにはリクエストしたindex.htmlが入っている。


curlでPOSTコマンド送信

POSTコマンドは、ボタンクリックでWebブラウザにて入力した内容をサーバーに送信するときに使われる。

図 curlでPOSTコマンド送信

演習では

Webサーバー(172.16.8.10)上のformtestフォルダにあるshowall.phpをPOSTコマンドでリクエスト。そのさい、パラメータも送信。
なお、showall.phpは
  • PHP言語で書かれたプログラム
  • リクエスト時に送信されるパラメータを取得し、表形式で出力する
です。
図 curl http://172.16.8.10/formtest/showall.php -XPOST -d "val1=abcdefg"


クライアント=>サーバー

リクエストラインにはPOSTコマンド
 POST /formtest/showall.php HTTP/1.1

メッセージボディ部の
 12 out of 12 Bytes
から12バイト送信したことがわかる。
この12バイトは一緒に送信したパラメータ「val1=abcdefg」。

サーバー=>クライアント

GETコマンドと同じようにステータスラインから正常終了だとわかる。
 HTTP/1.1 200 OK

メッセージボディにはshowall.phpが処理した結果出力されるHTMLが入っている。


今どきのWebアクセスは暗号化通信

HTTPではなく、暗号化されたHTTPSを使うのが一般的。

HTTPSは

  • HTTP+SSL(Secure Socket Layer)
  • 暗号化担当はSSL
  • パケット中のHTTP部(TCPヘッダより後)を暗号化

です。

図 HTTPS


コメント

このブログの人気の投稿

6月25日(木)1コマ目(A班)、2コマ目(B班)

5月29日(金)2コマ目(B班)、3コマ目(A班)

9月3日(木)1コマ目