グーグルが開発した通信プロトコル「QUIC」を教えて!
こういった悩みにお答えします.
本記事の信頼性
- リアルタイムシステムの研究歴12年.
- 東大教員の時に,英語でOS(Linuxカーネル)の授業.
- 2012年9月~2013年8月にアメリカのノースカロライナ大学チャペルヒル校(UNC)コンピュータサイエンス学部で客員研究員として勤務.C言語でリアルタイムLinuxの研究開発.
- プログラミング歴15年以上,習得している言語: C/C++,Python,Solidity/Vyper,Java,Ruby,Go,Rust,D,HTML/CSS/JS/PHP,MATLAB,Assembler (x64,ARM).
- 東大教員の時に,C++言語で開発した「LLVMコンパイラの拡張」,C言語で開発した独自のリアルタイムOS「Mcube Kernel」をGitHubにオープンソースとして公開.
- 2020年1月~現在はアメリカのノースカロライナ州チャペルヒルにあるGuarantee Happiness LLCのCTOとしてECサイト開発やWeb/SNSマーケティングの業務.2022年6月~現在はアメリカのノースカロライナ州チャペルヒルにあるJapanese Tar Heel, Inc.のCEO兼CTO.
- 最近は自然言語処理AIとイーサリアムに関する有益な情報発信に従事.
- (AI全般を含む)自然言語処理AIの論文の日本語訳や,AIチャットボット(ChatGPT,Auto-GPT,Gemini(旧Bard)など)の記事を50本以上執筆.アメリカのサンフランシスコ(広義のシリコンバレー)の会社でプロンプトエンジニア・マネージャー・Quality Assurance(QA)の業務委託の経験あり.
- (スマートコントラクトのプログラミングを含む)イーサリアムや仮想通貨全般の記事を200本以上執筆.イギリスのロンドンの会社で仮想通貨の英語の記事を日本語に翻訳する業務委託の経験あり.
こういった私から学べます.
C言語を独学で習得することは難しいです.
私にC言語の無料相談をしたいあなたは,公式LINE「ChishiroのC言語」の友だち追加をお願い致します.
私のキャパシティもあり,一定数に達したら終了しますので,今すぐ追加しましょう!
独学が難しいあなたは,元東大教員がおすすめするC言語を学べるオンラインプログラミングスクール5社で自分に合うスクールを見つけましょう.後悔はさせません!
まずはC/C++/Python/Go言語を学びたいあなたはこちらからどうぞ.
目次
QUIC:グーグルが開発したUDPにコネクション指向を追加したトランスポート層の通信プロトコル
QUIC(クイック)は,グーグルが開発したUDPにコネクション指向を追加したトランスポート層の通信プロトコルです.
※QUICはQuick UDP Internet Connectionsの略です.
QUICにより,UDPによる低遅延を実現しつつTCPのようなコネクション指向を両立できます.
また,IETFによりHTTP over QUICを「HTTP/3」と呼ぶことになりましたので,HTTPの事実上の標準になると言えます.
QUICの論文は「The QUIC Transport Protocol: Design and Internet-Scale Deployment」として公開されています.
QUICはIETFにより以下のRFCで標準化されています.
- RFC 9000:QUIC: A UDP-Based Multiplexed and Secure Transport
- RFC 8999:Version-Independent Properties of QUIC
- RFC 9001:Using TLS to Secure QUIC
- RFC 9002:QUIC Loss Detection and Congestion Control
QUICの解説動画はこちらです.
QUICのオープンソース
QUICの代表的なオープンソースを紹介します.(一覧はこちらです.)
どのオープンソースがQUICの事実上の標準になるか動向をチェックしましょう!
C++言語:QUICHE(グーグル)
QUICHE(QUIC, Http, Etc.)は,グーグルにより開発されたC++言語による商用利用可能な実装です.
QUICHEには,QUIC,HTTP/2,HTTP/3,および関連するプロトコルとツールがあります.
グーグルのサーバ,Chromium,Envoy,およびその他のプロジェクトで使用されています.
1 |
$ git clone https://github.com/google/quiche |
C言語:MsQuic(マイクロソフト)
MsQuicは,マイクロソフトにより開発されたC言語によるQUICの実装です.
MsQuicはクロスプラットフォームで,C言語で書かれており,汎用のQUICライブラリとして設計されています.
また,C++のAPIラッパークラスを持ち,RustとC#の両方の相互運用レイヤーを公開しています.
1 |
$ git clone https://github.com/microsoft/msquic |
Python言語:aioquic(aiortc)
aioquicは,aiortcにより開発されたPython言語によるQUICの実装です.
最小限のTLS 1.3の実装,QUICスタック,HTTP/3 スタックを備えています.
1 |
$ git clone https://github.com/aiortc/aioquic |
Go言語:quic-go(ルーカス・クレメンテ)
quic-goは,グーグルのソフトウェアエンジニアのルーカス・クレメンテにより開発されたGo言語によるQUICの実装です.
quic-goは,Go言語のQUICの実装で代表的なものです.
1 |
$ git clone https://github.com/lucas-clemente/quic-go |
まとめ
グーグルが開発したUDPにコネクション指向を追加したトランスポート層の通信プロトコル「QUIC」を紹介しました.
QUICは,HTTPの事実上の標準になる予定です!
QUICの詳細を知りたいあなたは以下の記事を読みましょう!
C言語を独学で習得することは難しいです.
私にC言語の無料相談をしたいあなたは,公式LINE「ChishiroのC言語」の友だち追加をお願い致します.
私のキャパシティもあり,一定数に達したら終了しますので,今すぐ追加しましょう!
独学が難しいあなたは,元東大教員がおすすめするC言語を学べるオンラインプログラミングスクール5社で自分に合うスクールを見つけましょう.後悔はさせません!