FMSでHTTPトンネリング

FMSでHTTPトンネリングについてのメモ.

2年ぶりくらいにFMS(FCS)触った.
んー,何も憶えてなかった...

RMTPへの接続に関して調べてみたのでメモ.
間違ってたらご指摘ください.

1.FMSに接続するプロトコルとポート
どうやらFlashPlayerはNetConnection.connectした際に繋がりそうなところに勝手につなげてくれる.
具体的に言うとrtmpプロトコルの1935ポート,443ポート,80ポートと接続して,それでも接続できなかったらrtmptプロトコルの80番ポートで接続を試みてくれるらしい.

とても便利でいいやつなんだけど,どうも「接続できなかったら」という条件がOSに依存していて困るところもある.
OSがしばらく接続を試みて接続できなかったら「接続できません」という状況になる.
で,そのOSが「接続できません」って教えてくれるのに時間がかかる.
とくにMac(9?X? or both?)では顕著に遅いらしい.(未確認)

ってわけでパケットをモニタリングして実験してみたら説明どおり
順番に接続してくれていた.

1.rtmpの1935番ポート (約20秒)
2.rtmpの443番ポート (約20秒)
3.rtmpの80番ポート (約20秒)
4.rtmptの80番ポート (約20秒)

各々,20秒程度の接続の待ち時間があるので4番で接続するには60~80秒程度かかった.

なので,自動で接続をしてもらうよりは,
rtmp://uri:1935/app
みたいにポート番号を指定して接続していって,
自分でタイムアウトを設定した方がいいのかも知れない...??



2.HTTPトンネリングって?

HTTPトンネリングってのはおそらく,特定のプロトコルの言語をHTTPでカプセル化してサーバ<->クライアント間それぞれに翻訳させて理解するっていう感じかな.
Firewallから見たらHTTPプロトコルの80番ポートだから通しちゃえーみたいなかんじで通してくれる.
もちろんHTTPなので専用のプロトコルを使うよりも通信帯域やサーバの力を圧迫する.
んで,rtmptっていうのはrtmpをHTTPプロトコルでカプセル化しているもの...
つまり外見はHTTPで80番ポートなのでFirewallなんかでも通っちゃう.
(ってあってるかな...)



3.rtmpプロトコル1935番ポート以外で接続する条件

まずはrtmp:443, rtmp:80とかのrtmpプロトコルで接続するには
FMSサーバ側の設定としてAdaptor.xmlっていう設定ファイルに
使用するポートを記述しておかないと使えない.
デフォルトでは1935のみなのかな.
もちろん,webサーバとFMSサーバが共用のサーバの場合は
80とか443は衝突してしまうので使えない.
クライアント側はFirewallでrtmpプロトコルが遮断されていなければ通る.

rtmpt:80で接続するには,これも同様にAdaptor.xmlに80番ポートを
追加してあげる.
同じくWebサーバと共用ではダメ.
クライアント側ではFirewallは通常HTTPプロトコル80番ポートはは開放されているので通る.
中にはパケットの中身まで監視するようなやつがいて見れないこともある???(おそらくあまりない.)



と,いろいろ書いたけどFirewallっていじったことないので
不明なこと言ってるかも...

まちがってたら突っ込んでください.



参考)
media creator | HTTPトンネリング機能について
macromedia|Flash Media Serverテクニカルノート | プロキシサーバー経由の RTMP トンネリングにおける問題
LoveLoveHeart | FAQ | ファイアーウォールの環境を考慮したFlash Communication Serverの設定
FLASH-japan | FCSのトネリング
Unfound Messages "Blog" | Flash Player における RTMP リクエスト送信の仕様


contributor nao : 2006年03月23日 02:12

trackback

trackback for this entry URL:
http://blog.graffiti-web.org/mt/mt-tb.cgi/399

comment

1.FMSに接続するプロトコルとポート
この部分、僕は最初にポートチェックするクラスを走らせて、全ポートで接続させて、最初にコネクトしたプロトコル+ポートを採用という感じでやってます。
「全ポートで接続させて…」というのがサーバー負荷的に良いのかどうか分からないですが…。速度優先ってことで。

contributor タカギ : 2006年03月23日 15:20


> タカギさん
あー,全部繋ぐんですねー.なるほど.
rtmpが繋がるのにHTTPトンネリングになっちゃたりとかなると気になりますね...
でもrtmpの方がレスポンス早そうだから平気なんですかねぇ.

レンタルサーバでHTTPトンネリングできる安いサーバってないですかねぇ.
(ヘテムルはrtmp:80だけでした.)
サーバ管理者から見るとやっぱり嫌なのかなぁ...

contributor nao : 2006年03月23日 15:30