JP2016218730A - 通信装置、通信方法、及びプログラム - Google Patents

通信装置、通信方法、及びプログラム Download PDF

Info

Publication number
JP2016218730A
JP2016218730A JP2015102822A JP2015102822A JP2016218730A JP 2016218730 A JP2016218730 A JP 2016218730A JP 2015102822 A JP2015102822 A JP 2015102822A JP 2015102822 A JP2015102822 A JP 2015102822A JP 2016218730 A JP2016218730 A JP 2016218730A
Authority
JP
Japan
Prior art keywords
communication device
data
connection
communication
notification
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.)
Granted
Application number
JP2015102822A
Other languages
English (en)
Other versions
JP6391532B2 (ja
Inventor
幸夫 沼上
Yukio Numagami
幸夫 沼上
健介 安間
Kensuke Yasuma
健介 安間
國松 亮
Akira Kunimatsu
亮 國松
智哉 酒井
Tomoya Sakai
智哉 酒井
和矢 谷口
Kazuya Taniguchi
和矢 谷口
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2015102822A priority Critical patent/JP6391532B2/ja
Priority to CN201680029274.0A priority patent/CN107615257B/zh
Priority to PCT/JP2016/001843 priority patent/WO2016185654A1/en
Priority to US15/574,434 priority patent/US10917446B2/en
Priority to EP16796051.7A priority patent/EP3298499B1/en
Publication of JP2016218730A publication Critical patent/JP2016218730A/ja
Application granted granted Critical
Publication of JP6391532B2 publication Critical patent/JP6391532B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/26Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • 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
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】通信装置が送信を許可するデータ量を通知する処理に係る、通信装置の処理負荷の増大を抑制する。【解決手段】第2の通信装置20のHTTP通信制御部307は、第1の通信装置から第2の通信装置20への論理的な接続を使用したデータの送信を許可するデータ量に関する情報を、第1の通信装置に通知し、通知に応じて第1の通信装置から送信された、コンテンツを構成するデータを受信し、WINDOW_UPDATE送信判断部308は、コンテンツを構成するデータのうちHTTP通信制御部307が受信していないデータの量が所定値より小さい場合に、論理的な接続が切断されるまでHTTP通信制御部307による前記通知を行わないよう制御する。【選択図】図3

Description

本発明は、論理的な接続を使用して通信を行うための通信方法に関する。
インターネット標準技術として広く利用されている、OSI参照モデルにおけるアプリケーション層のプロトコル(通信規約)の一つに、HTTP(Hyper Text Transfer Protocol)がある。HTTPの新しいバージョンとして、インターネット標準化団体(IETF:Internet Engineering Task Force)においてHTTP/2の標準策定が行われた。HTTP/2規格では、HTTPメッセージを用いたフロー制御の仕組みが規定されている。フロー制御は、通信装置が受信バッファの容量を超えるデータを受信してデータを取りこぼすことを防ぐために用いられる。従来は、トランスポート層のプロトコルの一つであるTCP(Transmission Control Protocol)の機能によりフロー制御が行われていた(特許文献1参照)。一方、HTTP/2におけるフロー制御では、制御フレームの一つであるWINDOW_UPDATEフレームを用いてデータの送受信が管理される。受信側の通信装置は、受信バッファに格納可能なデータ量を表すウインドウサイズを管理し、受信バッファ内のデータを処理したことによるウインドウサイズの増加量を、WINDOW_UPDATEフレームの送信により送信側の通信装置に通知する。送信側の通信装置は、WINDOW_UPDATEフレームにより通知された量のデータを、受信側の通信装置に新たに送信することが許可されることとなる。HTTP/2通信では通常、通信装置がDATAフレームの受信処理を行ってウインドウサイズが変化する度に、WINDOW_UPDATEフレームの送信を行う。
特開2009−71766号公報
しかしながら、受信側の通信装置が送信側の通信装置に送信を許可するデータ量の通知を頻繁に行うと、受信側の通信装置における処理負荷が大きくなってしまうという課題がある。
本発明は上記課題に鑑み、通信装置が送信を許可するデータ量を通知する処理に係る、通信装置の処理負荷の増大を抑制するための技術を提供することを目的とする。
上記の課題を解決するため、本発明に係る通信装置は、例えば以下の構成を備える。すなわち、送信装置との間の論理的な接続を使用して、前記送信装置からコンテンツを構成するデータを受信する通信装置であって、前記送信装置から前記通信装置への前記論理的な接続を使用したデータの送信を許可するデータ量に関する情報を、前記送信装置に通知する通知手段と、前記通知手段による前記通知に応じて前記送信装置から送信された、前記コンテンツを構成するデータを受信する受信手段と、前記コンテンツを構成するデータのうち前記受信手段が受信していないデータの量が所定値より小さい場合に、前記論理的な接続が切断されるまで前記通知手段による前記通知を行わないよう制御する制御手段とを有する。
本発明によれば、通信装置が送信を許可するデータ量を通知する処理に係る、通信装置の処理負荷の増大を抑制することができる。
実施形態に係る通信システムの構成例を示す図である。 実施形態に係る第2の通信装置20のハードウェア構成例を示すブロック図である。 実施形態に係る第2の通信装置20の機能モジュール構成例を示すブロック図である。 第1実施形態に係る、第2の通信装置20がストリームにおける最後のデータ受信に対してストリーム用WINDOW_UPDATEフレームを送信しない場合のシステムの動作を説明するためのシーケンス図である。 実施形態に係る、第2の通信装置20と第1の通信装置10とのHTTP通信接続に関する動作を説明するためのシーケンス図である。 第1実施形態に係る、第2の通信装置20がコネクションにおける最後のデータ受信に対してコネクション用WINDOW_UPDATEフレームを送信しない場合のシステムの動作を説明するためのシーケンス図である。 第1実施形態に係る、第2の通信装置20によるWINDOW_UPDATEフレームの送信判断に関する動作を説明するためのフローチャートである。 第2実施形態に係る、第2の通信装置20がContent−Length及びWindowSizeに基づいてWINDOW_UPDATEフレームの送信判断を行う場合のシステムの動作を説明するためのシーケンス図である。 第2実施形態に係る、第2の通信装置20によるWINDOW_UPDATEフレームの送信判断に関する動作を説明するためのフローチャートである。 第3実施形態に係る、第1の通信装置10がWINDOW_UPDATEフレームにより通知するデータ量をContent−Legthに基づいて判断する場合のシステムの動作を説明するためのシーケンス図である。
以下、本発明の実施形態について、図面を参照して説明する。なお、以下の実施形態は特許請求の範囲に係る本発明を限定するものではなく、また、以下の実施形態で説明する特徴の組み合わせの全てが本発明に必須のものとは限らない。
<第1実施形態>
[システム構成]
図1は、通信システムの構成例を示す図である。通信システムは第1の通信装置10(以下、通信装置10)と第2の通信装置20(以下、通信装置20)とを備え、これらがIEEE802.11に則った無線LAN(Local Area Network)により接続されている。
通信装置10は、クライアントとしての通信装置であり、通信装置20との間の論理的な接続(後述するコネクションやストリーム等)を使用して、コンテンツ(例えばテキストや画像、動画等)を構成するデータを送信又は受信する。通信装置20は、サーバとしての通信装置であり、通信装置10との間の論理的な接続を使用して、コンテンツを構成するデータを送信又は受信する。通信装置10及び通信装置20の具体例としては、デジタルカメラ、デジタルビデオカメラ、ネットワークカメラ、プリンタ、デジタル複合機、デジタルテレビ、プロジェクタ、携帯電話、スマートフォン、PC、及びサーバ装置などがある。通信の内容に応じて、通信装置10と通信装置20の何れか一方がデータ送信装置となり、他方がデータ受信装置となる。
例えば、通信装置10がプリンタであり通信装置20がサーバ装置である場合、ユーザはプリンタの操作パネルを操作することで、サーバ装置に記憶されている画像の中から印刷したい画像を選択する。画像が選択されると、プリンタはその画像のデータを送信するようサーバ装置に要求し、論理的な接続を使用してその画像データを受信し印刷する。この場合、サーバ装置である通信装置20がデータ送信装置となり、プリンタである通信装置10がデータ受信装置となる。また例えば、通信装置10がデジタルカメラであり通信装置20がサーバ装置である場合、ユーザはカメラに記憶された画像の中からサーバ装置にアップロードしたい画像を選択する。画像が選択されると、デジタルカメラは論理的な接続を使用してその画像データをサーバ装置に送信する。この場合、デジタルカメラである通信装置10がデータ送信装置となり、サーバ装置である通信装置20がデータ受信装置となる。
なお、本実施形態では通信装置10と通信装置20とが直接無線LAN接続を行う例を示すが、これに限らず、外部の無線アクセスポイントを経由して接続しても良い。また、無線LAN通信機能に限らず、例えばBluetooth(登録商標)、ZigBee(登録商標)、及びRFIDなどの他の無線通信機能を利用しても良い。また、例えばEthernet(登録商標)などの有線LAN通信機能、または無線LAN通信機能と有線LAN通信機能の組合せを利用しても良い。有線LAN接続の場合は、例えばネットワークスイッチやルータなどの中継装置を経由して接続してもよい。さらに、本実施形態では通信装置10と通信装置20は同一LAN上で接続しているが、これに限らず、例えばWAN(Wide Area Network)、インターネット、及び携帯電話用の公衆無線回線などを経由して接続してもよい。
次に、通信装置の構成要素を詳細に説明する。図2は、通信装置20のハードウェア構成例を示すブロック図である。なお、通信装置10も通信装置20と同じ構成である。本実施形態では通信装置10がPOSTメソッドを使用して通信装置20にデータをアップロードする場合について説明するため、ここではフロー制御を行う通信装置20を中心に説明する。通信装置20は、CPU201、ROM202、RAM203、補助記憶装置204、表示部205、操作部206、無線通信部207、及びアンテナ208を備える。
CPU201は、通信装置20の全体を制御する。ROM202は、変更を必要としないプログラムやパラメータを格納する。RAM203は、補助記憶装置204などから供給されるプログラムやデータを一時記憶する。補助記憶装置204は、画像コンテンツや映像コンテンツなどのデータを記憶する。表示部205は、ユーザが通信装置20を操作するためのGUI(Graphical User Interface)を表示する。操作部206は、ユーザが通信装置20を操作するための入力インタフェースである。無線通信部207は、アンテナ208を制御し、通信装置10との無線LAN通信を行う。通信装置10と通信装置20とが外部の無線アクセスポイントを経由して接続する場合は、無線通信部207はアンテナ208を制御して無線アクセスポイント(不図示)との無線LAN通信を行う。なお、本実施形態では表示部205と操作部206は通信装置20の内部に存在するが、表示部205及び操作部206の少なくとも一方が通信装置20の外部に別の装置として存在していてもよい。
[機能モジュール構成]
図3は、通信装置20の機能モジュール構成例を示すブロック図である。なお、通信装置10も通信装置20と同じ構成である。通信装置20は、制御部301、無線LAN通信制御部302(以下、無線制御部302)、表示制御部303、操作制御部304、記憶制御部305、及びTCP/IP通信制御部306(以下、TCP制御部306)を備える。通信装置20はまた、HTTP通信制御部307(以下、HTTP制御部307)、WINDOW_UPDATE送信判断部308(以下、UPDATE判断部308)、及びGOAWAY判断部309を備える。通信装置20はさらに、最終DATAフレーム判断部310(以下、最終判断部310)、WindowSize判断部311(以下、Size判断部311)及びContent−Length取得部312(以下、Length取得部312)を備える。各モジュールは、CPU201がROM202に格納されたプログラムをRAM203に展開して後述する各フローチャートに従った処理を実行することで実現されている。また例えば、CPU201を用いたソフトウェア処理の代替としてハードウェアによる処理を行う場合には、ここで説明する各モジュールの処理に対応させた演算部や回路を構成すればよい。なお、通信装置20が上記のモジュール全てを備えることは必須でない。
制御部301は、通信装置20が備える個々の機能モジュールを制御する。無線制御部302は無線通信部207を制御し、通信装置10との無線LAN通信の制御を行う。通信装置10と通信装置20とが外部の無線アクセスポイントを経由して接続する場合は、無線制御部302は無線通信部207を制御して無線アクセスポイント(不図示)との無線LAN通信の制御を行う。表示制御部303は表示部205を制御し、通信装置20におけるGUIの表示制御を行う。操作制御部304は操作部206を制御し、通信装置20に対するユーザからの操作入力の制御を行う。記憶制御部305はRAM203及び補助記憶装置204を制御し、処理データや画像コンテンツ、映像コンテンツなどのデータを記憶または削除する。
TCP制御部306は、無線制御部302を利用して、通信装置10との間でTCP/IP(Internet Protocol)方式の通信制御を行う。なお、本実施形態ではTCP/IP通信を利用する例を示すが、これに限らず、UDP(User Datagram Protocol)など他のプロトコルに基づく通信をしても良い。HTTP制御部307は、TCP制御部306を利用して、通信装置10との間でHTTP/2方式の通信制御を行う。また、HTTP制御部307は、通信装置10との間でTLS(Transport Layer Security)を利用したHTTPS(HTTP Security)方式の通信制御も行う。ただし、HTTP制御部307はこれら以外の方式(例えばSPDY等)に基づく通信制御を行ってもよい。
HTTP/2方式の通信を行う通信装置は、OSI参照モデルのトランスポート層におけるコネクション(論理的な第1接続)を通信装置間で確立する。通信装置はさらに、コネクションに基づいて複数のストリーム(論理的な第2接続)を確立することができ、それぞれのストリームにおいて独立したシーケンスで通信を行う。ストリームの確立は、確立するストリームのIDを指定したHEADERSフレームを、そのストリームの基礎となるコネクションを使用して通信装置が相手側の通信装置に送信することにより行われる。コネクションを使用して送信されるメッセージにはストリームIDが設定されており、そのメッセージがコネクション上のどのストリームを使用して送信されるメッセージであるかが特定される。また、HTTP/2において通信装置間でやり取りされるメッセージは、フレームという形式をとる。フレームの具体例としては、制御情報を含むHEADERSフレームやWINDOW_UPDATEフレーム、コンテンツを構成するデータ(ペイロードデータ)の一部又は全部を含むDATAフレームなどがある。なお、通信装置20は、例えばHTTP/2以外のプロトコルに従って通信を行う場合などには、コネクションやストリーム以外の論理的な接続を使用してもよい。
UPDATE判断部308は、コネクション用のWINDOW_UPDATEフレーム及びストリーム用のWINDOW_UPDATEフレームを送信するか否かを判断する。この判断には、GOAWAY判断部309、最終判断部310、Size判断部311、及びLength取得部312の少なくとも何れかが利用される。
UPDATE判断部308は、WINDOW_UPDATEフレームを送信する判断を下した場合、HTTP制御部307を使用して通信装置10にWINDOW_UPDATEフレームを送信する。通信装置20は、通信装置10から通信装置20へのストリームを使用したデータの送信を許可するデータ量に関する情報(第1情報)を、ストリーム用WINDOW_UPDATEフレームにより通信装置10に通知する。また、通信装置10から通信装置20へのコネクションに基づく1以上のストリームを使用したデータの送信を許可するデータ量に関する情報(第2情報)は、コネクション用WINDOW_UPDATEフレームにより通知される。通知を受けた通信装置10は、WINDOW_UPDATEフレームに記述されたデータ量に関するパラメータに基づいた値を上限とする量のペイロードデータを、通信装置20に送信する。なお、通信装置20は、例えばHTTP/2以外のプロトコルに従って通信を行う場合などには、WINDOW_UPDATEフレーム以外のメッセージによって上記のデータ量に関する情報を通知してもよい。
通信装置20は、上述のように制御フレームの一つであるWINDOW_UPDATEフレームを用いて、コネクション及びストリームのそれぞれに対する通信装置10からのデータ送信を管理してフロー制御を行う。具体的には、通信装置20は、コネクションおよびストリームのそれぞれに対応する受信バッファの空き容量として定められたWindowSize(ウインドウサイズ)を管理する。ストリームを使用したデータの受信により受信バッファの空き容量が減少した場合、通信装置20は、そのストリームに対応するWindowSizeとそのストリームの基礎となるコネクションに対応するWindowSizeとを減少させる。そして通信装置20は、データの受信処理による受信バッファの空き容量の増加分を、WINDOW_UPDATEフレームの送信により通信装置10に通知し、WindowSizeを増加させる。ここで、本実施形態における受信処理とは、通信装置20が通信装置10から受信してRAM203内の受信バッファに格納したデータを、CPU201により処理した後受信バッファから取り除くことを言う。
つまり、ストリームIDが1であるストリームに関するWindowSizeは、通信装置20が通信装置10に、IDが1であるストリームを使用したデータの送信を許可済みのデータ量である。また、コネクション用WindowSizeは、通信装置20がコネクションに基づく1以上のストリームを使用したデータの送信を許可済みのデータ量である。通信装置10は、ストリーム用WindowSize及びコネクション用WindowSizeを超えない量のペイロードデータを、ストリームを使用して通信装置20に送信する。ただし、例えば通信装置20のリソース状況や通信経路の状況などによっては、通信装置10から通信装置20への論理的な接続を使用したデータの送信を許可済みのデータ量と受信バッファの空き容量とが異なっていてもよい。
GOAWAY判断部309は、HTTP制御部307が通信装置10からGOAWAYフレームを受信したか否か、及び通信装置10にGOAWAYフレームを送信したか否かを判断する。HTTP/2において規定されるGOAWAYフレームは、通信装置がそのGOAWAYフレームの送信に使用したコネクションに基づく新たなストリームを確立しないことを示す情報である。なお、通信装置10及び通信装置20は、例えばHTTP/2以外のプロトコルに従って通信を行う場合などには、GOAWAYフレーム以外のメッセージによって新たなストリームを確立しないことを通知してもよい。
最終判断部310は、HTTP制御部307がストリームを使用して通信装置10から受信したDATAフレームが、そのストリームにおける最終DATAフレームであるか否かを判断する。ここで、最終判断部310は、DATAフレームのフレームヘッダ中のEND_STREAMフラグが有効(値が1)である場合、そのDATAフレームがストリームにおける最終DATAフレームであると判断する。本実施形態において、ストリームにおける最終DATAフレームとは、通信装置10から通信装置20へそのストリームを使用して送信される最後のDATAフレームである。なお、通信装置20は、例えばHEADERSフレーム中に記述された情報など、END_STREAMフラグ以外の情報に基づいて、どのフレームが最終DATAフレームかを判断してもよい。
Size判断部311は、コネクション用及びストリーム用のWINDOW_UPDATEフレームに記述する、コネクション用及びストリーム用のWindowSizeの増加量を決定する。増加量の決定方法については後述する。
Length取得部312は、HTTP制御部307がHEADERSフレームを受信すると、HEADERSフレームのヘッダーブロックフラグメント中にContent−Lengthフィールドが設定されているか否かを判断する。Content−Lengthフィールドが設定されている場合、Length取得部312はそのHEADERSフレームからContent−Lengthの値を取得する。Contetnt−Lengthは、それが設定されたHEADERSフレームに続いて送信されるコンテンツのデータ量(ペイロードデータのサイズ)を表す。なお、通信装置20は、例えば通信装置10に要求するデータのサイズを予め知っている場合など、コンテンツのデータ量をContent−Length以外の情報に基づいて判断してもよい。
[通信シーケンス(1)]
以下、本実施形態における通信装置10と通信装置20との間における通信シーケンスについて、詳細に説明する。図4は、本実施形態に係る、通信装置20がストリームにおける最後のデータ受信に対してストリーム用WINDOW_UPDATEフレームを送信しない場合のシステムの動作を説明するためのシーケンス図である。図4の処理は、例えば通信装置20と通信を行うためのユーザ操作が通信装置10に入力されたタイミングで開始される。ただし、図4の処理の開始タイミングは上記タイミングに限定されない。
M401において、通信装置10が、通信装置20との間でコネクションを確立してHTTP通信接続を行う。この通信接続の詳細なシーケンスについては、図5を用いて後述する。本実施形態において、通信装置20のコネクションに関するInitialWindowSizeはデフォルト値である64KBとし、以後確立される各ストリームに関するInitialWindowSizeも同様にデフォルト値である64KBとする。ここで、図4における「ID_0」はコネクションに関する情報であることを示している。
M402において、通信装置10が通信装置20に対して、HTTPリクエストヘッダ情報が記述されたHEADERSフレームを送信する。本シーケンスにおいて、当該HTTPリクエストはPOSTメソッドを使用し、通信装置10は通信装置20に96KBのペイロードデータを送信するものとする。このHEADERSフレームの送信によって、通信装置10はストリームIDを1とする新規ストリームを確立する。このとき、通信装置20のコネクション(ID_0)に関するWindowSizeは64KBであり、ストリーム1(ID_1)に関するWindowSizeは64KBである。これは、通信装置10が64KBまでのDATAフレームを送信することが許可されていることを示す。なお、本実施形態では、通信装置10から通信装置20へのリクエストとして、上述のようにPOSTメソッドを指定したHEADERSフレームを用いる。しかしこれに限らず、例えばGETメソッドやPUTメソッドなどの他のHTTPリクエストメソッドや、CONTINUATIONなどの他のフレームを利用してもよい。
M403において、通信装置10が通信装置20に対して、全96KBのペイロードデータのうち64KB分を含むDATAフレームを、ストリーム1(ID_1)を使用して送信する。このDATAフレームはストリーム1における最終DATAフレームではないため、END_STREAMフラグは無効(値が0)である。このDATAフレームを通信装置20が受信すると、通信装置20のコネクション(ID_0)に関するWindowSizeは0KBとなり、ストリーム1(ID_1)に関するWindowSizeは0KBとなる。これは、通信装置20が、通信装置10から64KBのDATAフレームを受信して、その分の受信バッファを消費しているためである。
M404において、通信装置20がM403で受信したDATAフレームの受信処理を実施する。M405において、通信装置20が通信装置10に対して、コネクション(ID_0)に関する64KB分のWINDOW_UPDATEフレームを送信する。このWINDOW_UPDATEフレームが送信されると、通信装置20のコネクション(ID_0)に関するWindowSizeは64KBとなるが、ストリーム1(ID_1)に関するWindowSizeは0KBのままである。M406において、通信装置20が通信装置10に対して、ストリーム1(ID_1)に関する64KB分のWINDOW_UPDATEフレームを送信する。このWINDOW_UPDATEフレームが送信されると、ストリーム1(ID_1)に関するWindowSizeも64KBとなる。
M407において、通信装置10が、M405及びM406で通信装置20から送信されたWINDOW_UPDATEフレームによる送信許可データ量の通知に応じて、データ送信を行う。そして、通信装置20のHTTP制御部307がこれを受信する。具体的には、通信装置10が通信装置20に対して、全96KBのペイロードデータのうち残りの32KB分を含むDATAフレームを、ストリーム1(ID_1)を使用して送信する。これはストリーム1における最終DATAフレームであるため、END_STREAMフラグは有効(値が1)である。このDATAフレームを通信装置20が受信すると、通信装置20のコネクション(ID_0)に関するWindowSizeは32KBとなり、ストリーム1(ID_1)に関するWindowSizeは32KBとなる。
M408において、通信装置20がM407で受信したDATAフレームの受信処理を実施する。M409において、通信装置20がWINDOW_UPDATEフレームを送信するか否か判断する。通信装置20は、受信したコンテンツを構成するデータに、論理的な接続を使用して送信される最後のコンテンツを構成するデータであることを示す情報が設定されている場合に、その論理的な接続が切断されるまで通知を行わないよう制御する。本実施形態において、通信装置20がM407で受信したDATAフレームは、END_STREAMフラグが有効である。このことから、通信装置20は、このDATAフレームが最終DATAフレームであり、これ以降ストリーム1を使用してDATAフレームを受信することがないと判断する。そのため、通信装置20は、通信装置10にストリーム1を使用したデータの送信を許可する必要がないと判断し、ストリーム1が切断されるまでストリーム1に関するWINDOW_UPDATEフレームを送信しないよう制御する。
M410において、通信装置20が通信装置10に対して、コネクション(ID_0)に関する32KB分のWINDOW_UPDATEフレームを送信する。このWINDOW_UPDATEフレームが送信されると、通信装置20のコネクション(ID_0)に関するWindowSizeは64KBとなる。
M411において、通信装置20が、M402で受信したHTTPリクエスト及びM403とM407で受信したデータへの応答として、通信装置10に対して、HTTPレスポンスであるHEADERSフレームを送信する。本実施形態において、当該HTTPレスポンスのステータスコードは「200 OK」とする。通信装置20は、ストリーム1を使用してこのHEADERSフレームを送信する。本実施形態では、上述したように「200 OK」が記述されたHEADERSフレームを用いたが、これに限らず、他のステータスコードや、PUSH_PROMISEなどの他のフレームを利用してもよい。M412において、通信装置10が通信装置20に対して、コネクションの終了に際してこれ以降新たなストリームを確立しないことを示す情報であるGOAWAYフレームを送信する。M413において、通信装置10と通信装置20とがHTTP通信接続を終了する。具体的には、TCPコネクションを切断する。
[HTTP通信接続シーケンス]
図5は、通信装置20と通信装置10とのHTTP通信接続に関する動作を説明するためのシーケンス図であり、図4のM401の詳細を示すものである。
M501において、通信装置10が通信装置20との間でTCPコネクションを確立する。HTTPS通信を行う場合、M502において、通信装置10が通信装置20とTLS(Transport Layer Security)通信接続を行う。TLS通信接続の際に、ALPN(Application Layer Protocol Negotiation)によるHTTP/2通信開始のためのネゴシエーションも行われる。一方、HTTPS通信を行わない場合、M503において、通信装置10が通信装置20に対してHTTP/2アップグレード要求を送信する。M504において、通信装置20が通信装置10に対してHTTP/2アップグレード応答を送信する。M502又はM504以降、通信装置10と通信装置20との間でHTTP/2通信が行われる。
M505において、通信装置10が通信装置20に対して、クライアントコネクションプリフェイスのうちPRIメソッドを指定する部分を送信する。M506において、通信装置10が通信装置20に対して、クライアントコネクションプリフェイスのうちSETTINGSフレームにあたる部分を送信する。M507において、通信装置20が通信装置10に対してサーバコネクションプリフェイスを送信する。これは空の可能性があるSETTINGSフレームだけで構成される。
[通信シーケンス(2)]
図6は、本実施形態に係る、通信装置20がコネクションにおける最後のデータ受信に対してコネクション用WINDOW_UPDATEフレームを送信しない場合のシステムの動作を説明するためのシーケンス図である。図6の処理は、例えば通信装置20と通信を行うためのユーザ操作が通信装置10に入力されたタイミングで開始される。ただし、図6の処理の開始タイミングは上記タイミングに限定されない。図6において、図4と同じ内容の部分に関しては説明を省略する。
M601〜M606はM401〜M406と同じである。M607において、通信装置10が通信装置20に対して、これ以降新たなストリームを確立しないことを示す情報であるGOAWAYフレームを送信する。M608、M609はM407、M408と同じである。
M610において、通信装置20がWINDOW_UPDATEフレームを送信するか否か判断する。具体的には、通信装置20は、M608で受信したDATAフレームが最終DATAフレームであり、これ以降ストリーム1を使用してDATAフレームを受信することがないと判断する。また、通信装置20は、M607でGOAWAYフレームを受信したことから、M608で受信したDATAフレームはコネクションにおける最終DATAフレームでもあると判断する。つまりこのDATAフレームは、通信装置10から通信装置20へコネクションを使用して送信される最後のDATAフレームでもある。そのため、通信装置20は、それ以降通信装置10にストリーム1を使用したデータの送信を許可する必要がないと判断し、ストリーム1が切断されるまでストリーム1に関するWINDOW_UPDATEフレームを送信しないよう制御する。また、通信装置20は、通信装置10にコネクションを使用したデータの送信を許可する必要がないと判断し、そのコネクションが切断されるまでコネクションに関するWINDOW_UPDATEフレームを送信しないよう制御する。M611、M612はM411、M413と同じである。
[WINDOW_UPDATEフレームの送信判断フロー]
図7は、本実施形態に係る、通信装置20によるWINDOW_UPDATEフレームの送信判断に関する動作を説明するためのフローチャートである。図7の処理は、例えば通信装置20が通信装置10から何らかのフレームを受信したタイミングで開始される。ただし、図7の処理の開始タイミングは上記タイミングに限定されない。
S701において、HTTP制御部307が、通信装置10との間のストリームを使用して通信装置10からコンテンツを構成するデータであるDATAフレームを受信したか否かを判断する。DATAフレームを受信した場合(S701;Yes)はS702に進むが、DATAフレームを受信していない場合(S701;No)は処理を終了する。S702において、HTTP制御部307がDATAフレームの受信処理を行う。S703において、HTTP制御部307が、DATAフレームの受信処理が完了したか否かを判断する。DATAフレームの受信処理が完了した場合(S703;Yes)はS704に進むが、DATAフレームの受信処理が完了していない場合(S703;No)はS702に戻る。
S704において、UPDATE判断部308が、ストリーム用WINDOW_UPDATEフレームを送信するか否かを判断する。UPDATE判断部308は、受信したコンテンツを構成するデータに、論理的な接続を使用して送信される最後のコンテンツを構成するデータであることを示す情報が設定されている場合に、その論理的な接続が切断されるまで通知を行わないよう制御する。本実施形態においては、UPDATE判断部308が、最終判断部310を利用して、受信したDATAフレームのフレームヘッダ中にあるEND_STREAMフラグが有効(値が1)か否かを判断する。END_STREAMフラグが有効である場合(S704;Yes)、UPDATE判断部308はストリーム用WINDOW_UPDATEフレームを送信しない判断を下しS706に進む。一方END_STREAMフラグが有効でない場合(S704;No)はS705に進む。
S705において、UPDATE判断部308が、DATAフレームの受信に使用したストリームに関するWINDOW_UPDATEフレームを通信装置10に対して送信する判断を下す。そしてUPDATE判断部308が、HTTP制御部307を利用してストリーム用WINDOW_UPDATEフレームを送信する。これにより、通信装置10から通信装置20へのストリームを使用したデータの送信を許可するデータ量に関する情報が、通信装置10に通知される。
S706において、UPDATE判断部308が、HTTP制御部307が通信装置10からGOAWAYフレームを受信したか否か、及び通信装置10にGOAWAYフレームを送信したか否かを判断する。この判断にはGOAWAY判断部309が利用される。HTTP制御部307がGOAWAYフレームを受信も送信もしていない場合(S706;No)はS708に進むが、受信または送信をした場合(S706;Yes)はS707に進む。
S707において、UPDATE判断部308が、HTTP制御部307を利用して、実行中のストリームが存在するか否かを判断する。ここで実行中のストリームとは、通信装置10と通信装置20との間に確立されているストリームであり、通信装置20がDATAフレームの受信に使用中または使用予定のストリームである。実行中のストリームが存在しない場合(S707;No)、UPDATE判断部308はコネクション用WINDOW_UPDATEフレームを送信しない判断を下し、処理を終了する。一方、実行中のストリームが存在する場合(S707;Yes)はS708に進む。
つまり、通信装置20は、GOAWAYフレームが通信装置20によって送信又は受信され、コネクションに基づくストリームが1つであり、且つ、当該ストリームにおける最後のDATAフレームを受信した場合、以下の制御を実行する。すなわち、通信装置20は、コネクションを使用したデータの送信を許可するデータ量に関する第2情報の通知と、ストリームを使用したデータの送信を許可するデータ量に関する第1情報の通知とを行わないよう制御する。なお、本実施形態においてGOAWAYフレームは、コネクション(第1接続)に基づく新たなストリーム(第2接続)を確立しないことを示す情報である。また、第2情報の通知はコネクション用WINDOW_UPDATEフレームの送信により実現され、第1情報の通知はストリーム用WINDOW_UPDATEフレームの送信により実現される。
S708において、UPDATE判断部308が、DATAフレームの受信に使用したストリームの基礎となるコネクションに関するWINDOW_UPDATEフレームを通信装置10に対して送信する判断を下す。そしてUPDATE判断部308が、HTTP制御部307を利用してコネクション用WINDOW_UPDATEフレームを送信し、処理を終了する。これにより、通信装置10から通信装置20へのコネクションを使用したデータの送信を許可するデータ量に関する情報が、通信装置10に通知される。
以上説明したように、本実施形態における通信装置20は、ストリームにおける最終DATAフレームを受信した場合に、そのストリームが切断されるまでそのストリームに関するWINDOW_UPDATEフレームを送信しないよう制御する。通常、通信装置20は、1つのDATAフレームの受信に対してコネクション用及びストリーム用の2つのWINDOW_UPDATEフレームを送信する。しかし、ストリームにおける最終DATAフレームの受信後には、そのストリームに関するフロー制御が不要となるため、ストリーム用WINDOW_UPDATEフレームを送信する必要がない。本実施形態を用いれば、通信装置20は、DATAフレームを受信するたびに2つのWINDOW_UPDATEフレームを送信する場合に比べ、不要なWINDOW_UPDATEフレームの送信を削減することができ、処理負荷を軽減できる。処理負荷の軽減によって、例えば通信装置20がバッテリーにより稼働している場合には、バッテリーの消費が低減される。
さらに、本実施形態における通信装置20は、ストリームにおける最終DATAフレームを受信した場合に、GOAWAYフレームが受信または送信されているか否か及びコネクションに基づく他の実行中ストリームがあるか否かを判断する。GOAWAYフレームが通信装置20により受信又は送信され、且つコネクションに基づいて確立されている実行中のストリームが他にない場合を考える。この場合には、通信装置20は、ストリーム用WINDOW_UPDATEフレームを送信しないことに加え、コネクション用WINDOW_UPDATEフレームも送信しない。GOAWAYフレームは、その送信に使用されたコネクションに基づく新たなストリームを確立しないことを示す情報である。よって、GOAWAYフレームの送受信があり実行中ストリームが一つである場合に受信したストリームにおける最終DATAフレームは、コネクションにおける最終DATAフレームでもある。そのため、通信装置20は、それ以降コネクション用WINDOW_UPDATEフレームを送信する必要がない。本実施形態を用いれば、通信装置20は、不要なWINDOW_UPDATEフレームの送信をさらに削減することができ、処理負荷をさらに軽減することができる。
一方、GOAWAYフレームが通信装置20によって送信も受信もされず、通信装置20が通信装置10からストリームにおける最終DATAフレームを受信した場合を考える。この場合、本実施形態における通信装置20は、ストリーム用WINDOW_UPDATEは送信せず、コネクション用WINDOW_UPDATEは送信するよう制御する。また、本実施形態における通信装置20は、ストリームにおける最終DATAフレームを受信した場合にGOAWAYフレームが送受信されていても、他の実行中ストリームが存在すればコネクション用WINDOW_UPDATEフレームを送信する。このように、本実施形態における通信装置20は、ストリーム用WINDOW_UPDATEの送信とコネクション用WINDOW_UPDATEの送信をそれぞれ異なる基準で制御する。これにより、通信装置20は、WINDOW_UPDATEフレームの送信の削減により実行中ストリームのフロー制御に不都合が生じてしまうのを回避することができる。
<第2実施形態>
以下、本発明に係る第2実施形態について説明する。第2実施形態における通信装置20は、Content−Lengthの値及びWindowSizeに基づいて、WINDOW_UPDATEフレームを送信するか否か判断する。第2実施形態における通信システム構成、機能モジュール構成、シーケンス、及びフローチャートについて、上述した第1実施形態と同じ部分については説明を省略する。
本実施形態では、HTTP制御部307がDATAフレームを受信した場合、UPDATE判断部308は最終判断部310とSize判断部311を使用して、WINDOW_UPDATEフレームを送信するか否か判断する。最終判断部310が、受信されたDATAフレームのEND_STREAMフラグが有効であると判断した場合、UPDATE判断部308は、ストリーム用WINDOW_UPDATEフレームを送信しない判断を下す。また、Size判断部311は、HTTP制御部307が管理するコネクション用WindowSize及びストリーム用WindowSizeが閾値以上であるか否かを判断する。WindowSizeが閾値以上だと判定された場合、UPDATE判断部308は、WINDOW_UPDATEフレームを送信しない判断を下す。本実施形態において、閾値は1バイトとする。つまり、Size判断部311は、WindowSizeが全て消費されたか否かを判断する。なお、閾値は1バイトに限らず、WINDOW_UPDATEフレームで送信可能なWindowSizeの最大値(2^31−1)以下であればよい。例えば、閾値はInitialWindowSize(初期ウインドウサイズ)に設定されてもよい。この場合Size判断部311は、WindowSizeが初期状態から消費されたか否かを判断する。また例えば、閾値は通信装置20がデータ受信用に確保できるメモリサイズに設定されてもよい。この場合Size判断部311は、WindowSizeが通信装置20のリソースに関する上限に達しているか否かを判断する。以下では、閾値が1バイトである場合の例を中心に説明する。
また、本実施形態では、HTTP制御部307がHEADERSフレームを受信した場合、UPDATE判断部308はLength取得部312とSize判断部311を使用して、WINDOW_UPDATEフレームを送信するか否か判断する。Length取得部312は、受信されたHEADERSフレームに設定されたContent−Lengthの値を取得する。Size判断部311は、HTTP制御部307が管理するコネクション用WindowSize及びストリーム用WindowSizeがContent−Lengthの値以上か否かを判断する。WindowSizeがContent−Lengthの値以上だと判断された場合、UPDATE判断部308は、WINDOW_UPDATEフレームを送信しない判断を下す。
[通信シーケンス]
以下、本実施形態における通信装置10と通信装置20との間における通信シーケンスについて、詳細に説明する。図8は、本実施形態に係る、通信装置20がContent−Length及びWindowSizeに基づいてWINDOW_UPDATEフレームの送信判断を行う場合のシステムの動作を説明するためのシーケンス図である。図8の処理は、例えば通信装置20と通信を行うためのユーザ操作が通信装置10に入力されたタイミングで開始される。ただし、図8の処理の開始タイミングは上記タイミングに限定されない。図8において、図4と同じ内容の部分に関しては説明を省略する。
M801は、M401と同じである。M802において、通信装置10が通信装置20に対して、ストリーム1(ID_1)においてPOSTメソッドを使用して32KBのペイロードデータを送信するという情報が記述されたHEADERSフレームを送信する。本実施形態において、HEADERSフレーム中にはContent−Lengthフィールドが含まれる。Content−Lengthの値は、当該HEADERSフレームに続いて送信されるペイロードデータのサイズを表し、ここでは32KBとなっているものとする。このとき、通信装置20のコネクション(ID_0)に関するWindowSizeは64KBであり、ストリーム1(ID_1)に関するWindowSizeは64KBである。
M803において、通信装置10が通信装置20に対して、32KBのDATAフレームを、ストリーム1(ID_1)を使用して送信する。このDATAフレームはストリーム1における最終DATAフレームになるため、END_STREAMフラグは有効(値が1)である。このDATAフレームを通信装置20が受信すると、通信装置20のコネクション(ID_0)に関するWindowSizeは32KBとなり、ストリーム1(ID_1)に関するWindowSizeは32KBとなる。M804において、通信装置20がM803で受信したDATAフレームの受信処理を実施する。
M805において、通信装置20がWINDOW_UPDATEフレームを送信するか否か判断する。通信装置20は、M803で受信したDATAフレームのEND_STREAMフラグが有効であることから、このDATAフレームが最終DATAフレームであり、これ以降ストリーム1を使用してDATAフレームを受信することがないと判断する。そのため、通信装置20は、ストリーム1(ID_1)に関するWINDOW_UPDATEフレームを送信しないよう制御する。さらに、通信装置20は、コネクション用WindowSizeが所定の閾値以上であるため、コネクション用WindowSizeを増加させるためのコネクション用WINDOW_UPDATEフレームを送信しないよう制御する。本実施形態において、閾値は1バイトとする。M806において、通信装置20が通信装置10に対して、HTTPレスポンスヘッダ情報として「200 OK」が記述されたHEADERSフレームを、ストリーム1(ID_1)を使用して送信する。
M807において、通信装置10が通信装置20に対して、ストリーム3(ID_3)においてPOSTメソッドを使用して16KBのペイロードデータを送信するという情報が記述されたHEADERSフレームを送信する。このとき、通信装置20のコネクション(ID_0)に関するWindowSizeは32KBであり、ストリーム3(ID_3)に関するWindowSizeは64KBである。M808において、通信装置10が通信装置20に対して、16KBのDATAフレームを、ストリーム3(ID_3)を使用して送信する。このDATAフレームはストリーム3における最終DATAフレームになるため、END_STREAMフラグは有効(値が1)である。このDATAフレームを通信装置20が受信すると、通信装置20のコネクション(ID_0)に関するWindowSizeは16KBとなり、ストリーム3(ID_3)に関するWindowSizeは48KBとなる。
M809において、通信装置20がM808で受信したDATAフレームの受信処理を実施する。M810において、通信装置20がWINDOW_UPDATEフレームを送信するか否か判断する。通信装置20は、M808で受信したDATAフレームのEND_STREAMフラグが有効であることから、このDATAフレームが最終DATAフレームであり、これ以降ストリーム3を使用してDATAフレームを受信することがないと判断する。そのため、通信装置20は、ストリーム3(ID_3)に関するWINDOW_UPDATEフレームを送信しないよう制御する。さらに、通信装置20は、コネクション用WindowSizeが閾値(1バイト)以上であるため、コネクション用WindowSizeを増加させるためのコネクション用WINDOW_UPDATEフレームを送信しないよう制御する。
M811において、通信装置20が通信装置10に対して、HTTPレスポンスヘッダ情報として「200 OK」が記述されたHEADERSフレームを、ストリーム3(ID_3)を使用して送信する。M812において、通信装置10が通信装置20に対して、ストリーム5(ID_5)においてPOSTメソッドを使用して32KBのペイロードデータを送信するという情報が記述されたHEADERSフレームを送信する。このとき、通信装置20のコネクション(ID_0)に関するWindowSizeは16KBであり、ストリーム5(ID_5)に関するWindowSizeは64KBである。
M813において、通信装置20がWINDOW_UPDATEフレームを送信するか否か判断する。通信装置20は、通信相手によって送信されるコンテンツのデータ量が、論理的な接続を使用したデータの送信を許可済みのデータ量より小さい場合に、通知を行わないよう制御する。本実施形態において、M812で通信装置20が受信したHEADERSフレーム中のContent−Lengthの値は32KBであり、コネクション(ID_0)のWindowSizeである16KBよりも大きい。そのため通信装置20は、ペイロードデータ全体を受信するためにはコネクション用WindowSizeを増加させる必要があると判断する。そして通信装置20は、コネクション(ID_0)に関するWINDOW_UPDATEフレームを直ちに送信するよう制御する。一方、Content−Lengthの値である32KBはストリーム5(ID_5)のWindowSizeである64KBよりも小さいため、通信装置20はストリーム用WindowSizeが十分であると判断する。そのため、通信装置20は、ストリーム5(ID_5)に関するWINDOW_UPDATEフレームを送信しないよう制御する。
M814において、通信装置20が通信装置10に対して、コネクション(ID_0)に関する48KB分のWINDOW_UPDATEフレームを送信する。これにより、通信装置20のコネクション(ID_0)に関するWindowSizeは64KBとなり、通信装置10が1回のDATAフレーム送信で全32KBのペイロードデータを送信できるようになる。M815において、通信装置10が通信装置20に対して、32KBのDATAフレームを、ストリーム5(ID_5)を使用して送信する。このDATAフレームはストリーム5における最終DATAフレームになるため、END_STREAMフラグは有効(値が1)である。このDATAフレームを通信装置20が受信すると、通信装置20のコネクション(ID_0)に関するWindowSizeは32KBとなり、ストリーム5(ID_5)に関するWindowSizeは32KBとなる。M816において、通信装置20がM815で受信したDATAフレームの受信処理を実施する。
M817において、通信装置20がWINDOW_UPDATEフレームを送信するか否か判断する。通信装置20は、M815で受信したDATAフレームのEND_STREAMフラグが有効であることから、このDATAフレームが最終DATAフレームであり、これ以降ストリーム5を使用してDATAフレームを受信することがないと判断する。そのため、通信装置20は、ストリーム5(ID_5)に関するWINDOW_UPDATEフレームを送信しないよう制御する。さらに、通信装置20は、コネクション用WindowSizeが閾値(1バイト)以上であるため、コネクション用WindowSizeを増加させるためのコネクション用WINDOW_UPDATEフレームを送信しないよう制御する。M818において、通信装置20が通信装置10に対して、HTTPレスポンスヘッダ情報として「200 OK」が記述されたHEADERSフレームを、ストリーム5(ID_5)を使用して送信する。M819、M820はM412、M413と同じである。
[WINDOW_UPDATEフレームの送信判断フロー]
図9は、本実施形態に係る、通信装置20によるWINDOW_UPDATEフレームの送信判断に関する動作を説明するためのフローチャートである。図9の処理は、例えば通信装置20が通信装置10から何らかのフレームを受信したタイミングで開始される。ただし、図9の処理の開始タイミングは上記タイミングに限定されない。図9において、図7と同じ内容の部分に関しては説明を省略する。
S901において、HTTP制御部307が、通信装置10からHTTP通信におけるストリームを使用してDATAフレームを受信したか否かを判断する。DATAフレームを受信した場合(S901;Yes)はS902に進むが、DATAフレームを受信していない場合(S901;No)はS911に進む。S902〜S904はS702〜S704と同じである。S904において、END_STREAMフラグが有効である場合(S904;Yes)はS907に進むが、END_STREAMフラグが有効でない場合(S904;No)はS905に進む。
S905において、UPDATE判断部308が、Size判断部311を利用して、DATAフレームの受信に使用されたストリームに関するWindowSizeが所定の閾値以上か否かを判断する。本実施形態において閾値は1バイトとする。つまりSize判断部311は、ストリーム用WindowSizeが0バイトよりも大きいか否かを判定する。ストリーム用WindowSizeが閾値以上の場合(S905;Yes)、UPDATE判断部308はストリーム用WINDOW_UPDATEフレームを送信しない判断を下し、S907に進む。一方、ストリーム用WindowSizeが閾値未満の場合(S905;No)はS906に進む。
S906〜S908はS705〜S707と同じである。S907において、HTTP制御部307がGOAWAYフレームを受信も送信もしていない場合(S907;No)はS909に進むが、受信または送信をした場合(S907;Yes)はS908に進む。S908において、実行中のストリームが存在する場合(S908;Yes)はS909に進むが、実行中のストリームが存在しない場合(S908;No)は処理を終了する。
S909においてS905と同様に、UPDATE判断部308が、Size判断部311を利用して、コネクション用WindowSizeが閾値(1バイト)以上か(つまり0バイトよりも大きいか)否かを判断する。コネクション用WindowSizeが閾値以上である場合(S909;Yes)、UPDATE判断部308はコネクション用WINDOW_UPDATEフレームを送信しない判断を下し、処理を終了する。一方、コネクション用WindowSizeが閾値未満の場合(S909;No)はS910に進む。S910はS708と同じである。
S911において、HTTP制御部307が、通信装置10からHTTP通信におけるストリームを使用してHEADERSフレームを受信したか否かを判断する。HEADERSフレームを受信した場合(S911;Yes)はS912に進むが、HEADERSフレームを受信していない場合(S911;No)は処理を終了する。S912において、Length取得部312が、HTTP制御部307が受信したHEADERSフレームのヘッダーブロックフラグメント中にContent−Lengthフィールドが含まれるか否かを判断する。Content−Lengthフィールドが含まれる場合(S912;Yes)はS913に進むが、Content−Lengthフィールドが含まれない場合(S912;No)は処理を終了する。S913において、Length取得部312が、HTTP制御部307が受信したHEADERSフレームのヘッダーブロックフラグメント中からContent−Lengthの値を取得する。
S914において、UPDATE判断部308が、S913で取得されたContent−Lengthの値がコネクション用WindowSizeよりも大きいか否かを判断する。この判断にはSize判断部311及びLength取得部312が利用される。Content−Lengthの値がコネクション用WindowSizeよりも大きい場合(S914;Yes)、UPDATE判断部308はコネクション用WINDOW_UPDATEフレームを送信する判断を下し、S915に進む。一方、Content−Lengthの値がコネクション用WindowSize以下の場合(S914;No)、UPDATE判断部308はコネクション用WINDOW_UPDATEフレームを送信しない判断を下し、S917に進む。
S915において、UPDATE判断部308がSize判断部311を利用して、WINDOW_UPDATEフレームに設定するコネクション用WindowSizeの増加量を決定する。本実施形態においてUPDATE判断部308は、InitialWindowSizeから受信バッファに格納されているDATAフレームの合計サイズを差引いた値とWindowSizeとが一致するように増加量を決定する。ただし、UPDATE判断部308は、WindowSizeがInitialWindowSizeより大きくなるように設定してもよい。S916において、UPDATE判断部308が、HTTP制御部307を利用して、通信装置10に対してコネクション用WINDOW_UPDATEフレームを送信する。
S917において、UPDATE判断部308が、ストリーム用WINDOW_UPDATEフレームを送信するか否かを判断する。UPDATE判断部308は、通信相手によって送信されるコンテンツのデータ量が、論理的な接続を使用したデータの送信を許可済みのデータ量より小さい場合に、通知を行わないよう制御する。本実施形態においてUPDATE判断部308は、S913で取得されたContent−Lengthの値が、HEADERSフレームの受信に使用されたストリームに関するWindowSizeよりも大きいか否かを判断する。この判断にはSize判断部311及びLength取得部312が利用される。Content−Lengthの値がストリーム用WindowSizeよりも大きい場合(S917;Yes)、UPDATE判断部308はストリーム用WINDOW_UPDATEフレームを送信する判断を下し、S918に進む。一方、Content−Lengthの値がコネクション用WindowSize以下の場合(S917;No)、UPDATE判断部308はコネクション用WINDOW_UPDATEフレームを送信しない判断を下し、処理を終了する。
S918において、UPDATE判断部308がSize判断部311を利用して、WINDOW_UPDATEフレームに設定するストリーム用WindowSizeの増加量を決定する。増加量の決定方法については、S915におけるコネクション用WindowSizeの場合と同様である。S919において、UPDATE判断部308が、HTTP制御部307を利用して、通信装置10に対してストリーム用WINDOW_UPDATEフレームを送信し、処理を終了する。
以上説明したように、本実施形態における通信装置20は、コネクション用WindowSizeが閾値以上である場合にコネクション用WINDOW_UPDATEフレームを送信しない。また通信装置20は、ストリーム用WindowSizeが閾値以上であればストリーム用WINDOW_UPDATEフレームを送信しない。これにより通信装置20は、DATAフレームを受信するたびにWINDOW_UPDATEフレームを送信する場合と比べてWINDOW_UPDATEフレームの送信を削減することができ、処理負荷を軽減することができる。
一方、通信装置20は、コネクション用WindowSizeがHEADERSフレームに記述されたContent−Lengthの値よりも小さければ、コネクション用WINDOW_UPDATEフレームを送信する。また通信装置20は、HEADERSフレームの受信に使用したストリームに関するWindowSizeがContent−Lengthの値よりも小さければ、そのストリームに関するWINDOW_UPDATEフレームを送信する。
仮にこれを実施しない場合、具体的には図8のM814でWINDOW_UPDATEフレームを送信しない場合を考える。この場合、通信装置20におけるコネクション用WindowSizeが16KBのため、通信装置10はまず全32KBのペイロードデータのうち16KB分のみを含むDATAフレームを送信する。このDATAフレームを受信した通信装置20は、コネクション用WindowSizeが0KBとなり閾値を下回るため、通信装置10に対してコネクション用WINDOW_UPDATEフレームを送信する。それに応じて、通信装置10が残りの16KB分を含むDATAフレームを送信することとなる。
これに対して本実施形態では、上述した通り、通信装置20が、HEADERSフレームの受信後かつDATAフレームの受信前に、M814において通信装置10にコネクション用WINDOW_UPDATEフレームを送信する。これによって、通信装置10はM815において1つのDATAフレームで全32KBのペイロードデータを送信でき、16KBのDATAフレームを2回送信する場合よりも伝送にかかる遅延を低減することができる。そのため、通信装置10から通信装置20へのDATAフレームの送信スループットが向上する。
また、通信装置20は、コネクション用WindowSizeがContent−Lengthの値より小さくても、InitialWindowSize以上である場合には、コネクション用WINDOW_UPDATEフレームを送信しなくてもよい。本実施形態におけるWindowSizeの最大値はInitialWindowSizeであるため、例えばコネクションのWindowSizeを消費していない場合が上記に該当し、コネクション用WINDOW_UPDATEフレームの送信の必要がない。これにより、通信装置20は、WINDOW_UPDATEフレームの不要な送信をさらに削減することができ、処理負荷をさらに軽減することができる。
なお、本実施形態では、通信装置20がHEADERSフレームまたはDATAフレームを受信するたびにストリーム用WINDOW_UPDATEフレームを送信するか否かを判断する例を中心に説明したが、これに限らない。通信装置20は、通信相手によって送信されるコンテンツのデータ量が、論理的な接続を使用したデータの送信を許可済みのデータ量より小さい場合に、その論理的な接続が切断されるまで許可するデータ量に関する通知を行わないよう制御してもよい。具体的には、例えば通信装置20は、受信したHEADERSフレームに記述されたContent−Lengthの値が、その受信に使用したストリームに関するWindowSizeより小さいか否かを判断する。Content−Lengthの値がストリーム用WindowSize以下の場合、通信装置20はストリーム用WINDOW_UPDATEフレームを送信せずに、そのHEADERSフレームに続いて送信されるペイロードデータ全てを受信できる。そのため、UPDATE判断部308は、そのストリームが切断されるまでストリーム用WINDOW_UPDATEフレームを送信しないよう制御してもよい。これにより、通信装置20は、DATAフレームを受信するたびに行うWINDOW_UPDATEの送信判断を省略でき、さらに処理負荷を軽減することができる。
また、通信装置20は、未受信データ量に基づいてWINDOW_UPDATEフレームを送信するか否か判断してもよい。通信装置20は、論理的な接続を使用して通信装置10から受信するコンテンツを構成するデータのうち、まだ受信していないデータの量が所定値より小さい場合に、論理的な接続が切断されるまで通知を行わないよう制御する。具体的には、HTTP制御部307が、通信装置10からストリームを使用して送信されるペイロードデータのうちまだ受信していないデータの量を管理する。これは、Content−Lengthの値から受信したDATAフレームのサイズを差し引いたものである。そして、この未受信データ量が所定値より小さい場合に、UPDATE判断部308が、そのストリームが切断されるまでストリーム用WINDOW_UPDATEフレームを送信しないよう制御する。上記の所定値は、例えばストリーム用WindowSizeとしてもよいし、1バイトとしてもよい。これにより、通信装置20は、通信装置10と通信を行う中でWINDOW_UPDATEフレームの送信が不要となったことを検知し、それ以降のWINDOW_UPDATEフレームの送信を削減して処理負荷を軽減できる。
例えば、上記の所定値をストリーム用WindowSizeとした場合を考える。通信装置20は、WINDOW_UPDATEフレーム及びDATAフレームを送受信する中で未受信データ量がストリーム用WindowSizeより小さくなると、それ以降ストリーム用WINDOW_UPDATEフレームを送信しないよう制御する。この場合、Content−Lengthの値がストリーム用WindowSizeより小さければ、通信装置20は、HEADERSフレームを受信した時点でそれ以降のストリーム用WINDOW_UPDATEフレームを送信しないよう制御する。また、例えば所定値を1バイトとした場合、通信装置20は、最終データフレームを受信した時点でそれ以降のWINDOW_UPDATEフレームを送信しないよう制御する。
<第3実施形態>
以下、本発明に係る第3実施形態について説明する。第3実施形態においては、クライアント装置である通信装置10が図9で説明した処理を行い、サーバ装置である通信装置20にWINDOW_UPDATEフレームを送信してフロー制御を行う。第3実施形態における通信システム構成、機能モジュール構成、シーケンス、及びフローチャートについて、上述した第1実施形態または第2実施形態と同じ部分については説明を省略する。
[通信シーケンス]
以下、本実施形態における通信装置10と通信装置20との間における通信シーケンスについて、詳細に説明する。図10は、本実施形態に係る、通信装置10がWINDOW_UPDATEフレームにより通知するデータ量をContent−Legthに基づいて判断する場合のシステムの動作を説明するためのシーケンス図である。図10の処理は、例えば通信装置20と通信を行うためのユーザ操作が通信装置10に入力されたタイミングで開始される。ただし、図10の処理の開始タイミングは上記タイミングに限定されない。図10において、図4または図8と同じ内容の部分に関しては説明を省略する。
M1001はM401と同じである。M1002において、通信装置10が通信装置20に対して、ストリーム1(ID_1)においてGETメソッドを使用してURL_1で指定されるデータを要求するという情報が記述されたHEADERSフレームを送信する。M1003において、通信装置20が通信装置10に対して、ストリーム1(ID_1)においてURL_1で指定される100KBのペイロードデータを要求に応じて送信するという情報が記述されたHEADERSフレームを送信する。本実施形態において、このHEADERSフレーム中にはステータスコードとして「200 OK」が記述されている。さらに、このHEADERSフレーム中にはContent−Lengthフィールドが含まれ、Content−Lengthの値としてペイロードデータサイズである100KBが記述されているものとする。このとき、通信装置10のコネクション(ID_0)に関するWindowSizeは64KBであり、ストリーム1(ID_1)に関するWindowSizeは64KBである。
M1004において、通信装置10がWINDOW_UPDATEフレームを送信するか否か判断する。M1003で通信装置10が受信したHEADERSフレーム中のContent−Lengthの値は100KBであり、コネクション(ID_0)のWindowSizeである64KBよりも大きい。そのため、通信装置10は、ペイロードデータ全体を受信するためにはWindowSizeを増加させる必要があると判断する。そのため、通信装置10は、コネクション用WindowSizeがデフォルト値(64KB)を超えてContent−Lengthと同じ値(100KB)になるように、コネクション用WindowSizeの増加分を36KBに決定する。そして、通信装置10は、コネクション用WindowSizeの増加分(36KB)を指定して、コネクション(ID_0)に関するWINDOW_UPDATEフレームを直ちに送信するよう制御する。同様に、通信装置10は、ストリーム用WindowSizeの増加分(36KB)を指定して、ストリーム1(ID_1)に関するWINDOW_UPDATEフレームを直ちに送信するよう制御する。
M1005において、通信装置10が通信装置20に対して、コネクション(ID_0)に関する36KB分のWINDOW_UPDATEフレームを送信する。このWINDOW_UPDATEフレームが送信されると、通信装置10のコネクション(ID_0)に関するWindowSizeは100KBとなるが、ストリーム1(ID_1)に関するWindowSizeは64KBのままである。M1006において、通信装置10が通信装置20に対して、ストリーム1(ID_1)に関する36KB分のWINDOW_UPDATEフレームを送信する。このWINDOW_UPDATEフレームが送信されると、ストリーム1(ID_1)に関するWindowSizeも100KBとなる。
M1007において、通信装置20が通信装置10に対して、100KBのDATAフレームを、ストリーム1(ID_1)を使用して送信する。このDATAフレームはストリーム1における最終DATAフレームになるため、END_STREAMフラグは有効(値が1)である。このDATAフレームを通信装置10が受信すると、通信装置10のコネクション(ID_0)に関するWindowSizeは0KBとなり、ストリーム1(ID_1)に関するWindowSizeは0KBとなる。M1008において、通信装置10がM1007で受信したDATAフレームの受信処理を実施する。
M1009において、通信装置10がWINDOW_UPDATEフレームを送信するか否か判断する。通信装置10は、M1007で受信したDATAフレームのEND_STREAMフラグが有効であることから、このDATAフレームが最終DATAフレームであり、これ以降ストリーム1を使用してDATAフレームを受信することがないと判断する。そのため、通信装置10は、ストリーム1(ID_1)に関するWINDOW_UPDATEフレームを送信しないよう制御する。一方、通信装置10は、コネクション用WindowSizeが閾値よりも小さいため、コネクション用WINDOW_UPDATEフレームを送信するよう制御する。このとき、通信装置10は、コネクション用WindowSizeがデフォルト値(64KB)に戻るように、WINDOW_UPDATEフレームに設定するコネクション用WindowSizeの増加分を64KBに設定する。ただし、WindowSizeの増加分の設定方法はこれに限らず、例えばM1004と同様に、WindowSizeがデフォルト値より大きくなってもよい。
M1010において、通信装置10が通信装置20に対して、コネクション(ID_0)に関する64KB分のWINDOW_UPDATEフレームを送信する。このWINDOW_UPDATEフレームが送信されると、通信装置10のコネクション(ID_0)に関するWindowSizeは64KBとなる。
M1011において、通信装置10が通信装置20に対して、ストリーム3(ID_3)においてGETメソッドを使用してURL_3で指定されるデータを要求するという情報が記述されたHEADERSフレームを送信する。M1012において、通信装置20が通信装置10に対して、ストリーム3(ID_3)においてURL_3で指定される32KBのペイロードデータを要求に応じて送信するという情報が記述されたHEADERSフレームを送信する。このとき、通信装置10のコネクション(ID_0)に関するWindowSizeは64KBであり、ストリーム3(ID_3)に関するWindowSizeは64KBである。
M1013において、通信装置20が通信装置10に対して、32KBのDATAフレームを、ストリーム3(ID_3)を使用して送信する。このDATAフレームはストリーム3における最終DATAフレームになるため、END_STREAMフラグは有効(値が1)である。このDATAフレームを通信装置10が受信すると、通信装置10のコネクション(ID_0)に関するWindowSizeは32KBとなり、ストリーム3(ID_3)に関するWindowSizeは32KBとなる。
M1014において、通信装置10がM1013で受信したDATAフレームの受信処理を実施する。M1015において、通信装置10がWINDOW_UPDATEフレームを送信するか否か判断する。通信装置10は、M1013で受信したDATAフレームが最終DATAフレームであり、これ以降ストリーム3を使用してDATAフレームを受信することがないと判断する。そのため、通信装置10は、ストリーム3(ID_3)に関するWINDOW_UPDATEフレームを送信しないよう制御する。さらに、通信装置10は、コネクション用WindowSizeが閾値以上であるため、コネクション用WINDOW_UPDATEフレームを送信しないよう制御する。M1016、M1017はM412、M413と同じである。なお、M1013で通信装置10がDATAフレームを正常に受信したことは、TCP制御部306がトランスポート層における確認応答を通信装置20に送信することで通知される。
以上説明したように、本実施形態における通信装置10は、HTTPクライアントとしてWINDOW_UPDATEフレームを送信するか否か判断する。これに対して、第1実施形態及び第2実施形態では、通信装置20がHTTPサーバとしてWINDOW_UPDATEフレームを送信するか否か判断する場合について説明した。このように、通信装置はクライアント装置として動作する場合もサーバ装置として動作する場合も、WINDOW_UPDATEフレームの送信回数を低く抑え、処理負荷の増大を抑制することができる。
また、本実施形態における通信装置10は、コネクション用WindowSizeがコネクションのInitialWindowSizeよりも大きな値になるように、コネクション用WindowSizeの増加量を設定した。これは、Content−Lengthの値がコネクションのInitialWindowSizeのデフォルト値である64KBよりも大きい場合に行われる。この場合に、通信装置10は、コネクション用WindowSizeとContent−Lengthの値とが一致するようにコネクション用WindowSizeの増加量を決定した。これによって、通信装置20は、コネクション用WindowSizeのデフォルト値を超える大きさのペイロードデータを、1つのDATAフレームで送信できるようになる。そのため、通信装置20がInitialWindowSizeより小さい複数のDATAフレームを送信する場合よりも伝送にかかる遅延が低減され、通信装置20から通信装置10へのDATAフレームの送信スループットが向上する。
また、例えばContent−Lengthの値がInitialWindowSizeの2倍以上である場合を考える。このとき、WindowSizeの最大値をInitialWindowSizeとしていた場合は、通信装置10はペイロードデータ全体を受信するまでにコネクション用WINDOW_UPDATEフレームを複数回送信することになる。一方本実施形態によれば、通信装置10は、WindowSizeをContent−Lengthの値に一致させるようなコネクション用WINDOW_UPDATEフレームを一回送信すれば、ペイロードデータ全体を受信することができる。これにより、通信装置10は、WINDOW_UPDATEフレームの送信を削減し処理負荷を軽減することができる。
なお、本実施形態では、通信装置10はコネクション用WindowSizeとContent−Lengthが表すコンテンツのデータ量とが一致するように制御したが、これに限らない。例えば、通信装置10は、コネクション用WindowSizeがコンテンツのデータ量以上となるように制御してもよい。通信装置10は、コネクション用WindowSizeをコンテンツのデータ量よりも大きくしておくことで、次にHEADERSフレームを受信した際にWINDOW_UPDATEフレームを送信しなくてもよい可能性が増加する。
なお、通信装置10は、Content−Lengthの値分のメモリ領域を受信バッファとして確保できない場合には、コネクション用WindowSizeがContent−Lengthの値よりも小さくなるように制御してもよい。これによって、通信装置10は、機器のリソース制約を考慮したうえでWindowSizeを適切に制御することができ、省リソース化と処理負荷軽減とを両立することができる。なお、ストリーム用WindowSizeの増加量の決定方法についても、コネクション用WindowSizeの場合と同様である。
<その他の実施形態>
上述した各実施形態は、その複数を組み合わせて実施することもできる。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC等)によっても実現可能である。また、そのプログラムをコンピュータにより読み取り可能な記録媒体に記録して提供してもよい。
10 第1の通信装置
20 第2の通信装置
307 HTTP通信制御部
308 WINDOW_UPDATE送信判断部

Claims (23)

  1. 送信装置との間の論理的な接続を使用して、前記送信装置からコンテンツを構成するデータを受信する通信装置であって、
    前記送信装置から前記通信装置への前記論理的な接続を使用したデータの送信を許可するデータ量に関する情報を、前記送信装置に通知する通知手段と、
    前記通知手段による前記通知に応じて前記送信装置から送信された、前記コンテンツを構成するデータを受信する受信手段と、
    前記コンテンツを構成するデータのうち前記受信手段が受信していないデータの量が所定値より小さい場合に、前記論理的な接続が切断されるまで前記通知手段による前記通知を行わないよう制御する制御手段とを有することを特徴とする通信装置。
  2. 前記制御手段は、前記受信手段が受信した前記コンテンツを構成するデータに、前記送信装置から前記通信装置へ前記論理的な接続を使用して送信される最後の前記コンテンツを構成するデータであることを示す情報が設定されている場合に、前記論理的な接続が切断されるまで前記通知手段による前記通知を行わないよう制御することを特徴とする請求項1に記載の通信装置。
  3. 前記コンテンツのデータ量を取得する取得手段を有し、
    前記制御手段は、前記取得手段が取得した前記コンテンツのデータ量が、前記論理的な接続を使用したデータの送信を許可済みのデータ量より小さい場合に、前記論理的な接続が切断されるまで前記通知手段による前記通知を行わないよう制御することを特徴とする請求項1又は2に記載の通信装置。
  4. 前記制御手段は、前記取得手段が取得した前記コンテンツのデータ量が、前記論理的な接続を使用したデータの送信を許可済みのデータ量より大きい場合に、前記論理的な接続を使用したデータの送信を許可済みのデータ量が前記コンテンツのデータ量以上となるように、前記通知手段による前記通知を行うよう制御することを特徴とする請求項3に記載の通信装置。
  5. 前記コンテンツを構成するデータは、前記送信装置と前記通信装置との間の論理的な第1接続に基づいて確立される論理的な第2接続を使用して、前記送信装置から送信され、
    前記通知手段は、前記送信装置から前記通信装置への前記第2接続を使用したデータの送信を許可するデータ量に関する第1情報と、前記送信装置から前記通信装置への前記第1接続に基づく1以上の第2接続を使用したデータの送信を許可するデータ量に関する第2情報とを、前記送信装置に通知し、
    前記受信手段は、前記通知手段による前記第1情報及び前記第2情報の通知に応じて前記送信装置から送信された、前記コンテンツを構成するデータを受信し、
    前記制御手段は、前記第1接続に基づく新たな第2接続を確立しないことを示す情報が前記通信装置によって送信も受信もされず、前記受信手段が受信した前記コンテンツを構成するデータに、前記送信装置から前記通信装置へ第2接続を使用して送信される最後の前記コンテンツを構成するデータであることを示す情報が設定されている場合に、前記通知手段による前記第1情報の通知を行わず、前記通知手段による前記第2情報の通知を行うよう制御することを特徴とする請求項1乃至4のうち何れか1項に記載の通信装置。
  6. 前記制御手段は、前記第1接続に基づく新たな第2接続を確立しないことを示す情報が前記通信装置によって送信又は受信され、前記第1接続に基づいて確立されている第2接続が一つであり、且つ前記受信手段が受信した前記コンテンツを構成するデータに、前記送信装置から前記通信装置へ第2接続を使用して送信される最後の前記コンテンツを構成するデータであることを示す情報が設定されている場合に、前記通知手段による前記第1情報及び前記第2情報の通知を行わないよう制御することを特徴とする請求項5に記載の通信装置。
  7. 送信装置との間の論理的な接続を使用して、前記送信装置からコンテンツを構成するデータを受信する通信装置であって、
    前記送信装置から前記通信装置への前記論理的な接続を使用したデータの送信を許可するデータ量に関する情報を、前記送信装置に通知する通知手段と、
    前記通知手段による前記通知に応じて前記送信装置から送信された、前記コンテンツを構成するデータを受信する受信手段と、
    前記論理的な接続を使用したデータの送信を許可済みのデータ量が所定の閾値以上か否かを判定する判定手段と、
    前記論理的な接続を使用したデータの送信を許可済みのデータ量が前記所定の閾値以上だと前記判定手段が判定した場合に、前記通知手段による前記通知を行わないよう制御する制御手段とを有することを特徴とする通信装置。
  8. 前記論理的な接続を使用したデータの送信を許可済みのデータ量は、前記論理的な接続に対応する前記通信装置の受信バッファの空き容量として定められたウインドウサイズであることを特徴とする請求項1乃至7のうち何れか1項に記載の通信装置。
  9. 前記通知手段は、HTTP/2において規定されるWINDOW_UPDATEフレームを前記送信装置に送信することで、前記送信装置から前記通信装置への前記論理的な接続を使用したデータの送信を許可するデータ量に関する情報を、前記送信装置に通知することを特徴とする請求項1乃至8のうち何れか1項に記載の通信装置。
  10. 前記論理的な接続は、HTTP/2において規定されるストリームを含むことを特徴とする請求項1乃至9のうち何れか1項に記載の通信装置。
  11. 前記論理的な第1接続は、HTTP/2において規定されるコネクションであり、前記論理的な第2接続は、HTTP/2において規定されるストリームであることを特徴とする請求項5又は6に記載の通信装置。
  12. 前記送信装置から前記通信装置へ前記論理的な接続を使用して送信される最後の前記コンテンツを構成するデータであることを示す情報は、HTTP/2において規定されるEND_STREAMフラグであることを特徴とする請求項2に記載の通信装置。
  13. 前記取得手段は、前記通信装置が前記送信装置から受信した、HTTP/2において規定されるContent−Lengthフィールドの設定されたフレームから、前記コンテンツのデータ量を取得することを特徴とする請求項3又は4に記載の通信装置。
  14. 前記第1接続に基づく新たな第2接続を確立しないことを示す情報は、HTTP/2において規定されるGOAWAYフレームであることを特徴とする請求項5又は6に記載の通信装置。
  15. 前記所定値は、前記論理的な接続に対応する前記通信装置の受信バッファの空き容量として定められたウインドウサイズ又は1バイトであることを特徴とする請求項1乃至6のうち何れか1項に記載の通信装置。
  16. 前記所定の閾値は、HTTP/2において規定される初期ウインドウサイズ又は1バイトであることを特徴とする請求項7に記載の通信装置。
  17. 送信装置と、前記送信装置との間の論理的な接続を使用して前記送信装置からコンテンツを構成するデータを受信する通信装置とを有し、
    前記通信装置は、データ量に関するパラメータを前記送信装置に通知する通知手段と、
    前記通知手段による前記パラメータの通知に応じて前記送信装置から送信された、前記コンテンツを構成するデータを受信する受信手段と、
    前記コンテンツを構成するデータのうち前記受信手段が受信していないデータの量が所定値より小さい場合に、前記論理的な接続が切断されるまで前記通知手段による前記通知を行わないよう制御する制御手段とを有し、
    前記送信装置は、前記通知手段により通知された前記パラメータに基づいた量の前記コンテンツを構成するデータを、前記論理的な接続を使用して前記通信装置に送信する送信手段を有することを特徴とする通信システム。
  18. 前記制御手段は、前記受信手段が受信した前記コンテンツを構成するデータに、前記送信装置から前記通信装置へ前記論理的な接続を使用して送信される最後の前記コンテンツを構成するデータであることを示す情報が設定されている場合に、前記論理的な接続が切断されるまで前記通知手段による前記通知を行わないよう制御することを特徴とする請求項17に記載の通信システム。
  19. 前記通信装置は、前記コンテンツのデータ量を取得する取得手段を有し、
    前記制御手段は、前記取得手段が取得した前記コンテンツのデータ量が、前記論理的な接続に対応する前記通信装置の受信バッファの空き容量として定められたウインドウサイズより小さい場合に、前記論理的な接続が切断されるまで前記通知手段による前記通知を行わないよう制御することを特徴とする請求項17又は18に記載の通信システム。
  20. データ量に関するパラメータを送信装置に通知する通知工程と、
    前記送信装置が、前記通知工程において通知された前記パラメータに基づいた量のコンテンツを構成するデータを、通信装置との間の論理的な接続を使用して前記通信装置に送信する送信工程と、
    前記通信装置が、前記送信工程において前記送信装置から送信された前記コンテンツを構成するデータを受信する受信工程と、
    前記コンテンツを構成するデータのうち前記受信工程において受信されていないデータの量が所定値より小さい場合に、前記論理的な接続が切断されるまで前記通知工程における前記通知を行わないよう制御する制御工程とを有することを特徴とする通信方法。
  21. 前記制御工程は、前記受信工程において受信された前記コンテンツを構成するデータに、前記送信装置から前記通信装置へ前記論理的な接続を使用して送信される最後の前記コンテンツを構成するデータであることを示す情報が設定されている場合に、前記論理的な接続が切断されるまで前記通知工程における前記通知を行わないよう制御することを特徴とする請求項20に記載の通信方法。
  22. 前記コンテンツのデータ量を取得する取得工程を有し、
    前記制御工程は、前記取得工程において取得された前記コンテンツのデータ量が、前記論理的な接続に対応する前記通信装置の受信バッファの空き容量として定められたウインドウサイズより小さい場合に、前記論理的な接続が切断されるまで前記通知工程における前記通知を行わないよう制御することを特徴とする請求項20又は21に記載の通信方法。
  23. コンピュータを、請求項1乃至16のうち何れか1項に記載の通信装置として動作させるためのプログラム。
JP2015102822A 2015-05-20 2015-05-20 通信装置、通信方法、及びプログラム Active JP6391532B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2015102822A JP6391532B2 (ja) 2015-05-20 2015-05-20 通信装置、通信方法、及びプログラム
CN201680029274.0A CN107615257B (zh) 2015-05-20 2016-03-30 通信设备、通信方法及存储介质
PCT/JP2016/001843 WO2016185654A1 (en) 2015-05-20 2016-03-30 Communication apparatus, communication method, and storage medium
US15/574,434 US10917446B2 (en) 2015-05-20 2016-03-30 Communication apparatus, communication method, and storage medium
EP16796051.7A EP3298499B1 (en) 2015-05-20 2016-03-30 Communication apparatus, communication method, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015102822A JP6391532B2 (ja) 2015-05-20 2015-05-20 通信装置、通信方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2016218730A true JP2016218730A (ja) 2016-12-22
JP6391532B2 JP6391532B2 (ja) 2018-09-19

Family

ID=57319762

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015102822A Active JP6391532B2 (ja) 2015-05-20 2015-05-20 通信装置、通信方法、及びプログラム

Country Status (5)

Country Link
US (1) US10917446B2 (ja)
EP (1) EP3298499B1 (ja)
JP (1) JP6391532B2 (ja)
CN (1) CN107615257B (ja)
WO (1) WO2016185654A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10375212B2 (en) * 2017-01-11 2019-08-06 Citrix Systems, Inc. Systems and methods for improving the performance of a computer network using multiplexed application layer streams of network traffic
EP3588896A1 (en) * 2018-06-28 2020-01-01 InterDigital CE Patent Holdings Multi-path management
CN111819874B (zh) * 2018-06-29 2021-09-14 华为技术有限公司 避免基于5g服务的架构中plmn间路由和tls问题的方法和解决方案
CN110084971A (zh) * 2019-04-25 2019-08-02 益逻触控系统公司 自助服务终端的操作方法及自助服务终端
CN112272824A (zh) * 2020-01-13 2021-01-26 深圳市大疆创新科技有限公司 数据传输方法、装置、设备、mcu和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001203705A (ja) * 2000-01-19 2001-07-27 Nec Corp フロー制御回路及びフロー制御方法並びにフロー制御プログラムを記録した記憶媒体
US6594701B1 (en) * 1998-08-04 2003-07-15 Microsoft Corporation Credit-based methods and systems for controlling data flow between a sender and a receiver with reduced copying of data

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6785707B2 (en) 2000-11-14 2004-08-31 Bitfone Corp. Enhanced multimedia mobile content delivery and message system using cache management
US20030188106A1 (en) 2002-03-26 2003-10-02 At&T Corp. Cache validation using rejuvenation in a data network
US7873736B1 (en) * 2003-03-21 2011-01-18 Cisco Technology, Inc. Replenishing a user account with more access resources needed for accessing network services
TW200816719A (en) * 2006-08-23 2008-04-01 Matsushita Electric Ind Co Ltd Communication equipment
JP2009071766A (ja) 2007-09-18 2009-04-02 Panasonic Corp 受信端末装置
JP4557028B2 (ja) 2008-03-19 2010-10-06 ソニー株式会社 情報処理装置、情報処理方法、クライアント機器、情報処理システム
EP2417719B1 (en) 2009-04-07 2017-01-11 Cisco Technology, Inc. Method and system to manage network traffic congestion
JP5406750B2 (ja) * 2010-02-03 2014-02-05 キヤノン株式会社 記録装置及びその制御方法
US9047288B2 (en) 2012-01-06 2015-06-02 Apple Inc. Intelligent data delivery and storage based on data characteristics
US20140082504A1 (en) 2012-09-14 2014-03-20 Kevin B. Stanton Continuous data delivery with energy conservation
US20150100622A1 (en) 2013-10-04 2015-04-09 Comcast Cable Communications, Llc Network Device Mediation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6594701B1 (en) * 1998-08-04 2003-07-15 Microsoft Corporation Credit-based methods and systems for controlling data flow between a sender and a receiver with reduced copying of data
JP2001203705A (ja) * 2000-01-19 2001-07-27 Nec Corp フロー制御回路及びフロー制御方法並びにフロー制御プログラムを記録した記憶媒体

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
M.BELSHE ET AL.: "Hypertext Transfer Protocol version 2 draft-ietf-httpbis-http2-16", HTTPBIS WORKING GROUP, JPN6018027476, 29 November 2014 (2014-11-29), pages 1 - 92, XP015103343 *

Also Published As

Publication number Publication date
EP3298499A4 (en) 2018-12-19
WO2016185654A1 (en) 2016-11-24
US20180139255A1 (en) 2018-05-17
CN107615257A (zh) 2018-01-19
EP3298499A1 (en) 2018-03-28
EP3298499B1 (en) 2020-10-14
CN107615257B (zh) 2020-07-28
JP6391532B2 (ja) 2018-09-19
US10917446B2 (en) 2021-02-09

Similar Documents

Publication Publication Date Title
JP6391532B2 (ja) 通信装置、通信方法、及びプログラム
US9535485B2 (en) Image processing apparatus, method for controlling the same and storage medium
KR101921015B1 (ko) 데이터 통신 시스템 내에서의 데이터 패킷들의 전달 방법
US9661667B2 (en) Communication device
MX2014010243A (es) Metodo y servidor para enviar un flujo de datos a un cliente y metodo y cliente para recibir un flujo de datos de un servidor.
WO2018112327A1 (en) Methods of concurrency control for block transfer in coap publish-subscribe architecture
CN104717041A (zh) 数据传输方法和装置
JP6429559B2 (ja) 通信装置、通信システム、情報処理方法及びプログラム
WO2022063058A1 (zh) 基于netconf协议的传输方法、设备及存储介质
JP6576099B2 (ja) 通信装置、通信装置の制御方法、プログラム、および、通信システム
JP2012173801A (ja) 通信装置、その制御方法及びプログラム
JP5891762B2 (ja) 通信装置と通信システムと通信装置の通信方法とプログラム
JP2017017594A (ja) 通信装置、制御方法、及びプログラム
US8798097B2 (en) Communication devices that communicate using frames and computer-readable media for controlling communication devices
CN107634974A (zh) 一种数据传输方法及装置
US10237323B2 (en) Communication apparatus, communication method, communication system, and storage medium
EP2950606A1 (en) Communication device, method for controlling communication device, and program
JP2017157963A (ja) 通信装置、通信方法及びプログラム
US10638420B2 (en) Information processing apparatus selectively executable a normal mode or a sleep mode, and non-transitory computer readable recording medium that records an information processing program executable by an information processing apparatus selectively executable a normal mode or a sleep mode
JP2019033539A (ja) 通信装置、通信システム、通信方法及びプログラム
JP6942609B2 (ja) 通信装置、通信方法、及びプログラム
JP6304978B2 (ja) 中継装置、情報処理方法及びプログラム
JP7009163B2 (ja) 通信装置、通信方法、及びプログラム
Thomson et al. RFC 9113: HTTP/2
JP6008664B2 (ja) 出力指示装置、出力装置及びコンテンツ出力システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171225

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180724

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180821

R151 Written notification of patent or utility model registration

Ref document number: 6391532

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151