• 締切済み

UDPパケットの分割について

askme_japanの回答

回答No.1

UDPは到達が必ずしも保証されないものだと聞いたことがあります。リアルタイムのストリーミングなどで使われているようです

H-hirosawa
質問者

お礼

早速のご回答ありがとうございます。 確かにUDPは到達が保障されないプロトコルだということは知っているのですが、 必ずしも、届かないという現象の原因はなんなのか?ということを調査しています。

関連するQ&A

  • WinsockによるUDP通信にて

    WinsockでUDP通信を行うプログラムを作っているのですが、 原因不明の問題が発生していて困っています。 通信手順は以下のとおりです。 (1) クライアントからサーバへ要求パケット送信 (2) 要求パケットを受け取ったサーバは、クライアントへACKを送信 (3) サーバが要求に対する応答パケットをクライアントへ送信 (4) 応答パケットを受け取ったクライアントは、サーバへACKを送信 クライアント-サーバ間でやりとりするデータは最大で992バイト、 それ以上になる場合は、分割して送信します。 パケットの分割が発生しない場合は、(1)~(3)がパケットの損失もなく通信できるのですが、 パケットの分割が発生する場合には、2回目以降の(4)のパケットがクライアントに届きません。再現率は今のところ100%です。 クライアント側のselect関数でもソケットを検出しません。 たしかにUDPは信頼性が低いですが、パケット分割が発生しないパターンでは100%届くので、UDPの仕様とは関係ないような気がします。 原因がさっぱりわからないので、アドバイスをお願いいたします。 ちなみに、クライアント、サーバともに同一端末内にあります(双方がループバックアドレスに対してパケットを送信)が、 これはテスト段階だからであって、本来はそれぞれ別々の端末で動作します。

  • UDPパケットが送受信されない?

    ブロードバンドルータBRL-04FA(プラネットコミュニケーションズ)を使って、LAN環境を構築しました。 サブネット外にUDPパケットを送信し受信したいのですが、受信できていないようなのです。 ローカルサーバの設定でポート開放してみたり、バーチャルコンピュータに設定してみたのですが、UDPパケットを受信できません。 そのほかの設定でなにか注意すべきところがあったら教えてください。 初心者です。

  • ネットワーク上に存在しないIPアドレスにはUDPパケットが送信できない?

    はじめまして。よろしくお願いします。 Cでソケットプログラミング(WinXP,VC++6.0)を行っています。 やろうとしていることは、 ・UDPパケットを同じネットワークセグメントのIPアドレスに送信する ということです。 プログラムを作成し、本当に送信しているのかどうかをパケット キャプチャソフト(wireshark)を使って確認してみました。 すると、ネットワーク上に存在するIPアドレスにはパケットを送信 しているのですが、存在しないIP(つまり、電源を切っているPC)には パケットを送信していないことがわかりました。 ネットワーク上においてそのIPの存在に関係なく、パケット を送信することは出来ないのでしょうか? よろしくお願いします。

  • UDPパケットのバッファサイズ変更について

    いつも参考にしています。 UDPパケットのバッファサイズ変更についてご教示下さい。 OS:Turbolinux 10 Server(kernel 2.6.8-6smp) サーバでIPv6のUDPパケットを受信しているのですが、負荷をかけると取りこぼしが発生しています。 (秒間300パケットほどの負荷をかけると2割ほどのパケットには応答がありません) アプリ側のログにパケットを破棄したというものがないので、kernelのバッファサイズを疑っているのですが、 IPv6でUDPのパケット(tftpです)のバッファサイズを増やすにはどのようにすればよいでしょうか。 ※負荷をかけているときにnetstat -iで見ると破棄しているパケットはありませんでした。この場合はkernelチューニングは無意味なのでしょうか? ご回答お願いします。

  • UDP通信の信頼性

    ファイアーウォールを介した通信で、データ量の大きいファイル(回線を30分程度使用する)をやりとりします。その際に別端末からUDPパケットを1パケット飛ばした場合にそのパケットが破棄される可能性はどの程度ありますでしょうか?

  • UDPを使って帯域測定プログラムを作りたいのですが

    Java eclipse3.5を使っています。 UDP通信を使って帯域測定プログラムを作りたいと思っています。 動作の流れは、 1.クライアント側で送信データ(1MB,5MB,10MBのバイト)を作成し、それをサーバに送信する。 2.サーバ側では、送られた各データを受け取る(読み取る?)時間をそれぞれ計測し、計測時間をクライアント側に送信する。 3.クライアント側で、送信データ÷計測時間で通信速度を計算する。 4.それを表示する。 という感じにしたいと考えています。 頭では、こうしたいという構造はあるのですが、プログラムを書くとなると、どう書けばよいか分かりません。 どなたか、アドバイスをいただけないでしょうか?

    • ベストアンサー
    • Java
  • Winsock で UDPパケットのデータロスト

    Winsockを使用して で UDP/IPパケット受信するアプリケーションを作成しましたが、Winsockで UDP/IPデータを取りこぼしています。何か回避手段や対策がありましたらお教えいただけないでしょうか よろしくお願いします

  • UDP通信におけるbind関数について

    初めて質問させていただきます。よろしくお願いします。 最近、ネットワークプログラミングの勉強をしているのですが、bindについてよくわからなくなってきました・・・。よろしければご教授願います。 質問内容は以下の通りです。 (1)bindにおける設定内容は、「相手側のIPとポート番号」なのか「自分側のIPとポート番号」なのか?  色々なところを調べてみましたが、「IPとポート番号」を設定する、としかかかれてなく、いったいどっちなのかがわからなくなってきました・・・。 (2)UDP通信において、bindは必要なのか?  サーバ-クライアントの関係が曖昧なUDP通信において、bindというのは必要なのでしょうか。 私の認識では例えば、「recv関数」などを使い受信待ちをする場合はbindが必要だが、送信だけの場合には不要であるとなっています。 この認識はあっているのでしょうか。 拙文ですが、どうか教えていただきたく <(_ _*)>

  • UDP/IPでのソケット作成について(winsock)

    UDP/IPでのソケット作成について(winsock) 開発環境VC++.NET、O/S WIN2000にてソケットプログラミング(winsock2.0)をしています。 コンソールプログラミングではありませんが、WindProcは持っていません。 UDPサーバーを作り、複数クライアントの対応をしたいと考えています。 クライアントAからの通信やりとり中に クライアントBからの通信がきたら、そちらとも通信やりとりを(自動で)行いたい。 ここで問題なのが、クライアントAの要求ポートが15000で、 クライアントBの要求ポートも15000なのです。 同じ既に開いているポートでソケット作成しようとしても、socket()関数はエラーを返してくるのですが、 やり方を工夫すれば、同一ポートでの複数クライアント対応は可能なのでしょうか。不可能なのでしょうか。 可能であれば、やり方、ヒント等教えてください。よろしくお願いします。 追記 (1)TCP/IPでは、同一ポートでソケット作成が可能でした。ネットで探したサンプルプログラムが  そのような動きをしていたのですが、UDPに書換えることはできませんでした。  http://eternalwindows.jp/network/winsock/winsock04s.html (2)UNIXの場合fork()処理後に socket()作成 → bind()で同一ポートでの複数クライアント対応が  上手くいくらしいのですが、Windowsではマルチスレッド等をうまく活用すれば、  fork()と同様の処理が可能になり、目的が達成できるでしょうか。

  • UDPの接続って?

    Linuxとgccでプログラムしているのですが、 UDPによるデータ送受信で悩んでいます。 (すいません、前回も同じようなこと言いましたね(^^;) TCPであれば、サーバ側は 1.ソケット生成 2.バインド クライアント側は 1.ソケット生成 2.コネクト で通信路が確立されますよね。 UDPはどうなるんでしょうか。コネクションを張らないということは、サーバとクライアントは区別しないんですか? 今現在、TCPのプログラムのSOCK_STREAMとIPROTO_TCPの部分だけをUDPにして実行しているのですが、UDPのくせに Connectとかやってて気分が良くないのです・・・。(笑) 現在は、SetupForClient(サーバ側)とConnectToServer(クライアント側)というTCPの接続関数をそのまま使っています。前者はいいのですが、後者は明らかにUDP向けではないですよね。 もし、クライアント側の例があったら、教えていただければ嬉しく思います。