ネット基盤とHTTP/3への道

Blog Single

Overview

インターネットがインフラとして盤石な世の中となり、ますます通信というものの質の向上が要求されてきております。
動画を見る、ゲームをする、音楽を聴く、と言った娯楽から、銀行の送金や通話など、恐らくこの瞬間にもネットがない世の中となった場合、世界の経済は1日と持たず、大混乱となるでしょう。
しかし、これだけの恩恵を受けている私たちは、どれだけその通信のことを理解しているでしょうか。
そんなことを理解していなくても、実際に困ることはないとは思いますが、やはり自分達の生活に深く関わっているだけに、ここは最新のニュースとともに紐解いて行きたいと思います。

これで分かる”パケット”

ではでは早速、みなさんが普段使っているインターネットですが、どのような方法で情報がやりとりされているかご存知でしょうか。
ネットで検索しても小難しいワードが出てきて、あまりピンと来なかったり、自分はエンジニアではないからと、そっと閉じてしまったり。ここではかなり噛み砕いてお話していきます。

みなさんが日常的に表示しているwebページもゲームも、それすなわち0と1の集まり。つまるところ人間は原子の集まりと言っている事と同義です。
仮に人で考えると、ある場所から違う場所へ移動するとき、歩く・乗り物に乗る、という方法が考えられるかと思いますが、それがもし、人1人も通れない細さの場所を移動しようと考えた場合、やはり難しいですよね。
これをネットの世界で表現すると、webページ1ページが人間に相当し、ページが通る場所が回線だったりします。
ではどのように限られた条件の通り道を通っているのかといいますと、0と1という最小の存在に細切れにされる事で実現しています。
これは流石に人間には不可能なのですが、0と1の存在となったデータは、移動先に細切れになって到着し、再度構築されています。(人では考えたくないですね
この細切れにされた1つの塊を“パケット”と言います。

もう怖くないTCP/IP

これらパケットのやりとりが実際のデータのやりとりだとお分りいただけたかと思いますが、では果たして何のルールもなく、ただバラバラにして送りつければいいのでしょうか?
先ほどの0と1の話に回帰すると当然0と1の組み合わせを適当に送っただけでは実現できません。
そこで2点の場所でデータをやりとりする為に、厳密にルールを決めたのです。これは人が社会において法やモラルなどのルールを守って生きているのと同じです。
このルールを“プロトコル”といいます。
プロトコルの定めるルールに則る事で、送受信時にどこから、どんな形式のデータなのか知る事ができるので、バラバラになったデータも正しく復元する事ができます。
最小のデータをどのように相手に届け、どのように復元するのか、人間の知恵が感じれる部分ですね。

上記までのルールはインターネットを介してやりとりするデータで共通な物にしよう!ということで、TCP/IPというプロトコルを世界的に定めました。
よってTCP/IPとは、データをやりとりする為に定めたルールということになります。
もしそのルールを知らない場合は、当然ネットを介したやりとりはできません。ちょうど英語と日本語で会話が成り立たないのと同じ状態です。

“3ウェイハンドシェイク”

TCPの大きな特徴としては存在確認と通信状況の確認を行う点にあります。
友達と遊ぶ約束をするように、

  1. まずは相手の状態を聞くところから始まります。(律儀なやつなんです
  2. そして相手が状態を返し、
  3. その状態に対して送る事を再度確認します。

このやりとりを“3ウェイハンドシェイク”と呼びます。

実は怖いHTTP

このTCP/IPですが、メールの送受信、ファイルのやりとりといった、普段何気なく使っている物でも幅広く使われております。
勿論インターネットでのやりとりでも使用されており、それが皆さんご存知のHTTPです。
HTTPはTCP/IPのルールを拡張したルールという位置付けで、通信で必要な規約はTCP/IPがまかない、データのやりとりはHTTPのルールが担保しています。
しかし、ここで問題になるのはHTTPが無防備の通信プロトコルであることです。改変や改ざん、なりすましといった脅威に常に晒されるネットプロダクトにおいて、何かしらの対策が必要となります。
例えば、webページのアカウント登録などでパスワードを入力する事があるかと思いますが、この時パスワードを暗号化して送られるようにシステムを組む事がほとんどです。
この暗号化して送信することも、ネットに晒されるという脅威に対する人間の知恵から生まれたのです。
HTTPの脅威は根本的な解決を迫られる程のもので、その通信方法をより安全に運用するためにさらに拡張されることになりました。それが“HTTPS通信”です。
HTTPSはHTTPの通信そのものを暗号化し、通信中のデータの改ざんを検知できるようにする技術で、根本はHTTPのセキュリティ強化版といった感じです。HTTPSの利用により、異常を検出した際には処理を行わないなどの制御が可能となり、ネット犯罪への抑止力にも繋がっています。

HTTP/3の時代へ

ここまでHTTPについてネット技術を絡めて片鱗に触れてきましたが、この度、HTTP/3の策定が取り沙汰されました。
HTTP/2さておいてのHTTP/3なのか?という意見もあるかと思いますが、既に現在使われているHTTP通信の規格はHTTP/2が主流となりつつあり、TwitterやFacebookはHTTP/2の通信に対応しております。
このHTTP/2通信の大きな特徴は、同時に複数のストリームで通信することができることです。“ストリーム”という言葉は馴染みがないかと思いますが、会話で言う所の1往復に相当します。

従来の1ストリーム

  1. [自分]明日の予定を教えて
  2. [相手]12:00から〇〇さんと食事

HTTP/2の1ストリーム

  1. [自分]明日の予定を教えて
  2. [相手]12:00から〇〇さんと食事
  3. [自分]明後日の予定を教えて
  4. [相手]特に予定はない

会話の往復が複数というのは画期的で、要求することと、返答することが複数同時に行える、すなわちストリーム数が減るので通信速度が劇的に改善されます。

そしてHTTP/3…HTTP/2でもかなりの進化を遂げているのですが、その進化はこれまで以上のものとなると期待されております。
これまでのHTTP2のいいとこ取りと言えば、そんなにインパクトはないのですが、何より内部的にTCPではなくUDPによる通信に切り替わることが大きな変更となります。

UDPとは

TCPについては“3ウェイハンドシェイク”の項目で解説しましたが、UDPは相手の確認を行わずに投げっぱなしの通信で、主に動画配信など、データの欠損が大きく影響せず、通信速度を重視したようなものに広く利用されています。ストリーミングサービスのほとんどは、このUDPでの通信を利用しています。
UDPの通信は、

  1. 相手に一方的にデータを送る

これだけです。遊ぶ約束もなしに友達の家に遊びにいく感じでしょうか。

投げっぱなしと言うことで、果たして正しいデータなのか、という問題も出てきますが、今回Googleが提唱しているQUICという規格を内部的に採用しており、UDP通信でも一定の品質を保証するロジックが組み込まれているようです。
既にテストにて速度面と安全面において水準をクリアする結果を残しており、近い将来標準規格として策定されることと思います。

まとめ

今回はHTTP/3のニュースに絡めて、ネット基盤の触りを紐解いてきましたが、成熟仕切っているわけではなく、日々改善されている技術なのだと再確認できました。
個人的にはHTTP/3は大きなブレイクスルーとなると思っているので、楽しみで仕方ありません。

Posted by SakaiYasuhiro
PHP,NodeJS,Reactを主に使っているが、デザイン周りもこなす何でも屋。 自称: 可能性の獣

Other Posts: