JP2022184168A - 端末装置、サーバ装置、通信方法及びプログラム - Google Patents

端末装置、サーバ装置、通信方法及びプログラム Download PDF

Info

Publication number
JP2022184168A
JP2022184168A JP2021091858A JP2021091858A JP2022184168A JP 2022184168 A JP2022184168 A JP 2022184168A JP 2021091858 A JP2021091858 A JP 2021091858A JP 2021091858 A JP2021091858 A JP 2021091858A JP 2022184168 A JP2022184168 A JP 2022184168A
Authority
JP
Japan
Prior art keywords
communication
connection
http
control unit
terminal device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2021091858A
Other languages
English (en)
Inventor
直人 横満
Naoto Yokomitsu
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sharp Corp
Original Assignee
Sharp Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sharp Corp filed Critical Sharp Corp
Priority to JP2021091858A priority Critical patent/JP2022184168A/ja
Priority to US17/752,039 priority patent/US11799942B2/en
Publication of JP2022184168A publication Critical patent/JP2022184168A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/146Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/166Implementing security features at a particular protocol layer at the transport layer

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)

Abstract

【課題】適切な通信プロトコルを用いて通信することが可能な端末装置等を提供すること。【解決手段】制御部と、通信先とHTTP(Hyper Text Transfer Protocol)通信を行う通信部とを備え、前記制御部は、HTTP/3を用いるための第1の接続と、HTTP/2を用いるための第2の接続とを確立するための処理を開始し、前記第1の接続が確立できた場合、前記HTTP/3を用いて、前記通信部を介して通信を行うことを特徴とする。【選択図】図1

Description

本開示は、端末装置等に関する。
従来より、多様な装置がネットワークに接続し、通信を行っている。また、装置によっては、通信を行うときに用いられる複数の通信プロトコルから、使用する通信プロトコルを適切に選択することも行われている。この場合において、効率的に通信プロトコルを選択する技術も提案されている。
例えば、接続先の通信装置が指定された場合、当該接続先の通信装置の識別情報が登録されているか否かに基づいて、第1の通信プロトコルから第2の通信プロトコルへのプロトコルの切り替え処理を省略するか否かを判断し、切り替え処理を省略することを判断した場合、第2の通信プロトコルによる接続開始要求を接続先の装置に送信する通信装置が提案されている(例えば、特許文献1参照)。
特開2016-72684
ここで、装置が他の装置と通信を行う場合、従来から使用されている通信プロトコルと、従来の通信プロトコルを改善した新しい通信プロトコル(例えば、通信速度を改善した通信プロトコル)との何れかの通信プロトコルが選択可能である場合がある。通信先の装置が新しい通信プロトコルに対応している場合、通信を行う装置は、当該新しいプロトコルを優先的に選択することが望ましい。しかし、特許文献1は、上述した場合について考慮されていない。
本開示は上述した課題に鑑み、適切な通信プロトコルを用いて通信することが可能な端末装置等を提供することを目的とする。
上述した課題を解決するために、本開示に係る端末装置は、制御部と、通信先とHTTP(Hyper Text Transfer Protocol)通信を行う通信部とを備え、前記制御部は、HTTP/3を用いるための第1の接続と、HTTP/2を用いるための第2の接続とを確立するための処理を開始し、前記第1の接続が確立できた場合、前記HTTP/3を用いて、前記通信部を介して通信を行うことを特徴とする。
本開示に係るサーバ装置は、制御部とHTTP(Hyper Text Transfer Protocol)通信を行う通信部とを備え、前記通信部は、HTTP/3を用いるための第1の接続及びHTTP/2を用いるための第2の接続を確立することが可能であり、前記制御部は、前記第1の接続及び前記第2の接続が公開鍵暗号方式を用いた接続である場合、前記第1の接続又は前記第2の接続のうち一方の接続を介して通信先から鍵情報を取得した場合、当該通信先と他方の接続を確立するとき、前記鍵情報を用いることを特徴とする。
本開示に係る通信方法は、HTTP(Hyper Text Transfer Protocol)通信を行う端末装置の通信方法であって、HTTP/3を用いるための第1の接続とHTTP/2を用いるための第2の接続とを確立するための処理を開始するステップと、前記端末装置が、前記第1の接続が確立できた場合、前記HTTP/3を用いて通信を行うステップと、を含むことを特徴とする。
本開示に係るプログラムは、コンピュータに、HTTP(Hyper Text Transfer Protocol)通信を行うコンピュータに、HTTP/3を用いるための第1の接続とHTTP/2を用いるための第2の接続とを確立するための処理を開始する機能と、前記第1の接続が確立できた場合、前記HTTP/3を用いて通信を行う機能と、を実現させることを特徴とする。
本開示に係る端末装置は、制御部と通信部とを備え、前記制御部は、前記通信部を介して、通信速度が速い第1の通信プロトコルを用いるための第1の接続と、前記通信速度が遅い第2の通信プロトコルを用いるための第2の接続とを確立するための処理を開始し、前記第1の接続が確立できた場合、前記第1の通信プロトコルを用いて通信を行うことを特徴とする。
本開示によれば、適切な通信プロトコルを用いて通信することが可能な端末装置等を提供することが可能となる。
第1実施形態における画像形成装置の全体構成を説明するための図である。 第1実施形態における端末装置及びサーバ装置の機能構成を説明するための図である。 第1実施形態における設定値情報のデータ構造を説明するための図である。 第1実施形態における端末装置によって実行される処理の流れを説明するためのフロー図である。 第1実施形態における第1の接続処理の流れを説明するためのフロー図である。 第1実施形態における第2の接続処理の流れを説明するためのフロー図である。 第1実施形態における第1の再接続処理の流れを説明するためのフロー図である。 第1実施形態における第2の再接続処理の流れを説明するためのフロー図である。 第1実施形態におけるサーバ装置によって実行される処理の流れを説明するためのフロー図である。 第1実施形態における第3の接続処理の流れを説明するためのフロー図である。 第1実施形態における第4の接続処理の流れを説明するためのフロー図である。 第1実施形態における動作例を示す図である。 第1実施形態における動作例を示す図である。
以下、図面を参照して、本開示を実施するための一実施形態について説明する。なお、以下の実施形態は、本開示を説明するための一例であり、特許請求の範囲に記載した発明の技術的範囲が、以下の記載に限定されるものではない。
[1.第1実施形態]
[1.1 全体構成]
図1を参照して、本実施形態におけるシステム1の全体構成を説明する。図1に示すように、システム1は、端末装置10とサーバ装置20とが、ネットワークNWを介して、通信可能に接続されている。ネットワークNWは、インターネットなどの外部ネットワーク(WAN(Wide Area Network))であってもよいし、LAN(Local Area Network)等の内部ネットワークであってもよい。なお、本実施形態において、「接続されている」とは、2つの装置の間で、通信を行う状態にあることをいう。
端末装置10は、ユーザによって使用される情報処理装置である。端末装置10は、例えば、スマートフォン、タブレット、PC(Personal Computer)等のコンピュータ(情報処理装置)により構成される。
サーバ装置20は、所定のサービスを提供する情報処理装置である。サーバ装置20は、PCやサーバといった、コンピュータ(情報処理装置)により構成される。サーバ装置20は、複数の情報処理装置によって構成されていてもよいし、任意の情報処理装置上で実現される仮想サーバによって構成されてもよい。
[1.2 機能構成]
[1.2.1 端末装置]
図2を参照して、端末装置10の機能構成を説明する。端末装置10は、図2に示すように、制御部100、表示部140、操作部150、記憶部160、通信部190を備えて構成される。
制御部100は、端末装置10の全体を制御するための機能部である。制御部100は、記憶部160に記憶された各種プログラムを読み出して実行することにより各種機能を実現しており、例えば、1又は複数の演算装置(CPU(Central Processing Unit))等により構成される。
表示部140は、各種情報を表示する。表示部140は、例えば、LCD(Liquid crystal display)、有機EL(electro-luminescence)パネル、マイクロLED(Light Emitting Diode)ディスプレイ等の表示装置により構成される。
操作部150は、端末装置10を使用するユーザの操作を受け付ける。操作部150は、タッチセンサ等の入力装置によって構成される。タッチセンサにおいて入力を検出する方式は、例えば、抵抗膜方式、赤外線方式、電磁誘導方式、静電容量方式といった、一般的な検出方式であればよい。なお、端末装置10には、表示部140と、操作部150とが一体に形成されたタッチパネルが搭載されてもよい。
記憶部160は、端末装置10の動作に必要な各種プログラムや、各種データを記憶する。記憶部160は、例えば、半導体メモリであるSSD(Solid State Drive)や、HDD(Hard Disk Drive)等の記憶装置により構成される。
記憶部160には、設定値情報記憶領域162が確保される。端末装置10に記憶される設定値情報とは、通信先毎の設定情報(設定値)を示す情報である。端末装置10に記憶される設定値情報には、図3に示すように、サーバ識別子と設定情報とが含まれる。
サーバ識別子とは、通信先である装置(例えば、サーバ装置20)を識別する情報や、当該装置との通信に用いる通信プロトコルやポート番号等を示す情報である。サーバ装置20と通信を行った場合における設定値情報には、以下のような情報が含まれる。
・サーバ装置20のアドレス
サーバ装置20のアドレスは、サーバ装置20を識別するためのアドレスの情報であり、例えば、IP(Internet Protocol)アドレスやURI(Uniform Resource Identifier)である。
・プロトコル
プロトコルは、端末装置10がサーバ装置20と通信を行う場合において、当該通信に用いることが可能な通信プロトコル(端末装置10が選択可能な通信プロトコル)を識別するための情報である。プロトコルとしては、例えば、通信プロトコルとして、HTTP/3が選択可能であることを示す「h3」といった情報が記憶される。通信プロトコルを示す情報をトークンともいう。
・ポート
ポートは、サーバ装置20と通信を行う場合において用いられるポートの情報である。例えば、サーバ装置20と通信を行う場合において、インターネット・プロトコル・スイートが用いられる場合、ポートの情報として、ポート番号とトランスポート層における通信プロトコル(トランスポート層ネットワークプロトコル)とが記憶される。トランスポート層における通信プロトコルとは、例えば、TCP(Transmission Control Protocol)やUDP(User Datagram Protocol)である。この場合、ポートの情報としては、「430/UDP」といった情報が記憶される。
なお、サーバ識別子は、サーバ装置20のアドレスを示すIPアドレスと、ポートの情報とを組み合わせた「100.200.100.24:3005 TCP」といった情報が記憶されてもよい。
設定情報は、最終アクセス時間(日時)、サーバ装置20が提供しているサービスに関する情報、サーバ装置20から受信したSETTINGS FRAMEの内容、設定値(SETTINGS FRAME)の交換のスキップが可能か否かを示す情報等の情報である。なお、設定情報には、上述した情報以外の情報が記憶されてもよい。例えば、設定情報には、TLS(Transport Layer Security)のsession id、TLSのsession ticket、TLSのsession key等の情報が記憶されてもよい。
通信部190は、LAN(Local Area Network)やWAN(Wide Area Network)を介して、サーバ装置20等の外部の装置と通信を行う。通信部190は、例えば、有線/無線LANで利用されるNIC(Network Interface Card)や、LTE(Long Term Evolution)/LTE-A(LTE-Advanced)/LAA(License-Assisted Access using LTE)/5G回線に接続可能な通信モジュールにより構成される。
[1.2.2 サーバ装置]
図2を参照して、サーバ装置20の機能構成を説明する。サーバ装置20は、図2に示すように、制御部200、記憶部260、通信部290を備えて構成される。
制御部200は、サーバ装置20の全体を制御するための機能部である。制御部200は、記憶部260に記憶された各種プログラムを読み出して実行することにより各種機能を実現しており、例えば、1又は複数の演算装置(CPU)等により構成される。
記憶部260は、サーバ装置20の動作に必要な各種プログラムや、各種データを記憶する。記憶部260は、例えば、半導体メモリであるSSDや、HDD等の記憶装置により構成される。
記憶部260には、設定値情報記憶領域262が確保される。サーバ装置20に記憶される設定値情報とは、通信相手となる装置(例えば、端末装置10)毎の設定情報を示す情報である。サーバ装置20に記憶される設定値情報には、端末装置10を識別する識別子と、当該端末装置10の設定情報(例えば、端末装置10から受信したSETTINGS FRAMEの内容等)とが記憶される。なお、サーバ装置20に記憶される端末装置10の識別子は、例えば、TLS session resumption(TLSセッション再開)の処理に用いられる情報が記憶される。この場合、端末装置10の識別子として、TLSのsession key、session ticket、その他TLS session resumptionに使用できる情報が記憶される。
通信部290は、端末装置10や他の装置と通信を行う。例えば、通信部290は、有線/無線LANで利用されるNIC等の通信装置や通信モジュールにより構成され、LANやWANを介して外部の装置と通信を行う。
なお、上述した装置の構成は一例であり、変更しても構わない。例えば、各装置は、制御部や通信部を統合したチップ(SoC;System-on-a-chip)により構成されてもよい。
[1.3 処理の流れ]
つづいて、システム1に含まれる端末装置10及びサーバ装置20が実行する処理について説明する。ここで、端末装置10によって実行される処理は、制御部100が、記憶部160に記憶されたプログラムを読み出すことにより実行される。また、サーバ装置20によって実行される処理は、制御部200が、記憶部260に記憶されたプログラムを読み出すことにより実行される。
以下の説明では、端末装置10とサーバ装置20との間で行われる通信は、WebページをWebブラウザ等に表示させるために送信されるデータ等の送受信であるとして説明する。
以下の説明において、端末装置10は、サーバ装置20との通信を行う場合において、HTTP/3、HTTP/2及びHTTP1.1の何れかの通信プロトコルを選択可能であるとする。ここで、HTTP/3、HTTP/2及びHTTP1.1は、WebページをWebブラウザ等に表示させるために送信されるデータを転送するための通信プロトコルである。HTTP/3、HTTP/2及びHTTP1.1は、インターネット・プロトコル・スイートにおけるアプリケーション層における通信プロトコルである。なお、WebページをWebブラウザ等に表示させるために送信されるデータとは、例えば、HTML(HyperText Markup Language)データ、画像データ、CSS(Cascading Style Sheets)データ、スクリプトデータ等といったコンテンツのデータである。また、サーバ装置20は、HTTP/3、HTTP/2及びHTTP1.1の通信プロトコルのうち、1又は複数の通信プロトコルが使用可能である(ホストしている)とする。
また、以下の説明では、サーバ装置20は、端末装置10の通信先の装置であるとして説明する。
[1.3.1 端末装置]
[1.3.1.1 メイン処理]
図4を参照して、端末装置10が実行するメイン処理の流れを説明する。はじめに、制御部100は、識別子を取得する(ステップS100)。識別子は、通信先となるサーバ装置20を識別するための情報である。識別子は、例えば、URIやIPアドレス、ポート(ポート番号やトランスポート層における通信プロトコル)、Session-ID等の情報である。
つづいて、制御部100は、通信先となるサーバ装置20の設定値情報が保存されていないか否かを判定する(ステップS102)。例えば、制御部100は、ステップS100において取得したサーバ装置20の識別子に対応するサーバ識別子を含む設定値情報が設定値情報記憶領域162に記憶されている場合、設定値情報が記憶されていると判定する。
設定値情報が記憶されていない場合とは、例えば、ステップS100において取得された識別子に対応するサーバ装置20に初めて接続される場合や、設定値情報が削除されたり失効したりした場合である。また、設定値情報が失効する場合とは、設定値情報に含まれる設定情報に有効期限が記憶され、当該有効期限を過ぎた場合である。
制御部100は、設定値情報が記憶されていない場合、プロトコルスキーマがTLS(Transport Layer Security)であるか否かを判定する(ステップS102;Yes→ステップS104)。
プロトコルスキーマは、通信の種類を示す情報であり、例えば、HTTP(Hyper Text Transfer Protocol)やHTTPS(Hypertext Transfer Protocol Secure)といった情報である。制御部100は、ステップS100において取得した識別子(例えば、URI)に含まれる情報からプロトコルスキーマを取得する。また、制御部100は、取得したプロトコルスキーマが、TLSプロトコルを用いた通信であることを示すプロトコルスキーマである場合、プロトコルスキーマがTLSであると判定する。
制御部100は、プロトコルスキーマがTLSである場合、第1の接続処理を実行する(ステップS104;Yes→ステップS106)。一方、制御部100は、プロトコルスキーマがTLSではない場合、第2の接続処理を実行する(ステップS104;No→ステップS108)。第1の接続処理及び第2の接続処理については、後述する。
一方、制御部100は、ステップS102において、設定値情報が記憶されていると判定した場合は、当該設定値情報に含まれるサーバ識別子に、プロトコルの情報として、HTTP/3を示す情報が記憶されているか否かを判定する(ステップS102;No→ステップS110)。サーバ識別子にHTTP/3を示す情報(例えば、「h3」といったトークン)が記憶されている場合とは、通信先となるサーバ装置20が、HTTP/3をホストしており、通信プロトコルとしてHTTP/3(第1の通信プロトコル)を用いることが可能である場合である。
制御部100は、サーバ識別子にHTTP/3を示す情報が記憶されている場合、第1の再接続処理を実行する(ステップS110;Yes→ステップS112)。一方、制御部100は、サーバ識別子にHTTP/3を示す情報が記憶されていない場合、第2の再接続処理を実行する(ステップS110;No→ステップS114)。第1の再接続処理及び第2の再接続処理については、後述する。
[1.3.1.2 第1の接続処理]
第1の接続処理について、図5を参照して説明する。第1の接続処理は、通信を行う装置(端末装置10とサーバ装置20)との間で、セキュアな通信を行うための接続を確立するための処理である。はじめに、制御部100は、QUICコネクションとTLS over TCPコネクションとの2つのコネクション(接続)を確立するための処理を開始する(ステップS200)。本実施形態では、2つのコネクションを、QUICコネクション及びTLS over TCPコネクションと記載する。また、本実施形態において「接続」とは、2つの装置(例えば、端末装置10とサーバ装置20)との間で通信を行うための論理的な通信経路をいう。本実施形態では、「接続」を「コネクション」とも記載する。
QUICコネクションは、HTTP/3(第1の通信プロトコル)を用いるための接続(第1の接続)である。QUICコネクションでは、接続を確立したり、当該接続において通信を行ったりするためのプロトコルとしてQUICが用いられる。QUICは、インターネット・プロトコル・スイートにおけるトランスポート層における通信プロトコルである。
TLS over TCPコネクションは、HTTP/2(第2の通信プロトコル)を用いるための接続(第2の接続)であり、セキュアな通信を行うための接続である。TLS over TCPコネクションでは、接続を確立したり、当該接続において通信を行ったりするためのプロトコルとして、接続(TCPコネクション)を確立するためのTCP及びセキュアな通信を行うためのTLSが用いられる。
なお、TLS over TCPコネクションは、セキュアなTCPコネクションであるため、本実施形態では、TLS over TCPコネクションをTCPコネクションとも記載する。TCPは、インターネット・プロトコル・スイートにおけるトランスポート層における通信プロトコルである。
ここで、HTTP/2及びHTTP/3は、HTTP通信を行うための通信プロトコルである。また、HTTP/3はHTTP/2と比べ、相対的に上位のバージョンの通信プロトコルであり、HTTP/2はHTTP/3と比べ、相対的に下位のバージョンの通信プロトコルである。HTTP/3は、HTTP/2における通信方法を改善した通信プロトコルである。
HTTP/2を用いるための接続であるTCPコネクションは、データ(パケット)の通信に、TCPを用いる。TCPは、パケット順序制御を実現する。パケット順序制御により、パケットを受信した装置は、パケットで分割されたデータを正しく構成し直すことができる。一方で、パケット順序制御により、パケットロスが発生した場合等において、パケットの再送が発生する。特に、モバイル等の広域無線通信環境といった劣悪な通信環境においては、パケットのジッターや破損が生じることにより、パケットの再送が発生し、結果として、通信速度が遅くなってしまうことがある。なお、TCPにおける再送問題は、HoL(Head of Line Blocking)問題ともいわれている。また、TCPにおいては、データ(セグメント)の通信を行う場合、通信先と3ウェイハンドシェイクを行うことで接続を確立する。このように、TCPは、パケット順序制御や3ウェイハンドシェイクが実行されることにより、通信の信頼性が保証される。しかし、TCPでは、信頼性の高い通信を実現するために、HoL問題や3ウェイハンドシェイクによる通信の遅延が生じる場合がある。つまり、TCPを用いた通信は、UDPを用いた通信と比べて通信速度が遅い。
また、TCPコネクションにおいてセキュアな通信を行うためには、TCPコネクションの確立に加えて、TLS通信(TLS over TCPコネクションを用いた通信)を行うための処理(例えば、TLSハンドシェイク等)を行う必要がある。したがって、HTTP/2を用いたセキュアな通信を実現するためには、接続(TCPコネクション)を確立するための処理と、TLS通信を行うための処理とが実行される必要がある。
一方、HTTP/3を用いるための接続であるQUICコネクションは、データ(パケット)の通信に、UDPを用いる。UDPはTCPと異なり、パケット順序制御を行わない。したがって、UDPでは、パケット順序制御によるパケットの再送が発生しないため、HoL問題が緩和さる。また、UDPでは、TCPにおける3ウェイハンドシェイクを行わない。このように、UDPは、TCPと比べて、通信の信頼性が保証されない。しかし、UDPが用いられることにより、簡易的な処理により通信が実現されるため、UDPを用いた通信は、TCPを用いた通信と比べて、通信速度が速い。なお、QUICコネクションでは、QUICプロトコルにより、パケットの到着の保証やパケットの順序の保証、コネクションの管理が行われる。
また、QUICプロトコルは、TLS1.3と統合されており、接続を確立する処理において、セキュアな通信(TLSプロトコルを用いた通信)を行うための処理を行うことができる。したがって、HTTP/3を用いたセキュアな通信を実現するためには、接続(QUICコネクション)を確立するための処理が実行されればよい。
以上のように、UDPを用いる接続であるQUICコネクションは、TCPを用いるTCPコネクションと比べて、通信を行う装置間における接続の確立時の手順が異なり、接続の確立時に送受信されるパケットの量が減る。さらに、QUICコネクションでは、確立するだけで、セキュアな通信が実現される。さらに、QUICコネクションは、HoL問題が緩和された通信を行うことができる。そのため、QUICコネクションを用いる通信プロトコルであるHTTP/3は、TCPコネクションを用いるHTTP/2と比べて、通信速度が速い(HTTP/2はHTTP/3と比べて通信速度が遅い)。
制御部100は、QUICコネクションとTLS over TCPコネクションとの2つのコネクションを確立するための処理を並行して開始する。例えば、制御部100は、QUICコネクションを確立する処理とTLS over TCPコネクションを確立する処理とをほぼ同時に開始してもよい。なお、制御部100は、QUICコネクションを確立する処理を開始した後に、TLS over TCPコネクションを確立する処理を開始してもよい。
制御部100は、QUICコネクションを確立するために、サーバ装置20の、HTTP/3を用いた通信を行う場合に用いられるデフォルトポート(例えば、443/UDP)への接続を行う。制御部100は、QUICを用いた接続が確立できた場合、QUICコネクションが確立したと判定する。
また、制御部100は、TLS over TCPコネクションを確立するために、サーバ装置20の、HTTP/2を用いた通信を行う場合に用いられるデフォルトポート(例えば、443/TCP)への通信を行う。制御部100は、TLSのALPN(Application-Layer Protocol Negotiation)ネゴシエーションが成立した場合、TLS over TCPコネクションが確立したと判定する。
つづいて、制御部100は、QUICコネクションが確立したか否かを判定する(ステップS202)。例えば、制御部100は、以下のような場合に、QUICコネクションが確立したと判定する。
・QUICコネクションが先に確立できた場合
・TLS over TCPコネクションが確立できたあと、所定の時間内にQUICコネクションが確立できた場合
所定の時間は、予め定められていてもよいし、ユーザによって設定可能であってもよい。制御部100は、所定の時間内にQUICコネクションが確立できた場合も、QUICコネクションが確立したと判定することにより、QUICコネクションを用いたHTTP/3(第1の通信プロトコル)による通信を行うことができる。
制御部100は、QUICコネクションが確立できた場合、TCPコネクションを切断する(ステップS202;Yes→ステップS204)。
つづいて、制御部100は、通信プロトコルとしてHTTP/3を用いた接続を確立する(ステップS206)。つまり、制御部100は、HTTP/3を通信プロトコルとして用いた通信を可能な状態にする。例えば、制御部100は、HTTP/3を通信プロトコルとして用いた通信を可能とするために、ALPNでトークンとして「h3」を指定して、サーバ装置20とプロトコルネゴシエーションを行う。
つづいて、制御部100は、サーバ装置20とSETTINGS FRAMEの交換を行うことにより、サーバ装置20の設定情報を取得する(ステップS208)。
一方、制御部100は、ステップS202において、QUICコネクションが確立できなかった場合、QUICコネクションを切断する(ステップS202;No→ステップS210)。QUICコネクションが確立できない場合とは、例えば、サーバ装置20の、HTTP/3を用いた通信を行う場合に用いられるデフォルトポートに接続できなかった場合や、当該接続の処理が、所定時間経過しても完了しなかった場合である。
このような場合で、TLS over TCPコネクションが確立できたとき、制御部100は、TLS over TCPコネクションを用いた通信を続行する。
つづいて、制御部100は、通信プロトコルとしてHTTP/2接続が可能であるか否か、つまり、HTTP/2を用いた通信が可能であるか否かを判定する(ステップS212)。例えば、制御部100は、ALPNによって、HTTP/2(h2)とHTTP/1.1(http/1.1)とを指定する。制御部100は、サーバ装置20によって、HTTP/2が選択された場合、HTTP/2を用いた通信が可能であると判定する。一方、制御部100は、サーバ装置20によって、HTTP/1.1が選択された場合、HTTP/2を用いた通信が可能ではないと判定する。このとき、制御部100は、サーバ装置20によって選択された通信プロトコルを用いた接続を確立し、通信を開始する。
制御部100は、ステップS212において、HTTP/2を用いた通信が可能であると判定した場合、サーバ装置20とSETTINGS FRAMEの交換を行うことにより、サーバ装置20の設定情報を取得する(ステップS212;Yes→ステップS214)。なお、制御部100は、ステップS212において、HTTP/2を用いた通信が可能ではないと判定した場合、ステップS214における処理を省略(スキップ)する(ステップS212;No)。
また、制御部100は、ステップS208における処理を実行したあと、ステップS214における処理を実行したあと又はステップS214における処理を省略したあと、設定値情報を記憶する(ステップS216)。例えば、制御部100は、ステップS100において取得した識別子をサーバ識別子として含み、通信先のサーバ装置20から取得したSETTINGS FRAMEの内容等を設定情報として含んだ設定値情報を、設定値情報記憶領域162に記憶する。このようにすることで、制御部100は、URIやIPアドレスによって識別される通信先の装置(サーバ装置20)との通信に用いることが可能な通信プロトコルやポートの情報を記憶することができる。
なお、制御部100は、ステップS216において、以下に示す処理を実行する。
・制御部100は、HTTP/2とHTTP/3との何れにも接続可能である場合、接続可能なプロトコルには、HTTP/2とHTTP/3との両方を記憶する。
・制御部100は、サーバ装置20から、通信途中に、フレーム及びヘッダ(例えば、Alt-Svcヘッダ/フレーム)で、別の通信プロトコル/URIで同じリソースが得られることを示された場合、示された情報を記憶する。
・制御部100は、サーバ装置20から、設定のスキップ(SETTINGS FRAMEの交換の省略)が可能であることを示された場合、設定のスキップが可能であることを示す情報を記憶する。なお、制御部100は、設定のスキップが可能であることを、例えば、サーバ装置20から特定のフレームを受信した場合、設定のスキップが可能であることが示されたと判定する。なお、制御部100は、サーバ装置20から、拡張されたSETTINGS FRAMES(例えば、特定の情報が含まれたSETTINGS FRAMES)を受信したときや、サーバ装置20によって所定の処理が実行されたとき、設定のスキップが可能であることが示されたと判定してもよい。
・制御部100は、TLS通信を行った場合は、TLS通信を行ったことを示す情報を記憶する。
上述した処理により、制御部100は、HTTP/3による通信と、HTTP/2による通信との、何れかの通信を開始することができ、サーバ装置20との通信に用いたプロトコルの情報を記憶することができる。なお、制御部100は、QUICコネクション及びTLS over TCPコネクションの何れも確立できなかった場合、図5に記載した処理を終了して、表示部140に、エラーメッセージを表示してもよい。
[1.3.1.3 第2の接続処理]
第2の接続処理について、図6を参照して説明する。第2の接続処理は、通信を行う装置(端末装置10とサーバ装置20)との間で、平文による通信を行うための接続を確立するための処理である。はじめに、制御部100は、サーバ装置20とTCP接続(通信プロトコルとしてTCPを用いた接続)を開始し、TCPコネクションを確立する(ステップS300)。これにより、制御部100は、サーバ装置20との間でTCPコネクションを確立し、TCPを用いた平文の通信を行うことができる。また、このとき、制御部100は、通信プロトコルとしてHTTP/1.1を用いた通信が可能となる。
TCPコネクションが確立した場合、制御部100は、通信プロトコルのアップグレードの要求をサーバ装置20に送信する(ステップS302)。例えば、制御部100は、Switching Protocolを利用して、サーバ装置20に対して、Upgrade要求を送信する。
制御部100は、ステップS302における処理の結果、通信プロトコルをHTTP/1.1からHTTP/2にアップグレード可能であるか否か(HTTP/2接続が可能であるか否か)を判定する(ステップS304)。例えば、制御部100は、サーバ装置20から、HTTP/2へのアップグレードが可能であることを示す情報を受信した場合、HTTP/2接続が可能であると判定する。
HTTP/2接続が可能である場合、制御部100は、サーバ装置20との間に、HTTP/2 clear text接続(HTTP/2 clear textによる通信)を確立し、通信を開始する(ステップS304;Yes→ステップS306)。さらに、制御部100は、サーバ装置20と、SETTINGS FRAMEの交換を行う(ステップS308)。
一方、HTTP/2接続が可能ではない場合、制御部100は、サーバ装置20との間に、HTTP/1.1 clear text接続(HTTP/1.1 clear textによる通信)を確立し、通信を開始する(ステップS304;No→ステップS310)。この場合、制御部100は、SETTINGS FRAMEを交換する処理を省略(スキップ)する。
このようにして、制御部100は、ステップS304において、サーバ装置20との通信に用いることができる通信プロトコルがHTTP/1.1であるかHTTP/2であるかといったことを判定することができる。また、制御部100は、サーバ装置20との通信において、HTTP/2を用いることができる場合、サーバ装置20との通信に用いるプロトコルをHTTP1.1からHTTP/2に変更することができる。
つづいて、制御部100は、設定値情報を記憶する(ステップS312)。ステップS312における処理は、図5のステップS216における処理と同様の処理である。
[1.3.1.4 第1の再接続処理]
第1の再接続処理について、図7を参照して説明する。はじめに、制御部100は、QUICコネクションを確立する(ステップS400)。ここで、制御部100は、図4のステップS110において、通信先であるサーバ装置20がHTTP/3をホストしていることを判定している。したがって、制御部100は、QUICコネクションを確立すればよく、TLS over TCPコネクションを確立する処理を省略することができる。TLS over TCPコネクションを確立する処理を省略することができるため、制御部100は、HTTP/3を用いた通信を効率よく再開することができる。このようにして、制御部100は、通信先であるサーバ装置20と通信を行うとき、当該サーバ装置20の通信に用いることが可能な通信プロトコルとしてHTTP/3(第1のプロトコル)が記憶されている場合、当該HTTP/3を用いた通信を行う。
つづいて、制御部100は、設定のスキップが可能であるか否かを判定する(ステップS402)。例えば、制御部100は、ステップS100において取得したサーバ装置20の識別子に対応するサーバ識別子を含む設定値情報を取得する。制御部100は、取得した設定値情報に設定のスキップが可能であることを示す情報が記憶されている場合、設定のスキップが可能であると判定する。
制御部100は、設定のスキップが可能である場合、設定値を復元する(ステップS402;Yes→ステップS404)。例えば、制御部100は、ステップS402において取得した設定値情報に記憶された設定情報を読み出し、SETTINGS FRAMEの内容を取得し、当該SETTINGS FRAMEを受信した後の状態を再現した上で、サーバ装置20との通信を開始する。この場合、制御部100は、サーバ装置20とのSETTINGS FRAMEを交換する処理をスキップする(ステップS406)。
なお、制御部100は、SETTINGS FRAMEの交換を省略することによりエラーが生じた場合は、HTTP/3の再接続を行う(ステップS408;Yes→ステップS410)。エラーが生じた場合とは、例えば、通信先であるサーバ装置20から、エラーが返された場合である。このような場合は、制御部100は、サーバ装置20と、HTTP/3を用いた通信を行うために必要な情報の送受信を行うことで、HTTP/3の再接続を行う。このとき、制御部100は、ステップS402において取得した設定値情報に、設定のスキップが不可能であることを示す情報を記憶する。なお、制御部100は、設定値情報から、設定のスキップが可能であることを示す情報を削除することにより、設定のスキップが不可能であることを示してもよい。
また、制御部100は、図5のステップS208の処理を実行することにより、サーバ装置20と、SETTINGS FRAMEを交換する処理を実行する。
一方、制御部100は、ステップS402において、設定のスキップが不可能であると判定した場合、サーバ装置20とSETTINGS FRAMEの交換を行う(ステップS402;No→ステップS412)。この場合、制御部100は、通常の方法により、通信プロトコルとしてHTTP/3を用いる場合における処理を行う。
上述した処理により、制御部100は、SETTINGS FRAMEの交換をスキップしてエラーが生じなかった場合や、SETTINGS FRAMEを交換した場合において、通信プロトコルとしてHTTP/3を用いた通信を開始することができる。ここで、再接続時には、制御部100は、TLS over TCPコネクションを確立する処理を実行しなくてもよいため、サーバ装置20への再接続を効率的に行うことができる。
なお、制御部100は、ステップS400におけるQUICコネクションの確立に失敗した場合等、HTTP/3を用いることができない場合、通信先のサーバ装置20に対応する設定値情報に記憶されている通信プロトコルを用いた通信に速やかに切り替える。
[1.3.1.5 第2の再接続処理]
第2の再接続処理について、図8を参照して説明する。はじめに、制御部100は、サーバ装置20とTLS通信を行ったことを示す情報が記憶されているか否かを判定する(ステップS500)。例えば、制御部100は、ステップS100において取得したサーバ装置20の識別子に対応するサーバ識別子を含む設定値情報を取得し、取得した設定値情報にTLS通信を行ったことを示す情報が記憶されているか否かを判定すればよい。
制御部100は、TLS通信を行ったことを示す情報が記憶されている場合、サーバ装置20とTLS接続を開始する(ステップS500;Yes→ステップS502)。この場合は、サーバ装置20がHTTP/3をホストしておらず、プロトコルスキーマがTLSプロトコルを用いた通信を行うことを示す場合である。制御部100は、サーバ装置20に対して、TCP接続を開始し、TLSのALPNネゴシエーションを実行する。これにより、制御部100は、サーバ装置20との間に、TLS over TCPコネクションを確立することができる。
一方、制御部100は、TLS通信を行ったことを示す情報が記憶されていない場合、サーバ装置20に対して、TCP接続(平文の通信)を開始する(ステップS500;No→ステップS504)。この場合は、サーバ装置20がHTTP/3をホストしておらず、プロトコルスキーマがTLSプロトコルを用いた通信を行うことを示していない場合である。このとき、制御部100は、TLSのALPNネゴシエーションは実行しない。これにより、制御部100は、サーバ装置20との間に、TCPコネクションを確立することができる。
つづいて、制御部100は、通信先のサーバ装置20に対応する設定値情報に含まれるサーバ識別子に、プロトコルの情報として、HTTP/2を示す情報が記憶されているか否かを判定する(ステップS506)。
制御部100は、HTTP/2を示す情報が記憶されている場合、サーバ装置20に、Client Connection Prefaceを送信する(ステップS506;Yes→ステップS508)。この場合、制御部100は、サーバ装置20との通信において、通信プロトコルとしてHTTP/2を用いることが予め検出できるため、ステップS508における処理により、ダイレクトモードでHTTP/2を用いた通信を行うことができる。
制御部100は、Client Connection Prefaceを送信することによりエラーが生じた場合は、サーバ装置20がSwitching Protocolをサポートしているか否かを判定する(ステップS510;Yes→ステップS512)。エラーが生じた場合とは、例えば、通信先のサーバ装置20から、エラーが返された場合である。
制御部100は、サーバ装置20がSwitching Protocolをサポートしている場合、図6のステップS302における処理を実行する(ステップS512;Yes)。なお、制御部100は、通信プロトコルのアップグレードの処理の結果に応じて、サーバ装置20との通信に用いることが可能な通信プロトコルを設定値情報に記憶する。
制御部100は、サーバ装置20がSwitching Protocolをサポートしていない場合、ステップS502又はステップS504における処理において確立したTLSコネクション又はTCPコネクションを切断する(ステップS512;No→ステップS514)。また、制御部100は、サーバ装置20に対応する設定値情報を削除し、図4のステップS104における処理を実行する。この場合、制御部100は、設定値情報が記憶されていないとして、サーバ装置20との通信を行う。
ステップS510においてエラーが生じなかった場合、つまり、Client Connection Prefaceの通信が成功したとき、制御部100は、設定のスキップが可能であるか否かを判定する(ステップS510;No→ステップS516)。
制御部100は、設定のスキップが可能である場合、設定値を復元し(ステップS516;Yes→ステップS518)、サーバ装置20とのSETTINGS FRAMEを交換する処理をスキップする(ステップS520)。一方、制御部100は、設定のスキップが不可能である場合、サーバ装置20とSETTINGS FRAMEの交換を行う(ステップS516;No→ステップS524)。ステップS516からステップS524までの処理は、図7におけるステップS402からステップS406及びステップS412における処理と同様の処理である。
なお、制御部100は、ステップS506において、設定値情報に含まれるサーバ識別子に、プロトコルの情報として、HTTP/2を示す情報が記憶されていないと判定した場合は、HTTP/1.1接続(HTTP/1.1を用いた通信)を開始する(ステップS506;No→ステップS526)。この場合、制御部100は、サーバ装置20との通信において、通信プロトコルとしてHTTP/1.1を用いることが予め検出できるため、HTTP/1.1を用いた通信を行うことができる。
[1.3.2 サーバ装置]
[1.3.2.1 メイン処理]
つづいて、図9を参照して、サーバ装置20が実行するメイン処理の流れを説明する。サーバ装置20の制御部200は、図9に示した処理を繰り返し実行する。これにより、端末装置10からのコネクションの確立を待ち受ける。
まず、制御部200は、端末装置10によって、QUICコネクションの確立を行うための処理が開始されたことを検出した場合、第3の接続処理を実行する(ステップS600;Yes→ステップS602)。
一方、制御部200は、QUICコネクションの確立を行うための処理の開始を検出せずに、TCPコネクションの確立を行うための処理が開始されたことを検出したとき、第4の接続処理を実行する(ステップS600;No→ステップS604;Yes→ステップS606)。第3の接続処理と第4の接続処理については後述する。なお、TCPコネクションの確立を行うための処理が開始されたことを検出しなかった場合は、制御部200は、図9に示した処理を終了する(ステップS604;No)。
[1.3.2.2 第3の接続処理]
第3の接続処理について、図10を参照して説明する。制御部200は、QUICコネクションの確立が開始されたとき、当該コネクションにおけるConnection IDと、切断がされていないQUICコネクションのConnection IDとが一致しているか否かを判定する(ステップS700)。制御部200は、Connection IDが一致している場合は、当該Connection IDと一致するQUICコネクションを復帰させる(ステップS700;Yes→ステップS702)。
一方、制御部200は、Connection IDが一致していない場合は(ステップS700;No)、新規のQUICコネクションを確立するための接続を受信したと判定する。この場合、制御部200は、QUICコネクションを確立する通信相手である端末装置10との間で、設定のスキップが可能であるか否かを判定する(ステップS704)。制御部200は、設定のスキップが可能である場合、設定値を復元し(ステップS704;Yes→ステップS706)、端末装置10とのSETTINGS FRAMEを交換する処理をスキップする(ステップS708)。例えば、制御部200は、通信相手である端末装置10に対応する設定値情報を設定値情報記憶領域262から読み出し、読み出した設定値情報に記憶された、端末装置10から受信したSETTINGS FRAMEの情報を取得する。そして、制御部200は、取得したSETTINGS FRAMEの情報を受信した後の状態を再現した上で、端末装置10との通信を開始する。
一方、制御部200は、設定のスキップが不可能である場合、端末装置10とSETTINGS FRAMEの交換を行う(ステップS704;No→ステップS710)。
つづいて、制御部200は、HTTP/2やHTTP1.1をホストしているか否かを判定する(ステップS712)。制御部200は、HTTP/2及びHTTP1.1のうち、何れか一方又は両方をホストしている場合、Alt-Svcの設定を行う(ステップS712;Yes→ステップS714)。Alt-Svcの設定とは、サーバ装置20が端末装置10に対して、ホストしているオリジンやプロトコル等を示すための設定である。例えば、制御部200は、Alt-Svcヘッダに、ホストしている通信プロトコルを示すトークン(「h2」、「h2c」、「http1.1」等)やポートの情報を含める設定をしたり、Alt-Svcフレームを送信する設定をしたりする。なお、制御部200は、HTTP/2及びHTTP1.1の何れもホストしていない場合は、ステップS714における処理を省略(スキップ)する(ステップS712;No)。また、制御部200は、ステップS714において、オリジン(オリジンサーバ)や、サーバの構成に関する設定を端末装置10に対して示すための処理を実行してもよい。
つづいて、制御部200は、端末装置10に対して、HTTPレスポンス(HTTP 200 OK)を送信する(ステップS716)。ここで、制御部200によって、ステップS714における処理が実行されている場合、HTTPレスポンスのヘッダに、Alt-Svcヘッダが設定されたデータや、Alt-Svcフレームが送信される。このようなHTTPレスポンスが端末装置10によって受信されることで、端末装置10は、サーバ装置20が、HTTP/2やHTTP1.1をホストしていることを検出することができる。
また、制御部200は、設定値情報を記憶する(ステップS718)。例えば、制御部200は、通信相手である端末装置10の識別子を含み、当該端末装置10から取得したSETTINGS FRAMEの内容等を設定情報として含んだ設定値情報を、設定値情報記憶領域262に記憶する。
[1.3.2.3 第4の接続処理]
第4の接続処理について、図11を参照して説明する。制御部200は、端末装置10から、Client Connection Prefaceを受信したか否かを判定する(ステップS800)。
制御部200は、Client Connection Prefaceを受信した場合、通信相手である端末装置10との間で、設定のスキップが可能であるか否かを判定する(ステップS800;Yes→ステップS802)。設定のスキップが可能である場合、設定値を復元し(ステップS802;Yes→ステップS804)、端末装置10とのSETTINGS FRAMEを交換する処理をスキップする(ステップS806)。一方、制御部200は、設定のスキップが不可能である場合、端末装置10とSETTINGS FRAMEの交換を行う(ステップS802;No→ステップS808)。ステップS802からステップS808までの処理は、図10におけるステップS704からステップS710までの処理と同様の処理である。
一方、制御部200は、Client Connection Prefaceを受信しなかった場合、端末装置10から、プロトコルアップグレード要求を受信したか否かを判定する(ステップS800;No→ステップS810)。
制御部200は、プロトコルアップグレード要求を受信した場合、端末装置10と、ALPNによるプロトコルのアップグレードを行うときは、ALPNによるネゴシエーションを行う(ステップS812;Yes→ステップS814)。一方、制御部200は、ALPNによるプロトコルのアップグレードを行わないときは、Switching Protocolによるプロトコルのアップグレードを行う(ステップS812;No→ステップS816)。
さらに、制御部200は、端末装置10と、SETTINGS FRAMEの交換を行う(ステップS818)。
なお、制御部200は、ステップS810において、プロトコルアップグレード要求を受信しなかった場合は、端末装置10と、通信プロトコルとしてHTTP1.1を用いた通信を行う(ステップS810;No→ステップS820)。
つづいて、制御部200は、HTTP/3をホストしている場合、Alt-Svcヘッダに、ホストしている通信プロトコルを示すトークン(「h3」等)やポートの情報を含める(ステップS822;Yes→ステップS824)。なお、制御部200は、HTTP/3をホストしていない場合は、ステップS714における処理を省略(スキップ)する(ステップS822;No)。
つづいて、制御部200は、端末装置10に対して、HTTPレスポンス(HTTP 200 OK)を送信する(ステップS826)。ここで、制御部200によって、ステップS824における処理が実行されている場合、HTTPレスポンスのヘッダに、Alt-Svcヘッダが設定されたデータや、Alt-Svcフレームが送信される。このようなHTTPレスポンスが端末装置10によって受信されることで、端末装置10は、サーバ装置20が、HTTP/3をホストしていることを検出することができる。
また、制御部200は、設定値情報を記憶する(ステップS828)。なお、ステップS820からステップS826までの処理は、図10におけるステップS712からステップS718までの処理と同様の処理である。
[1.4 動作例]
図12及び図13を参照して、本実施形態における端末装置10及びサーバ装置20の動作について説明する。図12は、端末装置10が、TLSプロトコルを用いてサーバ装置20と通信を行う場合の処理のシーケンスを表した図である。なお、図12に示した処理は、端末装置10が通信先であるサーバ装置20に対応する設定値情報を記憶していない場合に実行される処理である。
はじめに、端末装置10はQUICコネクションと、TCPコネクションとを確立するための処理を開始する。具体的には、端末装置10とサーバ装置20とは、QUICハンドシェイク(S1000)と、TCPによる3ウェイハンドシェイク(S1002)及びTLSハンドシェイク(S1004)とを、並行して実行する。なお、S1000のQUICハンドシェイクにおいてTLSハンドシェイクも併せて行われるため、QUICコネクションの確立は、TLS over TCPコネクションの確立と比べて、RTT(Round-Trip Time)を小さくすることができる。
HTTP/3を用いるための接続が完了した場合(例えば、HTTP/3側の接続が先に確立した場合)、端末装置10とサーバ装置20とは、TLS Alert(close_notify)を送信することでTLS接続を切断し(S1006)、FINパケットを送信することでTCP接続を切断する(S1008)。これらの処理により、TCPコネクションは切断される。一方、端末装置10とサーバ装置20とは、通信プロトコルとしてHTTP/3を用いて、SETTINGS FRAMEの交換を行い(S1010)、さらに、端末装置10とサーバ装置20とは、HTTP/3を用いて、データ(application data)の送受信を行う(S1012)。S1006及びS1008における処理と、S1010及びS1012における処理とは並行して実行される。
一方、HTTP/2を用いるための接続が完了した場合(例えば、HTTP/2側の接続が先に確立した場合)、端末装置10は、QUICコネクションを切断するために、
サーバ装置20にHANDSHAKEパケット又はInitialパケットを用いてCONNECTION_CLOSEを送信する(S1014)。この場合、端末装置10とサーバ装置20とは、通信プロトコルとしてHTTP/1.1又はHTTP/2を用いた通信を行う。
ここで、端末装置10によってALPNによりHTTP/2を用いた通信が可能であることが判定された場合、端末装置10とサーバ装置20とは、Connection Prefaceの送受信(S1016)、SETTINGS FRAMEの交換(S1018)を行う。さらに、端末装置10とサーバ装置20とは、HTTP/2を用いて、データ(application data)の送受信を行う(S1020)。
端末装置10によってALPNによりHTTP/2を用いた通信が不可能であることが判定された場合は、端末装置10とサーバ装置20とは、HTTP/1.1を用いて、データ(application data)の送受信を行う(S1022)。
このようにして、制御部100は、端末装置10は、サーバ装置20との通信を行う場合において、HTTP/3、HTTP/2及びHTTP1.1の何れかの通信プロトコルを選択して、サーバ装置20との通信を行うことができる。また、このときに端末装置10によって選択された通信プロトコルや、サーバ装置20から受信したHTTPレスポンスのAlt-Svcヘッダに含まれて通知された情報を含んだ設定値情報を記憶する(S1024)。
図13は、端末装置10が、通信先のサーバ装置20に対応する設定値情報を記憶し、当該サーバ装置20に対して、通信プロトコルとしてHTTP/3を用いた通信を行う場合の処理のシーケンスを表した図である。
はじめに、端末装置10とサーバ装置20とは、QUICハンドシェイクを実行する(S2000)。つづいて、端末装置10とサーバ装置20との両方の装置がSETTINGS FRAMEの交換が省略可能である場合、端末装置10は、サーバ装置20に対して、空のSETTINGS FRAME(具体的なデータが含まれないSETTINGS FRAME)を送信する(S2002)。また、サーバ装置20は、端末装置10に対して、空のSETTINGS FRAMEを送信する(S2004)。
空のSETTINGS FRAMEを送信することで、端末装置10やサーバ装置20は、SETTINGS FRAMEの内容(設定値)に変更がないことを判定することができる。端末装置10やサーバ装置20は、通信相手から空のSETTINGS FRAMEを受信したら、当該通信相手に対応する設定値情報に記憶されている情報に基づき、SETTINGS FRAMEの内容を復元する。
なお、設定値に変更がある場合は、変更した内容を含むSETTINGS FRAMEが送信されてもよい。この場合、所定の内容を含むSETTINGS FRAMEを受信した装置は、設定値として受信した内容を優先して使用する。
一方、端末装置10とサーバ装置20とのSETTINGS FRAMEの交換が省略不可能である場合、端末装置10は、サーバ装置20に対して、設定値を示すデータを含むSETTINGS FRAMEを送信する(S2006)。また、サーバ装置20は、端末装置10に対して、設定値を示すデータを含むSETTINGS FRAMEを送信する(S2008)。
なお、SETTINGS FRAMEの交換を省略(スキップ)したときにエラーが生じた場合は、サーバ装置20から端末装置10へ、所定の情報が送信される。例えば、サーバ装置20がGraceful shutdownを選択した場合、サーバ装置20から端末装置10に対して、GOWAY FRAMEが送信される(S2010)。その上で、サーバ装置20から端末装置10に対して、CONNECTION_CLOSEが送信される(S2012)。なお、サーバ装置20によって強制的なシャットダウンが選択された場合、サーバ装置20から端末装置10に対して、GOWAY FRAMEが送信されることなく、CONNECTION_CLOSEが送信される。このように、サーバ装置20によってコネクションが切断された場合、端末装置10は、HTTP/3を用いた通信を行うために、図12に示したS1000やS1010における処理を実行することで、サーバ装置20に対する再接続の処理を行う。
SETTINGS FRAMEの交換を省略(スキップ)したときにエラーが生じなかった場合は、端末装置10とサーバ装置20とは、HTTP/3を用いて、データ(application data)の送受信を行う(S2014)。
上述したように、本実施形態における端末装置は、以下のように、通信速度が速いHTTP/3(第1の通信プロトコル)と、通信速度が遅いHTTP/2(第2の通信プロトコル)とから、HTTP/3を効率的に優先して選択することができる。
(1)端末装置は、HTTP/3を用いるための接続(QUICコネクション)が確立できた場合、通信プロトコルとしてHTTP/3を使用する。
(2)端末装置は、通信先のサーバ装置との通信にHTTP/3を使用することを示す情報(設定値情報)が記憶されている場合は、HTTP/3を使用する。
したがって、端末装置は、HTTP/1.1、HTTP/2、HTTP/3といったように、3種類の通信プロトコルが選択可能である場合であっても、サーバ装置等他の装置との通信において用いる通信プロトコルとして、HTTP/3を効率的に選択することができる。この結果、端末装置は、通信を開始するまでに必要となる時間を短縮することができる。また、端末装置は、QUICコネクションといった、通信速度が速い接続を用いる通信プロトコルを優先的に選択し使用するため、通信先の装置と高速な通信を行うことができ、通信速度の低下を抑制することができる。
[2.第2実施形態]
つづいて第2実施形態について説明する。第2実施形態は、端末装置に応じて、優先して選択される通信プロトコルを変更する実施形態である。
HTTP/3を用いた通信は、パケットロスが生じた場合であっても通信速度が低下しにくいため、HTTP/2を用いた通信と比べて通信速度が速い。しかし、有線接続の場合は、パケットロスが生じる可能性が小さいため、HTTP/2を用いた通信であっても、通信速度が著しく低下する可能性は小さい。
このような場合に対応するため、制御部100は、端末装置10の通信環境や、コネクションの確立の順番に応じて、優先して選択する通信プロトコルを切り替える。具体的には、制御部100は、ステップS202において、以下に示す処理を実行する。
(1)制御部100は、TLS over TCPコネクションが先に確立され、端末装置10が有線接続である場合は、通信プロトコルとしてHTTP/2を選択する。これにより、制御部100は、HTTP/2を用いて、サーバ装置20と通信を行う。
(2)上述した場合以外は、制御部100は、通信プロトコルとしてHTTP/3を選択する。これにより、制御部100は、HTTP/3を用いて、サーバ装置20と通信を行う。
なお、端末装置10が有線接続である場合とは、通信部190が有線接続による通信を行う場合であり、端末装置10が、ルータ等の通信機器と、LANケーブル等の伝送媒体により接続されている場合である。例えば、端末装置10がデスクトップPCであり、LANケーブル等により他の通信機器と接続されている場合、通信プロトコルとしてHTTP/2が優先的に選択される。一方、端末装置10がラップトップPCやモバイルPCであり、無線接続により他の通信機器と接続されている場合、通信プロトコルとしてHTTP/3が優先的に選択される。
このように、制御部100は、TLS over TCPコネクションが先に確立され、かつ、通信環境が有線接続であるといった所定の条件を満たす場合は、QUICコネクションによる接続が確立されるまで待つことなく、HTTP/2を優先して選択する。これにより、端末装置10は、HTTP/3を用いて通信を行うための処理を省くことができるため、サーバ装置20との通信を開始するまでの時間を短縮することができる。
なお、HTTP/2を優先して選択するための条件は、上述した条件以外の条件であってもよい。
また、制御部100は、ステップS216において、通信先であるサーバ装置20との通信に、HTTP/3を用いることが可能であることを示す情報を記憶する。したがって、制御部100は、当該サーバ装置20と再度通信を行う場合は、通信プロトコルとしてHTTP/3を用いることができる。
このように、本実施形態によれば、端末装置の通信環境や、コネクションの確立の順番に応じて、優先して選択する通信プロトコルを切り替えることができる。
[3.第3実施形態]
第3実施形態について説明する。第3実施形態は、共通鍵暗号方式を用いて鍵交換を行うTLSを利用する通信プロトコル間で、鍵情報を共有する実施形態である。
HTTP/3(第1の通信プロトコル)を用いるための接続(第1の接続)であるQUICコネクションは、コネクションを確立するときにTLSプロトコルを利用する。したがって、QUICコネクションが確立されるとき、端末装置10とサーバ装置20との間で、鍵情報(通信先の公開鍵の情報)が交換される。
一方、HTTP/2(第2の通信プロトコル)を用いるための接続(第2の接続)であるTLS over TCPコネクションも、コネクションを確立するときにTLSプロトコルを利用する。したがって、TLS over TCPコネクションが確立されるとき、端末装置10とサーバ装置20との間で、鍵情報(通信先の公開鍵の情報)が交換される。
ここで、端末装置10とサーバ装置20とは、第1の接続又は第2の接続のうち一方の接続を確立するときに通信相手となる装置から受信した鍵情報を記憶し、当該装置と他方の接続を確立するときは、記憶されている鍵情報を使用する。より具体的には、端末装置10とサーバ装置20とは、TLS1.3以上の同じバージョンのTLSを利用するプロトコル間(QUIC/UDP-TCP間)で、鍵情報を共有する。これにより、端末装置10とサーバ装置20とは、HTTP/2とHTTP/3との間で、用いる通信プロトコルを切り替える場合において、接続の暗号化(暗号化接続)を行うためのやり取り(例えば、TLSハンドシェイク)のための処理を省略することができる。
このように、本実施形態によれば、端末装置やサーバ装置は、接続を暗号化するための処理を省略することができ、通信を開始するまでに必要となる時間を短縮することができる。
[4.変形例]
本発明は上述した各実施の形態に限定されるものではなく、種々の変更が可能である。すなわち、本発明の要旨を逸脱しない範囲内において適宜変更した技術的手段を組み合わせて得られる実施の形態についても本発明の技術的範囲に含まれる。例えば、上述した実施形態では、端末装置とサーバ装置との間で行われる通信は、WebページをWebブラウザ等に表示させるために送信されるデータ等の送受信であるとして説明したが、これ以外の通信であってもよい。つまり、端末装置とサーバ装置との間で、HTTP/3、HTTP/2、HTTP1.1の何れかの通信プロトコルを用いてデータの送受信を行う場合、各実施形態において記載した処理に対して必要な修正を行った上で、当該データの送受信に適用できる。また、上述した説明では、HTTP通信を行う場合における、相対的に上位のバージョンの通信プロトコルをHTTP/3とし、相対的に下位のバージョンの通信プロトコルをHTTP/2として説明した。しかし、更に新しいバージョンのHTTP通信の通信プロトコルが開発された場合、当該新しいバージョンのHTTP通信の通信プロトコルを上位の通信プロトコルとし、既存のHTTP通信の通信プロトコルを下位の通信プロトコルとして、本開示を適用してもよい。
また、上述した実施形態は、説明の都合上、それぞれ別に説明している部分があるが、技術的に可能な範囲で組み合わせて実行してもよいことは勿論である。例えば、第2実施形態と第3実施形態とを組み合わせてもよい。この場合、端末装置は、優先して選択する通信プロトコルを切り替えることと、鍵情報を共有することとを実現することができる。
また、実施形態において各装置で動作するプログラムは、上述した実施形態の機能を実現するように、CPU等を制御するプログラム(コンピュータを機能させるプログラム)である。そして、これら装置で取り扱われる情報は、その処理時に一時的に一時記憶装置(例えば、RAM)に蓄積され、その後、各種ROM(Read Only Memory)やHDD等の記憶装置に格納され、必要に応じてCPUによって読み出し、修正・書き込みが行なわれる。
ここで、プログラムを格納する記録媒体としては、半導体媒体(例えば、ROMや、不揮発性のメモリカード等)、光記録媒体・光磁気記録媒体(例えば、DVD(Digital Versatile Disc)、MO(Magneto Optical Disc)、MD(Mini Disc)、CD(Compact Disc)、BD (Blu-ray(登録商標) Disk) 等)、磁気記録媒体(例えば、磁気テープ、フレキシブルディスク等)等の何れであってもよい。また、ロードしたプログラムを実行することにより、上述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、オペレーティングシステムあるいは他のアプリケーションプログラム等と共同して処理することにより、本発明の機能が実現される場合もある。
また、市場に流通させる場合には、可搬型の記録媒体にプログラムを格納して流通させたり、インターネット等のネットワークを介して接続されたサーバコンピュータに転送したりすることができる。この場合、サーバコンピュータの記憶装置も本発明に含まれるのは勿論である。
1 システム
10 端末装置
100 制御部
140 表示部
150 操作部
160 記憶部
162 設定値情報記憶領域
190 通信部
20 サーバ装置
260 記憶部
262 設定値情報記憶領域
290 通信部

Claims (8)

  1. 制御部と、通信先とHTTP(Hyper Text Transfer Protocol)通信を行う通信部とを備え、
    前記制御部は、
    HTTP/3を用いるための第1の接続と、HTTP/2を用いるための第2の接続とを確立するための処理を開始し、
    前記第1の接続が確立できた場合、前記HTTP/3を用いて、前記通信部を介して通信を行う
    ことを特徴とする端末装置。
  2. 前記通信先と、前記通信先との通信に用いることが可能な通信プロトコルを記憶する記憶部をさらに備え、
    前記制御部は、前記通信先と通信を行うとき、前記記憶部に当該通信先の通信に用いることが可能な前記通信プロトコルとして前記HTTP/3が記憶されている場合、前記HTTP/3を用いて、前記通信先と通信を行う
    ことを特徴とする請求項1に記載の端末装置。
  3. 前記制御部は、前記第1の接続と前記第2の接続とが確立できた場合、前記第2の接続が先に確立され、前記通信部が有線接続による通信を行うときは前記HTTP/2を用いて前記通信先と通信を行い、それ以外のときは、前記HTTP/3を用いて前記通信先と通信を行うことを特徴とする請求項1又は2に記載の端末装置。
  4. 前記制御部は、前記第1の接続及び前記第2の接続が公開鍵暗号方式を用いた接続である場合、前記第1の接続及び前記第2の接続のうち一方の接続を介して前記通信先から鍵情報を取得した場合、当該通信先と他方の接続を確立するとき、前記鍵情報を用いることを特徴とする請求項1から3の何れか一項に記載の端末装置。
  5. 制御部とHTTP(Hyper Text Transfer Protocol)通信を行う通信部とを備え、
    前記通信部は、HTTP/3を用いるための第1の接続及びHTTP/2を用いるための第2の接続を確立することが可能であり、
    前記制御部は、
    前記第1の接続及び前記第2の接続が公開鍵暗号方式を用いた接続である場合、前記第1の接続又は前記第2の接続のうち一方の接続を介して通信先から鍵情報を取得した場合、当該通信先と他方の接続を確立するとき、前記鍵情報を用いる
    ことを特徴とするサーバ装置。
  6. HTTP(Hyper Text Transfer Protocol)通信を行う端末装置の通信方法であって、
    HTTP/3を用いるための第1の接続とHTTP/2を用いるための第2の接続とを確立するための処理を開始するステップと、
    前記端末装置が、前記第1の接続が確立できた場合、前記HTTP/3を用いて通信を行うステップと、
    を含むことを特徴とする通信方法。
  7. コンピュータに、
    HTTP(Hyper Text Transfer Protocol)通信を行うコンピュータに、
    HTTP/3を用いるための第1の接続とHTTP/2を用いるための第2の接続とを確立するための処理を開始する機能と、
    前記第1の接続が確立できた場合、前記HTTP/3を用いて通信を行う機能と、
    を実現させることを特徴とするプログラム。
  8. 制御部と通信部とを備え、
    前記制御部は、
    前記通信部を介して、通信速度が速い第1の通信プロトコルを用いるための第1の接続と、前記通信速度が遅い第2の通信プロトコルを用いるための第2の接続とを確立するための処理を開始し、
    前記第1の接続が確立できた場合、前記第1の通信プロトコルを用いて通信を行う
    ことを特徴とする端末装置。
JP2021091858A 2021-05-31 2021-05-31 端末装置、サーバ装置、通信方法及びプログラム Pending JP2022184168A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021091858A JP2022184168A (ja) 2021-05-31 2021-05-31 端末装置、サーバ装置、通信方法及びプログラム
US17/752,039 US11799942B2 (en) 2021-05-31 2022-05-24 Terminal device and communication method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021091858A JP2022184168A (ja) 2021-05-31 2021-05-31 端末装置、サーバ装置、通信方法及びプログラム

Publications (1)

Publication Number Publication Date
JP2022184168A true JP2022184168A (ja) 2022-12-13

Family

ID=84195318

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021091858A Pending JP2022184168A (ja) 2021-05-31 2021-05-31 端末装置、サーバ装置、通信方法及びプログラム

Country Status (2)

Country Link
US (1) US11799942B2 (ja)
JP (1) JP2022184168A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11799910B2 (en) * 2021-07-09 2023-10-24 Cujo LLC Network connection management
US11930069B1 (en) * 2023-02-28 2024-03-12 Cisco Technology, Inc. HTTP/3 and HTTP/2 connectivity detection using parallel probes for preferred protocol selection

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7440560B1 (en) * 2003-11-17 2008-10-21 At&T Corp. Schema for empirical-based remote-access internet connection
US9578561B2 (en) * 2013-11-18 2017-02-21 At&T Mobility Ii Llc Method and apparatus for managing handovers in a wireless network
JP6429559B2 (ja) 2014-09-26 2018-11-28 キヤノン株式会社 通信装置、通信システム、情報処理方法及びプログラム
US10602551B2 (en) * 2018-06-27 2020-03-24 Charter Communications Operating, Llc Methods and apparatus for testing alternative wireless connections and selecting a wireless connection
JP2022051975A (ja) * 2019-02-12 2022-04-04 ソニーグループ株式会社 情報処理装置および情報処理方法
US11792626B2 (en) * 2019-02-25 2023-10-17 Nokia Solutions And Networks Oy Combined service discovery and connection setup for service-based architectures
WO2021026509A1 (en) * 2019-08-08 2021-02-11 Intel Corporation Link performance prediction and media streaming technologies
US11496403B2 (en) * 2020-02-24 2022-11-08 Cloudflare, Inc. Modifying the congestion control algorithm applied to a connection based on request characteristics
US11258823B2 (en) * 2020-06-25 2022-02-22 Nokia Solutions And Networks Oy Multilayer tunneling of protocols over QUIC
US11196833B1 (en) * 2020-12-29 2021-12-07 Teso LT, UAB Proxy server synchronizer
US11196712B1 (en) * 2020-12-29 2021-12-07 Teso LT, UAB Proxy scraper detector

Also Published As

Publication number Publication date
US20220385719A1 (en) 2022-12-01
US11799942B2 (en) 2023-10-24

Similar Documents

Publication Publication Date Title
US8874756B2 (en) Information processing unit, information processing method, client device and information processing system
JP4903270B2 (ja) 冗長の接続を除去する方法
EP2001198B1 (en) File protocol for transaction based communication
US7933261B2 (en) Communication method, communication system, communication device, and program using multiple communication modes
EP2156638B1 (en) Multiplexed data stream protocol
US20130086142A1 (en) System and Method for Mobility and Multi-Homing Content Retrieval Applications
US10057326B2 (en) Client-adjustable window size for connectionless transfer protocols
JP2022184168A (ja) 端末装置、サーバ装置、通信方法及びプログラム
US20150249699A1 (en) Method and apparatus of performing remote computer file exchange
US9191406B2 (en) Message relaying apparatus, communication establishing method, and computer program product
EP3032838A1 (en) Message processing method, device, gateway, set-top box and internet protocol television system
US9357014B2 (en) Service-based networking
WO2012129468A1 (en) System and method for sharing data from a local network to a remote device
US10367894B2 (en) Information processing apparatus, method for controlling the same, non-transitory computer-readable storage medium, and information processing system
US10506080B2 (en) Communication apparatus, communication system, information processing method, and storage medium
US8838813B2 (en) Information processing unit, information processing method, remote server, and information processing system
US9596326B2 (en) Communication apparatus, communication method, and non-transitory computer-readable medium
AU2014231331B2 (en) System and method for reliable messaging between application sessions across volatile networking conditions
JP2009164960A (ja) セキュリティ通信装置、及び方法
US11212250B2 (en) Relay device, network system, and network control method
JP6610721B2 (ja) ストレージデバイス及びプログラム
WO2013081149A1 (ja) 情報処理装置、情報処理システム、及びサーバ装置
CN117640609A (zh) 点对点p2p传输方法、系统及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240321