2021年5月14日金曜日

WWWブラウザになってプロトコルスタックを理解する

大学1年生向け「情報」の授業で,通信プロトコルの解説をしていて,そのなかで,階層的になっていることでわかりやすくなっていること,相互運用性を確保していることなどを説明している.この考え方,ひとたびわかってしまえば「なるほどよく考えられているなあ」と,すっと納得できる概念なのだが,初見では,分かりづらいのかもしれない(OSIに文句を付けるつもりはないが,7階層モデルがさらに話をややこしくしているように思う).

TCP/IPのモデルによる説明

身近な通信を題材にするのが少しでもわかりやすく説明する秘訣らしい.というわけで,ウェブサイトへのアクセス,HyperText Transfer Protocol(HTTP)を例にとって,HTTP以下の階層を具体的に説明している(図).

とくにピンと来ないのは,それぞれの階層の関係性がよくわからないせいらしい(上位と下位を入れ替えたらどうなりますか?などという質問すら出る).実際にはアプリケーションやミドルウェアがそれぞれの関数を呼び出して,下の階層のサービスを利用しているのだということがわかれば,あとはすんなり理解できるはずなのだが,経験に裏打ちされていないので,そこが理解しづらいと感じるようだ.

「WWWブラウザになる」デモ

そこで,ウェブサーバに「手で」アクセスするデモを行う.HTTPによるWebサーバとの通信を理解させるのにtelnetを用い,「telnet servername.serverdomain 80」と実演するわけだ.このデモンストレーションは確かに効果がある.このデモを行うと,面白かったとか,感動したとか,前向きな反応が多く得られる.

時間があれば,そこで何が行われているのか?を事細かに説明するとよかろう.すなわち,次の図で,通常は左側のように,WebブラウザにURLを入力すると,ソフトウェアの内部でHTTPのコマンドが発行され,プロトコルスタックを辿ってデータが通信される.一方,telnetによるデモンストレーションは,ブラウザ部分をtelnetが肩代わりしてTCPを直接話せるようになるので,人間がHTTPのコマンドを「手で」入力して発行しているのだよ,という説明である.

このように丁寧に説明すると,学生の理解も早い.学生が提出した課題とそれに対するフィードバックメッセージの例を紹介する.彼はきちんと理解できたことを確認できるだろう.

学生のコメント:
TCPとはHTTPと似たようなもので メッセージ等を送ったり受けっとたりするための ”通路” のようなものを生み出すプロトコルと捉えてよろしいでしょうか?

教員のフィードバック:
そうです.TCPは汎用的な ”通路” を作りだします.WebブラウザとWebサーバはその通路を使って,「GET / HTTP/1.1」(サーバはん,あんじょう頼んまっせ)→「HTTP/1.1 200 OK ... 」(まかしとき!レスポンスはこうやで!)というようなやりとりをするわけですね.そのやりとりの取り決めがHTTPというプロトコルというわけです.

このあたりの教育に携わっている皆さんがいらっしゃたら,ぜひ,お試しください.

0 件のコメント:

コメントを投稿