annotate final_main/chapter2.tex @ 2:8b42a96b95aa

change chapter2
author oshiro
date Sat, 16 Feb 2019 16:56:25 +0900
parents 83f997abf3b5
children 1f35e28d486c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
83f997abf3b5 first commit
e155702
parents:
diff changeset
1 \chapter{TreeVNC の基本概念}
2
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
2 % VNCとはなにか?どのようなものか?どのようにしてなりたっているか?
0
83f997abf3b5 first commit
e155702
parents:
diff changeset
3
83f997abf3b5 first commit
e155702
parents:
diff changeset
4  TreeVNC は当研究室で開発している画面配信ソフトウェアである。
83f997abf3b5 first commit
e155702
parents:
diff changeset
5
83f997abf3b5 first commit
e155702
parents:
diff changeset
6 本章は TreeVNC の基本概念となっている技術について説明する。
83f997abf3b5 first commit
e155702
parents:
diff changeset
7
2
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
8 % どういう概念? どうしてそうするの? どうやってつかうの?
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
9 \section{Virtual Network Computing}
0
83f997abf3b5 first commit
e155702
parents:
diff changeset
10
2
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
11 TreeVNC の名前にも用いられている VNC (Virtual Network Computing) は、RFB プロトコルを用いて PC の遠隔操作を行うことを目的としたリモートデスクトップソフトウェアである。
0
83f997abf3b5 first commit
e155702
parents:
diff changeset
12
83f997abf3b5 first commit
e155702
parents:
diff changeset
13 サーバー側とクライアント側に分かれており、起動したサーバーにクライアントが接続することで遠隔操作を可能にしている。
83f997abf3b5 first commit
e155702
parents:
diff changeset
14
83f997abf3b5 first commit
e155702
parents:
diff changeset
15
2
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
16 \section{RFB プロトコル}
0
83f997abf3b5 first commit
e155702
parents:
diff changeset
17
2
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
18 RFB (Remote Frame Buffer) プロトコルは、自身の画面をネットワークを通じて送信し他者の画面に表示するプロトコルである。
0
83f997abf3b5 first commit
e155702
parents:
diff changeset
19
2
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
20 ユーザがいる(画面を表示される)側と FrameBuffer への更新が行われる(自身の画面を送信する)側に分かれ、それぞれを RFB クライアント、RFB サーバと呼ぶ。FrameBuffer は、メモリ上に置かれた画像データのことである。
0
83f997abf3b5 first commit
e155702
parents:
diff changeset
21
83f997abf3b5 first commit
e155702
parents:
diff changeset
22 RFB プロトコルでは、始めにプロトコルバージョンの確認、認証を行う。その後クライアントに向けて FrameBuffer の大きさやデスクトップに付けられた名前などが含まれている初期メッセージが送信される。RFB サーバ側は FrameBuffer の更新が行われるたびに RFB クライアントに対して FrameBuffer の変更部分だけを送信する。更に、RFB クライアントの FramebufferUpdateRequest が来るとそれに答え返信する。変更部分だけを送信する理由は、更新がある度に全画面を送信していると、送信するデータ面、更新にかかる時間面において効率が悪いからである。
83f997abf3b5 first commit
e155702
parents:
diff changeset
23
83f997abf3b5 first commit
e155702
parents:
diff changeset
24
2
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
25 \section{TreeStructure}
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
26 TreeVNC はサーバーに接続してきたクライアントをバイナリツリー状に接続している。また、接続してきたクライアントをノードとし、その下に新たなクライアントを接続していくことでサーバーが画面のデータを配信する回数を抑えることで負荷分散している(図)。バイナリツリー状に接続することで、画像データのコピーを各ノードに負担させることができ、従来の VNC ではクライアントが N 台接続するとサーバー側が N 回コピーを行なって配信していたが、この接続方法であれば各ノードが 2 回ずつコピーすることで配信を可能にしている。
0
83f997abf3b5 first commit
e155702
parents:
diff changeset
27
2
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
28 \begin{figure}[htpb]
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
29 \begin{center}
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
30 \scalebox{0.55}{\includegraphics{fig/vnc.pdf}}
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
31 \end{center}
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
32 \caption{従来の VNC の接続方法}
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
33 \label{fig:vnc}
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
34 \end{figure}
0
83f997abf3b5 first commit
e155702
parents:
diff changeset
35
2
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
36 \begin{figure}[htpb]
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
37 \begin{center}
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
38 \scalebox{0.55}{\includegraphics{fig/treevnc.pdf}}
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
39 \end{center}
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
40 \caption{TreeVNC の接続方法}
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
41 \label{fig:treevnc}
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
42 \end{figure}
0
83f997abf3b5 first commit
e155702
parents:
diff changeset
43
83f997abf3b5 first commit
e155702
parents:
diff changeset
44
2
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
45 \section{画面配信の切り替え}
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
46 従来の VNC では、配信者が切り替わるたびに VNC の再起動、サーバー、クライアント間の再接続を行う必要がある。TreeVNC では、画面上にある ShareScreen ボタンを押すことで配信者の切り替えを実行できるように設定し、この問題に対処している。
0
83f997abf3b5 first commit
e155702
parents:
diff changeset
47
2
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
48 ShareScreen 実行後、 Root Node に対し SERVER_CHANGE_REQUEST というメッセージが送信される。このメッセージには ShereScreen ボタンを押した Node の番号やディスプレイの情報が付加されている。メッセージを受け取った Root Node は配信を希望している Node の VNC サーバーと通信を行い、切り替え作業に入る。
0
83f997abf3b5 first commit
e155702
parents:
diff changeset
49
2
8b42a96b95aa change chapter2
oshiro
parents: 0
diff changeset
50 %切り替え実行時の図