HTTPステータスコードの「101 Switching Protocols」とは?意味をわかりやすく簡単に解説
スポンサーリンク
目次
- HTTPステータスコードの「101 Switching Protocols」とは
- 「101 Switching Protocols」が返される条件
- クライアントからのアップグレードリクエストの存在
- サーバーがリクエストされたプロトコルをサポートしていること
- サーバーがアップグレードリクエストを受け入れること
- 「101 Switching Protocols」の応答フォーマット
- ステータスライン
- Upgradeヘッダー
- Connectionヘッダー
- 「101 Switching Protocols」の使用例
- WebSocketへのアップグレード
- HTTP/2へのアップグレード
- カスタムプロトコルへのアップグレード
HTTPステータスコードの「101 Switching Protocols」とは
「101 Switching Protocols」はクライアントからのプロトコル切り替えリクエストが受け入れられたことを示すステータスコードです。このステータスコードはHTTPプロトコルからWebSocketプロトコルへの切り替えなどに使用されます。
「101 Switching Protocols」はHTTPの拡張メカニズムであるUpgrade headerを使用して、クライアントがサーバーにプロトコルのアップグレードを要求した場合に返されるステータスコードになります。サーバーがクライアントからのアップグレードリクエストを受け入れた場合、このステータスコードを返し、新しいプロトコルへの切り替えが行われるのです。
一般的にはWebSocketを使用したリアルタイム通信を実現する際に、HTTPからWebSocketへのプロトコル切り替えを行うために「101 Switching Protocols」が使用されています。クライアントがWebSocketを使用したい場合、まずHTTPリクエストを送信し、Upgrade headerでWebSocketへのアップグレードをリクエストします。
サーバーがWebSocketをサポートしており、アップグレードリクエストを受け入れる場合、「101 Switching Protocols」ステータスコードを返します。これにより、HTTPコネクションはWebSocketプロトコルにアップグレードされ、双方向の通信が可能になるわけです。
「101 Switching Protocols」はプロトコルのアップグレードを行うための重要なステータスコードであり、特にWebSocketを使用したリアルタイム通信を実現する際に欠かせない役割を果たしています。HTTPの拡張性を示す良い例であると言えるでしょう。
「101 Switching Protocols」が返される条件
「101 Switching Protocols」が返される条件」に関して、以下3つを簡単に解説していきます。
- クライアントからのアップグレードリクエストの存在
- サーバーがリクエストされたプロトコルをサポートしていること
- サーバーがアップグレードリクエストを受け入れること
クライアントからのアップグレードリクエストの存在
「101 Switching Protocols」が返されるためにはまずクライアントからのアップグレードリクエストが存在する必要があります。クライアントは通常のHTTPリクエストを送信する際に、Upgrade headerを含めることでプロトコルのアップグレードをリクエストします。
例えば、WebSocketへのアップグレードを要求する場合、クライアントは以下のようなHTTPリクエストを送信します。このリクエストにはUpgrade headerとConnection headerが含まれており、これらのヘッダーがプロトコルのアップグレードをリクエストしていることを示しているのです。
GET /chat HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade
スポンサーリンク
サーバーがリクエストされたプロトコルをサポートしていること
クライアントからのアップグレードリクエストを受け取ったサーバーはリクエストされたプロトコルをサポートしている必要があります。サーバーがリクエストされたプロトコルを理解し、そのプロトコルへのアップグレードが可能である場合にのみ、「101 Switching Protocols」ステータスコードが返されます。
例えば、クライアントがWebSocketへのアップグレードをリクエストした場合、サーバーはWebSocketプロトコルを理解し、サポートしている必要があります。サーバーがWebSocketをサポートしていない場合、アップグレードリクエストは拒否され、「101 Switching Protocols」ステータスコードは返されません。
サーバーはリクエストされたプロトコルをサポートしているかどうかを判断し、サポートしている場合にのみアップグレードリクエストを受け入れるようになっています。これにより、サーバーは未知のプロトコルへのアップグレードを防ぎ、セキュリティを確保することができるのです。
サーバーがアップグレードリクエストを受け入れること
サーバーがリクエストされたプロトコルをサポートしている場合でも、必ずしもアップグレードリクエストを受け入れるとは限りません。サーバーはアップグレードリクエストを受け入れるかどうかを判断する権限を持っています。
サーバーがアップグレードリクエストを受け入れる場合、「101 Switching Protocols」ステータスコードを返し、新しいプロトコルへの切り替えが行われます。一方、サーバーがアップグレードリクエストを拒否する場合、「101 Switching Protocols」ステータスコードは返されず、通常のHTTPレスポンスが返されることになります。
サーバーがアップグレードリクエストを受け入れるかどうかはサーバーの設定や状態によって異なります。例えば、サーバーがアップグレードリクエストを受け入れるための十分なリソースを持っていない場合や、セキュリティ上の理由からアップグレードを拒否する場合などが考えられます。
「101 Switching Protocols」の応答フォーマット
「101 Switching Protocols」の応答フォーマット」に関して、以下3つを簡単に解説していきます。
- ステータスライン
- Upgradeヘッダー
- Connectionヘッダー
ステータスライン
「101 Switching Protocols」の応答フォーマットにおいて、最初に現れるのはステータスラインです。ステータスラインはHTTPバージョン、ステータスコード、および理由フレーズで構成されています。
「101 Switching Protocols」の場合、ステータスラインは以下のようになります。このステータスラインはHTTPバージョンが1.1であり、ステータスコードが101、理由フレーズが「Switching Protocols」であることを示しています。
HTTP/1.1 101 Switching Protocols
スポンサーリンク
Upgradeヘッダー
「101 Switching Protocols」応答にはUpgradeヘッダーが含まれます。Upgradeヘッダーはアップグレードされるプロトコルを示すために使用されます。
例えば、WebSocketへのアップグレードが行われる場合、Upgradeヘッダーは以下のようになります。このヘッダーはアップグレードされるプロトコルがWebSocketであることを示しているのです。
Upgrade: websocket
Upgradeヘッダーはクライアントからのアップグレードリクエストに対する応答として使用されます。サーバーはクライアントがリクエストしたプロトコルをUpgradeヘッダーに含めることで、そのプロトコルへのアップグレードが行われることを確認するわけです。
Connectionヘッダー
「101 Switching Protocols」応答にはConnectionヘッダーも含まれます。Connectionヘッダーはアップグレード後の接続の取り扱いを示すために使用されます。
通常、「101 Switching Protocols」応答のConnectionヘッダーには「Upgrade」という値が設定されます。これは現在の接続がアップグレードされることを示しています。
Connection: Upgrade
Connectionヘッダーはアップグレード後の接続が維持されるべきであることを示します。つまり、アップグレード後も同じTCP接続が使用され、新しいプロトコルでの通信が継続されることを意味しているのです。
「101 Switching Protocols」の使用例
「101 Switching Protocols」の使用例」に関して、以下3つを簡単に解説していきます。
- WebSocketへのアップグレード
- HTTP/2へのアップグレード
- カスタムプロトコルへのアップグレード
WebSocketへのアップグレード
「101 Switching Protocols」の最も一般的な使用例はWebSocketへのアップグレードです。WebSocketはHTTPの上に構築された双方向通信プロトコルであり、リアルタイムなデータのやり取りを可能にします。
クライアントがWebSocketを使用したい場合、まずHTTPリクエストを送信し、Upgradeヘッダーでwebsocketを指定します。サーバーがWebSocketをサポートしており、アップグレードリクエストを受け入れる場合、「101 Switching Protocols」ステータスコードを返し、WebSocketプロトコルへの切り替えが行われるのです。
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
HTTP/2へのアップグレード
「101 Switching Protocols」はHTTP/2へのアップグレードにも使用されます。HTTP/2はHTTPの次世代バージョンであり、パフォーマンスの向上と機能の拡張を目的としています。
クライアントがHTTP/2を使用したい場合、まずHTTPリクエストを送信し、Upgradeヘッダーでh2cを指定します。サーバーがHTTP/2をサポートしており、アップグレードリクエストを受け入れる場合、「101 Switching Protocols」ステータスコードを返し、HTTP/2プロトコルへの切り替えが行われます。
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: h2c
ただし、HTTP/2へのアップグレードには「101 Switching Protocols」を使用する方法の他に、ALPNと呼ばれる拡張機能を使用する方法もあります。ALPNを使用する場合、「101 Switching Protocols」は使用されません。
カスタムプロトコルへのアップグレード
「101 Switching Protocols」はWebSocketやHTTP/2以外のカスタムプロトコルへのアップグレードにも使用できます。独自のプロトコルを定義し、そのプロトコルへのアップグレードを行うことが可能です。
カスタムプロトコルへのアップグレードを行う場合、クライアントはUpgradeヘッダーで独自のプロトコル名を指定します。サーバーがそのプロトコルをサポートしており、アップグレードリクエストを受け入れる場合、「101 Switching Protocols」ステータスコードを返し、カスタムプロトコルへの切り替えが行われるのです。
HTTP/1.1 101 Switching Protocols
Upgrade: my-custom-protocol
Connection: Upgrade
カスタムプロトコルへのアップグレードは特定のアプリケーションや環境において有用です。独自のプロトコルを定義することで、アプリケーションの要件に合わせた通信方式を実現することができます。
※上記コンテンツはAIで確認しておりますが、間違い等ある場合はコメントよりご連絡いただけますと幸いです。
- HTTP 300番台のRedirection(リダイレクション)とは?意味をわかりやすく簡単に解説
- 431エラー(Request Header Fields Too Large)とは?意味をわかりやすく簡単に解説
- IP分散とは?意味をわかりやすく簡単に解説
- IP-VPNとは?意味をわかりやすく簡単に解説
- IPoEとは?意味をわかりやすく簡単に解説
- IoT検定とは?意味をわかりやすく簡単に解説
- Google検索コマンド(検索演算子)の「postauthor:」とは?意味をわかりやすく簡単に解説
- IPSとは?意味をわかりやすく簡単に解説
- Google検索コマンド(検索演算子)の「allintitle:」とは?意味をわかりやすく簡単に解説
- IPsec(Security Architecture for Internet Protocol)とは?意味をわかりやすく簡単に解説
- common株式会社がAI販売予測機能を開発、自動車販売在庫管理SaaS『Nigoori』の機能拡充へ
- クラウドワークスがAI活用基本方針を策定、累計40,000件の関連仕事受注を背景に安全な取引環境の構築へ
- フロンティアがYouTubeとTikTokの広告運用代行サービスを開始、企業のデジタルマーケティング戦略強化に貢献
- ポケットマルシェがeギフトサービス開始、ギフティと連携し産直アプリの新たな楽しみ方を提供
- Outbrainが大阪支社を開設、西日本での広告テクノロジー事業を強化
- フォートナイトで岡山城のメタバース化、中国・四国地方初の謎解き脱出ゲームを公開
- 弥富市が不要品リユース事業でマーケットエンタープライズ「おいくら」と連携、廃棄物削減と循環型社会形成を目指す
- 新電元工業がEV充電器新製品発表、OCPP対応でサービス多様化へ
- ONE COMPATHが新サービス「買えるお店マップ」を発表、マーケティングPDCAのトータルサポートを実現
- モリサワがWebフォントを提供開始、Morisawa Fontsの機能が大幅に拡張
スポンサーリンク