UDPでの再送

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
めいこ

UDPでの再送

#1

投稿記事 by めいこ » 12年前

通常、プロトコル部分でIPヘッダとUDPヘッダが自動的に付加され、チェックコードが付与されますよね?
受け取り側のプロトコル部分でチェックコードを計算→正しければペイロードをプログラム側に渡す→間違っていたら、そのパケットは破棄。
これがUDPの流れだと思うのですが、この破棄を検知し、再送を促すことは可能なのでしょうか?

Skypeの画面共有のようなことをやりたいので、TCPではなく高速なUDPを使いたいのですが、データの破損が心配です。
どのような処理をすれば安心できますか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: UDPでの再送

#2

投稿記事 by softya(ソフト屋) » 12年前

安心したかったらTCP/IPだと思います。
Skypeだとパケットが部分欠損しても大丈夫なように組まれているはずです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

めいこ

Re: UDPでの再送

#3

投稿記事 by めいこ » 12年前

softya(ソフト屋) さんが書きました:安心したかったらTCP/IPだと思います。
Skypeだとパケットが部分欠損しても大丈夫なように組まれているはずです。
破損しても大丈夫な組み方とはどんな組み方でしょうか?
公開はされていないでしょうが、ソフト屋さんが作るとすれば、どのようにしますか?
個人で作成するには難しいレベルでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: UDPでの再送

#4

投稿記事 by softya(ソフト屋) » 12年前

それがSkypeのキモですからね。
私もストリーム系には詳しくないですし、大学院卒の博士号持ちや大学の教授レベルが考えるようなデータ欠損を許す映像ストリームなどのプロトコルを発案する才能無いです。
そういう事に情熱を傾けたこともないので断片的な情報を知るのみです。

ここにあるような情報を片っぱしから調べる(英語サイトも含めて)ぐらいしか手がないかなって思います。
「Between Winds and Clouds » Skype / Google Talkの仕組み」
http://drag0n.fam.cx/?p=574
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: UDPでの再送

#5

投稿記事 by h2so5 » 12年前

RUDPというプロトコルが参考になるかもしれません。再送機能付きのUDPのようなものです。
https://ja.wikipedia.org/wiki/Reliable_ ... m_Protocol

めいこ

Re: UDPでの再送

#6

投稿記事 by めいこ » 12年前

softya(ソフト屋) さんが書きました:それがSkypeのキモですからね。
私もストリーム系には詳しくないですし、大学院卒の博士号持ちや大学の教授レベルが考えるようなデータ欠損を許す映像ストリームなどのプロトコルを発案する才能無いです。
そういう事に情熱を傾けたこともないので断片的な情報を知るのみです。

ここにあるような情報を片っぱしから調べる(英語サイトも含めて)ぐらいしか手がないかなって思います。
「Between Winds and Clouds » Skype / Google Talkの仕組み」
http://drag0n.fam.cx/?p=574
そうですか・・・
英語サイトも結構見たのですが・・・

めいこ

Re: UDPでの再送

#7

投稿記事 by めいこ » 12年前

h2so5 さんが書きました:RUDPというプロトコルが参考になるかもしれません。再送機能付きのUDPのようなものです。
https://ja.wikipedia.org/wiki/Reliable_ ... m_Protocol
RUDP。これは知りませんでした。
Windowsの環境では使えるのでしょうか?

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: UDPでの再送

#8

投稿記事 by h2so5 » 12年前

めいこ さんが書きました:Windowsの環境では使えるのでしょうか?
ただのプロトコルですから実装すれば使えますよ。
データを再送するとそのぶんだけどんどん遅延が大きくなるので、リアルタイムの画面共有ではRUDPはあんまり向いていないかもしれません。

データの欠損に関しては、過去のデータから予測するとか周囲の画素から補完するとかして不自然に見えないようにすればいいんじゃないでしょうか。フレームレートの安定性を重視するのか、画質を重視するのかとかで方法は変わってくるはずなので一概には言えません。

アルゴリズムの研究が目的ではなくアプリケーションを作りたいだけなら、FFmpegなどストリーミング機能のあるライブラリを使えばいいと思います。VNC派生ソフトでオープンソースなものがあるのでそれも参考になるかもしれません。
http://sourceforge.net/projects/tigervnc/

閉鎖

“C言語何でも質問掲示板” へ戻る