最近ネットワーク周りについて興味があって調べているので、その結果をまとめました。
主な話題
- HTTPの最近の流れ
- なぜHTTP/2は高速なのか?
- QUICとはなにか?何を解消するのか?
- WebRTCとは?WebSocketとは?
- RESTとGraphQL、gRPC
- Edgeサーバー
HTTP関連
HTTPの最近の流れ、歴史
HTTPのこれまでの課題、HTTP/3 over QUICや5Gといった今後の技術についてわかりやすくまとまったスライドです。
HTTP/2はなぜ高速なのか?
HTTP/2の特徴 HTTP/1.1との違いについて | REDBOX Labo
HTTP/1.1からHTTP/2はどのように変わったのかまとめられています。
- HTTP/1.1は1コネクション1レスポンス。多重化するには複数コネクションを確立する必要がある。
- HTTP/2では1つのコネクションで複数レスポンスさばける。
QUIC関連
QUICとは?
GoogleのQUICプロトコル:TCPからUDPへWebを移行する | POSTD
「TCPでのコネクション確立、TLSのネゴシエーションというコストがかかる通信をQUICが置き換えるよ」という話です。
QUICで解消できるHTTP/2の課題
Head of Line Blocking - High Performance Web 2015 - Qiita
HTTP/1.1で起きるHoLブロッキングと、HTTP/2で起きるHoLブロッキングそれぞれの解説と、QUICならどちらも解消できるという話です。
その他QUIC
QUICとHTTP/3時代のインターネット解説書はどうあるべきだろう - golden-luckyの日記
QUICについてのよくある誤解や、QUICがOSI参照モデルに当てはまらないよというような話です。一言で要約することが困難なので一読をおすすめします。
リアルタイム通信について
これらは「ブラウザ上でのリアルタイム通信」に関する話題です。リアルタイム通信はチャットやオンラインゲーム、通知などで必要になる技術です。また、ツイッターのタイムラインなどでも利用されます。
リアルタイム通信の種類
リアルタイムなwebアプリを実現する方法(ポーリング、Comet、Server Sent Events、WebSocket) - Qiita
リアルタイム通信の種類についての記事です。
- ポーリング
- Comet(ロングポーリング)
- SSE
- WebSocket
4つのリアルタイム通信方式の違いについて図でわかりやすく解説されています。
WebRTCで通信ができるまで
WebRTCはサーバーを介さないでクライアント同士が通信を行う(P2P通信する)ための技術です。リアルタイム通信という側面も持ち合わせています。
WebRTCの基本とP2P通信が成立するまでを学ぶ - Qiita
WebRTCで通信ができるまでのプロセスについての記事です。WebSocketも出てきます。
RESTやGraphQLなどAPI周り
APIを扱いたいとき、今まではRESTが多かったです。しかし、GraphQL、gRPCといった選択肢が出てきました。
GraphQLを最速でマスターするための意識改革3ヶ条 - Qiita
GraphQLとRESTの違いや、「GraphQLは操作とデータ取得のみに専念して、認証などは別の層で捌くべし」という記事です。
gRPCについての記事です。正直僕はこの記事だけでは理解できませんでした。gRPCはフロントエンドとバックエンドの通信はできず、バックエンド間の通信を担うらしい(??)(gRPC-Webなるものはできるそうですが)。
Edgeサーバー
Edgeサーバーとは、クラウドとクライアントの間に置かれるサーバーです。同名のブラウザとは関係ありません。
Edgeサーバーは主にクライアントとクラウド間での通信コストを下げる目的で使用されます。ユーザーに地理的に近い位置にサーバーを配置して、高速で通信できるようにして、Edgeサーバーでできることはしてしまおうというモノです。IoTや自動運転関連でよく出てきます。