分12今回は前回に続いて,プロトコルについてです。前回はSMTPでしたが,今回はおそらく最もメジャーなプロトコルであるといっても過言ではないHTTPについてです。「デカいRFC」の読み方まずHTTPにはバージョンとして1.0と1.1があります。実質,今はほぼ100%のサイトが1.1だと思って良いでしょう。HTT1.1はRFC2068で提唱され,RFC2616にObsoleteされています。RFC2616(と,RFC2616をUpdateしているRFC2817とRFC5785)を読めば,HTTP1.1のことが把握できます。いってもでかいRFCなので,読むのはちょっと大変かもしれません。これくらいポピュラーなRFCになると日本語訳もたくさんあるので,原文と一緒に日本語訳も読むと,理解が速いかもしれません(訳だけ読むのはあまりオススメできません⁠)⁠。RFCを読むとき(特にプロトコルに関するRFCを読むとき)は,BNF記法の知識が必要になります。Form)の略で,正規表現のような,任意の文字列を表現するのに定められた記法です。BNF)といった発展形もあります。RFCではABNFがよく使われます。BNFを知ることはプロトコルを覚えることにも役立つので,ちょっと例を見てみます。1*DIGITとあります。""で括られているのはリテラル(文字列)です。*は繰り返し,DIGITは数字を意味するシンボルです。上記のBNFは,HTTP-Versionは「HTTP/数字1個以上.数字1個以上」と定義しているということになります。BNF記法自体,その定義がRFC内に書いてあるので,それを読めば最初はちょっと苦労するかもしれませんが,それほど苦労せず読めるようになると思います。RFC2616だと,2.1節にABNFの定義が記述してあります。HTTP/1.1の2大特徴さて,もっとRFC2616を読み進めてみます。19.6節に,HTTP/1.0との違いが簡単にまとめられています。HTTP/1.1の大きな特徴のひとつに,HOSTヘッダのサポートがあります。virtualなWebサーバをサポートするためのものです。basedか,そもそもバーチャルに対応していないという時代がありました。virtualという手法が考えられ,一気に広まりました。virtualなWebサーバとは,HOSTヘッダという「何々という名前のWebサーバに接続していますよ」という情報を宣言するためのヘッダによって,返却するコンテンツを制御するものです(簡単に言ってないような...⁠)⁠。basedでもたせているとします。接続したクライアントがHOSTヘッダで,どちらのサイトのホスト名を伝えるかによって,サーバはそれに適したコンテンツを返却します。www.barbaz.comであればwww.barbaz.comのコンテンツを返すということです。basedというのは,あるサーバに複数のIPをもたせてWebサーバをbindingしておき,どのIPに接続してくるかによって返却するコンテンツを制御するというものです。RFC2616の19.6.1.1には以下のように書いてあります。URIs.すなわち,HTTP/1.1の場合にはHOSTヘッダは必ずサポートしなければいけない,していないとHTTP/1.1非準拠である,ということになります。ひとつ,HTTP/1.1の大きな特徴に,Keep-Aliveの挙動があげられます。こちらは19.6.2に下記のように書いてあります。closeという新しいキーワードが作られました。virtual対応とKeep-Aliveのデフォルトの挙動)です。virtualがあるが故に,HTTPを手で打てるというのが結構重要なのです(インフラエンジニアにとっては,ですが⁠)⁠。いうと,ブラウザでWebの検証をする場合には,ブラウザはDNSで名前解決をして,その解決したIPに接続にいきます。DNSに登録されている名前は,接続先IPのAレコードであると同時に,HOSTヘッダで伝えられるホスト名でもあるのです。ところが,検証などをしている時には,この2つを連動させたくないということがよくあります。DNS側で,Aレコードの答えをクエリ元によって変化させるという解決もありますが,それよりは手でHTTPを話せるほうが楽でしょう。サイトのレンダリングの結果を見たいときには手でHTTPプロトコルを話しても意味がないですが。アスキー,So-netなどでネットワーク,サーバエンジニアを経験。オン・ザ・エッヂ(現ライブドア)のデータセンターである「データホテル」を構築,運営。ZETA株式会社)を設立,代表取締役就任(現任)。CX」シリーズとして検索エンジンやレコメンドエンジンを開発,販売している。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。業務を改善する情報共有の仕掛け~DevOpsの実現,RPAの導入に向けて~ソフトウェア開発の業務改善をテーマに,DevOps実現の手順やそれを助けるツールとの連携,RPAによる社内ドキュメントの管理や効率化について解説します。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。