- PR -

パケットロスについて

1
投稿者投稿内容
ばーど
常連さん
会議室デビュー日: 2005/08/03
投稿数: 32
投稿日時: 2005-12-03 13:11
こんにちは。

自分は、アドホック通信(ワイヤレス環境)にてUDPソケットを用いて約3MByteのファイルを1024Byteずつ送信側から受信側へ送信しています。

そんなに、大きなファイルをUDPでなんて・・・とおっしゃられるかもしれませんが、まだまだ初心者なんでご了承ください。

そこで、質問させていただきます。

1024Byteのパケットを3041個送信しています。しかし、何かおかしいと思い、キャプチャリングソフトの「ethereal」を用いて、キャプチャしたところ、プログラム上では3041個送信しているはずなのに、キャプチャしてみると2800個程度しかキャプチャできませんでした。

こういうことってあるのでしょうか?経験された方はいらっしゃいますでしょうか?

よろしくお願いします。
jk
ベテラン
会議室デビュー日: 2005/08/19
投稿数: 94
投稿日時: 2005-12-03 13:59
UDPの仕組みがわかっていますか?

UDPはコネクションレスなプロトコルだからあって当然ですよ。
送信側は相手の都合など考えずにただ送ればいいですが、受け側がビジーだったりコリジョンを起したりビット誤りなどが発生すれば、ロストします。
再送要求などもプロトコル上取り決めもありません。
再送やフロー制御、誤り訂正などはアプリケーションでの対応が必要になります。

キャプチャしているPCでさえもすべてのパケットを拾えていない可能性もありますし...


UDPでのパケットロストはごく当たり前のことです。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2005-12-03 14:47
送受信のPCに性能差があるとして、送信方向を逆にすると、数値はどうなりますか?
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-12-04 08:39
もう一度言おうか・・・

・NonBlockingモードにしてません?
・sendtoの戻り値は確認しています?
・sendtoがエラーになっていても気にせず送信してたりしません?


1/3もパケットロストする環境なら、TCPだってまともに動きませんよ。
1

スキルアップ/キャリアアップ(JOB@IT)