view final_main/chapter2.tex @ 2:8b42a96b95aa

change chapter2
author oshiro
date Sat, 16 Feb 2019 16:56:25 +0900
parents 83f997abf3b5
children 1f35e28d486c
line wrap: on
line source

\chapter{TreeVNC の基本概念}
% VNCとはなにか?どのようなものか?どのようにしてなりたっているか?

 TreeVNC は当研究室で開発している画面配信ソフトウェアである。

本章は TreeVNC の基本概念となっている技術について説明する。

% どういう概念? どうしてそうするの? どうやってつかうの? 
\section{Virtual Network Computing}

TreeVNC の名前にも用いられている VNC (Virtual Network Computing) は、RFB プロトコルを用いて PC の遠隔操作を行うことを目的としたリモートデスクトップソフトウェアである。

サーバー側とクライアント側に分かれており、起動したサーバーにクライアントが接続することで遠隔操作を可能にしている。


\section{RFB プロトコル}

RFB (Remote Frame Buffer) プロトコルは、自身の画面をネットワークを通じて送信し他者の画面に表示するプロトコルである。

ユーザがいる(画面を表示される)側と FrameBuffer への更新が行われる(自身の画面を送信する)側に分かれ、それぞれを RFB クライアント、RFB サーバと呼ぶ。FrameBuffer は、メモリ上に置かれた画像データのことである。

RFB プロトコルでは、始めにプロトコルバージョンの確認、認証を行う。その後クライアントに向けて FrameBuffer の大きさやデスクトップに付けられた名前などが含まれている初期メッセージが送信される。RFB サーバ側は FrameBuffer の更新が行われるたびに RFB クライアントに対して FrameBuffer の変更部分だけを送信する。更に、RFB クライアントの FramebufferUpdateRequest が来るとそれに答え返信する。変更部分だけを送信する理由は、更新がある度に全画面を送信していると、送信するデータ面、更新にかかる時間面において効率が悪いからである。


\section{TreeStructure}
TreeVNC はサーバーに接続してきたクライアントをバイナリツリー状に接続している。また、接続してきたクライアントをノードとし、その下に新たなクライアントを接続していくことでサーバーが画面のデータを配信する回数を抑えることで負荷分散している(図)。バイナリツリー状に接続することで、画像データのコピーを各ノードに負担させることができ、従来の VNC ではクライアントが N 台接続するとサーバー側が N 回コピーを行なって配信していたが、この接続方法であれば各ノードが 2 回ずつコピーすることで配信を可能にしている。

\begin{figure}[htpb]
 \begin{center}
  \scalebox{0.55}{\includegraphics{fig/vnc.pdf}}
 \end{center}
 \caption{従来の VNC の接続方法}
 \label{fig:vnc}
\end{figure}

\begin{figure}[htpb]
 \begin{center}
  \scalebox{0.55}{\includegraphics{fig/treevnc.pdf}}
 \end{center}
 \caption{TreeVNC の接続方法}
 \label{fig:treevnc}
\end{figure}


\section{画面配信の切り替え}
従来の VNC では、配信者が切り替わるたびに VNC の再起動、サーバー、クライアント間の再接続を行う必要がある。TreeVNC では、画面上にある ShareScreen ボタンを押すことで配信者の切り替えを実行できるように設定し、この問題に対処している。

ShareScreen 実行後、 Root Node に対し SERVER_CHANGE_REQUEST というメッセージが送信される。このメッセージには ShereScreen ボタンを押した Node の番号やディスプレイの情報が付加されている。メッセージを受け取った Root Node は配信を希望している Node の VNC サーバーと通信を行い、切り替え作業に入る。

%切り替え実行時の図