• ベストアンサー

一度内部から通信が必要なUDP通信

よろしくお願いします。 UDPの通信プログラムを作成しています。 特定のPCだけ内部から一度相手に送信を行わないと受信ができません。 同じWin7のPCでも特定のPCのみこのような振る舞いとなります。 パケットキャプチャでは、データが届いていることを確認できていますが 一旦相手と通信を行うまでデータを受けてない振る舞いとなります。 ファイヤウォールを無効にしたりと試してみたのですが状況は変わりません。 このような状況についてアドバイス頂ければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

No.1です。 > 全てLAN内のPC同士です。 その通信はLAN内のPC同士の通信でありNATを挟んでいないということですか? だとしたらNo.1で示した資料を読んでも意味ないと思いますけど。 で、結局 「特定のPCだけ内部から一度相手に送信を行わないと受信ができません。」 というのは、どこからどこに送信したんですか? 「内部」というのは何を意味しているんですか?

その他の回答 (2)

  • washi001
  • ベストアンサー率41% (158/380)
回答No.2

ARPテーブルが出来ていないだけなのでは? UDPは再送が無いので、1発目の通信はたいていNGになり、1発目の通信で出来たARPデーブルで、 2発目以降の通信が通ったように思います。 あまり通信しないあて先にPingを投げると、1発目はNGですが、2発目以降はOKとなります。 それに良く似てるように思います。

回答No.1

説明が不足していると思いますが、「内部」というのは何の内部ですか? もしこの「内部」がNATルーターでアドレス変換したプライベートネットワーク側 という意味でしたら、そうなるのは当たり前の仕様です。 http://www.atmarkit.co.jp/fwin2k/experiments/skype02/skype02_04.html を読んでUDPのNATの仕組みを勉強してください。 NATを挟んでUDPで双方向通信する技術を「UDPホールパンチング」と言います。 以下も参考にするとよいと思います。 http://ja.wikipedia.org/wiki/UDP%E3%83%9B%E3%83%BC%E3%83%AB%E3%83%91%E3%83%B3%E3%83%81%E3%83%B3%E3%82%B0

tinysoho
質問者

お礼

ご回答、ありがとうございます。 そして説明不足ですみません、全てLAN内のPC同士です。 もしかすると複数のネットワークアダプターがあるのが原因かもしれませんが 基本知識不足ですのでまずは、ご紹介頂いた頁を熟読して考えてみたいと思います。

関連するQ&A

  • systemのUDP192.168.0.255とは?

    ファイヤーウォールの遮断(ブロック)ログに system UDP 192.168.0.3(自分) 138(ポート)/UDP 192.168.0.255(相手) 138(ポート) と頻繁に出るのですがこれはいったいなんなのでしょうか? ネットワークでファイルを共有しているため TCP 192.168.0.3(自分)/192.168.0.4(相手) 以外のsystemの通信は遮断にしています 検索をしてみると UDP 192.168.0.255はファイル共有用だとあるのですがこれを遮断してもファイル共有はできています 不思議なのが system TCP 192.168.0.3(自分)/192.168.0.4(相手) system UDP 192.168.0.3(自分)/192.168.0.4(相手) と両方解放してみると、頼みもしないのに system UDP 192.168.0.3(自分)/192.168.0.255(?) と勝手に通信してしまいます 192.168.0.255とは=ネットワーク内の相手のPCということなのでしょうか? ファイヤーウォールはCOMODOのCIS3を使用しています よろしくお願いします

  • WinsockによるUDP通信にて

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

  • udp通信が常時しています

    最近になって気が付いたのですが、LANのパケットキャプチャーで確認してのですが、UDP通信でポート53と137にたいして常時通信が発生しています。 有害な物(個人情報の流失など)か無害な物なのか分かりません。 firewallなどは反応しません。 止めたいのですが、どうしたら用でしょうか。 OSはwindowsxpです。

  • UDP通信の信頼性

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

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

    こんにちは。 現在、クライアント&サーバの通信プログラムを作成しています。 クライアントがサーバに接続しにいく際、サーバの待ち受けポートにクライアントが UDPでブロードキャストしています。 その際、クライアントの情報もUDPに乗せて、送信しています。 ここで、問題なのですが、ネットワークモニタで通信データを見てみると、 クライアントから送信するUDPデータが1500バイト?を超えると、UDPパケットの分割が行われ、 2つめのデータが、UDPではなく、IPで送信されています。 しかも、2つめのIPのパケットがサーバ側に届くケースと届かないケースがあるように見受けられます。 (環境の違いかもしれません。) 2つめのパケット破棄は破棄が起こる環境では必ず起きます。 破棄が起きない環境では一回も起こりません。 スイッチ、NIC等で、破棄することってあるのでしょうか? ネットワーク上の問題っぽいので、OSの違い(Win2K pro,Win2k advanced server) などには関係ないですよね? どなたが、ご存知の方がおられましたらご教授願います。

  • winsockを使ったTCP及びUDP通信について

    今回winsockを使った通信プログラムを組む事になったのですが、わからない点が多々ありましたので、どなたかご教授頂けると大変ありがたいです。 1. TCP通信において、送信側が"Hoge" "Fuga"と2回sendした際、受信側でrecvすると"Ho" "geFu" "ga"と3回受信する可能性があると認識しているのですが、これは正しいでしょうか? (到着する順序は保証されるが、recvする際に送信側がどのようにsendしたかは考慮されない) 2. UDP通信においては、上記のような現象は起きないと認識しているのですが、これは正しいでしょうか? (UDP通信では、2回sendすれば2回以上はrecvしない。パケットの破棄はあっても、分割はない) 3. もしUDP通信でも上記のような現象が起きる場合、到着順序の保証がされないという観点から、recvした際に"Ho" "ga" "geFu"と受信する事はあり得るのでしょうか? 4. 2が正しい前提での話です。UDP通信では、MTUを超えた場合、自動でパケットが分割されると聞きました。プログラムを組む際、これは意識しないといけないのでしょうか? (MTUが1500Byteの場合、UDPで2000Byteをsendすると、recvで1500,500と2回受信する?) 以上の4点です。 どなたかご存知の方いらっしゃいましたら、是非ご教授ください。

  • Etherealを使ったUDPプロトコルのキャプチャについて

    こんばんは。 この掲示板に大変お世話になっています。 私は、簡単なUDPソケットプログラムを作って、送信側から受信側へアドホック通信(ワイヤレス環境)にて、約3MByteのmepgファイルを1024Byteずつ送信しています。使用コンパイラはVisual C++.NETです。 私は、送信側から送出したパケットをプログラム内でカウントさせ、かつ受信側でも受信したパケットをカウントし、カウント数をDOSプロンプト上に表示させています。パケット数は3041個です。 しかし、送信側で送出したパケットがきちんと送出されていないような気がして、Etherealを用いてUDPをキャプチャしてみたところ、2800個程度しか送出できていませんでした。こういう事ってあるのでしょうか? 2800個を改善するために、パケット送信間隔を開けることで改善できました。パケット送信間隔というのは、sendto関数が呼び出された後に、sleep関数を用いて1パケット送信後に、ある時間待機させるということです。 また、Ethereal(キャプチャリングソフト)を使用することが初めてなのですが、このソフトはトランスポート層レベルでのキャプチャソフトなのでしょうか? よろしくお願いします。

  • UDPソケット通信におけるデータパケット

    UDPソケット通信をする際、受信データサイズとして考慮するべきサイズはアプリサイズとUDPヘッダー(8バイト)としてソケットオプションで受信バッファサイズを増加させたのですが、予想より受信できるパケット数が少ないです。 例) 1パケットのアプリサイズを10バイトしUDPヘッダーも考慮して実際1パケットあたり18バイトとして、最大5パケット受け取れるようにソケットオプションで アプリサイズ(10バイト)× UDPヘッダー(8バイト)×パケット数(5) 上記のように設定したのですが、実際5パケットも受信できませんでした。 上記のほかにIPヘッダーなども考慮しなければならないのでしょうか? 開発環境:solaris8 C言語

  • ファイアーウオール設定

    ネットワーク内に、Windows7のデスクトップPCと、ブリッジモードの無線LANがつながっており、 WindowsXPのノートPCを無線でつないでいます。 Windows7からXPのが見えないので、いろいろ調べたところ、XP側のファイアーウオールを無効にすると見れることがわかりました。 XPファイアーウオールのログを見ると、確かに137ポート宛パケットがdropされていました。 そこで、ファイアーウオールの137のUDPを開こうと、例外のポートを追加しようとしましたが、 「同じエントリーUDP 137がすでにあります」と、はじかれてしまいます。 netstat -an で調べると確かに 137と138は*.*になっています。 何が原因なのか どのように対処したら良いのでしょうか?

  • UDP通信でのポート

    javaを使ってUDP通信を行います。 映像データと音声データの2つのデータが あります。 以下のようなことは可能ですか? (図の説明)AからBへデータを送信します。 Aのポートは1500番を使って映像データを 送信します。と同時に、同じ1500番を使って 音声データは送信できますか? 同一ポートで複数データを送信できるか知りたい です。 (このままだと、いくつもポートをあけるため データのタイムラグありすぎて使い物になりません。。 ) もしくは、1つのポートでデータの送受信が できるか知りたいです。 なにかヒントになるようなことでもいいので 教えてください。よろしくお願いします。    A ------------------------> B (1500) 映像データ送信  A ------------------------> B (1500) 音声データ送信