C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: UDP通信に関して


(過去ログ 133 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■78609 / inTopicNo.1)  UDP通信に関して
  
□投稿者/ kiku (75回)-(2016/01/28(Thu) 14:41:15)

分類:[C#] 

●環境
 ・サーバ側
  Win2012R2
  .NETFramework3.5
  C#
  WindowsFormアプリ
 ・クライアント側
  特殊端末
  独自言語

●状況
 クライアントとサーバはUDPのユニキャストにて通信をおこなっており
 サーバはクライアントからのUDPによるリクエストに応答する形で
 レスポンスを返す仕組みになっています。

 通常は問題なく通信できているのですが、
 一度、リクエストとレスポンスのやりとりを行ってから
 3分程度放置した後に
 リクエストすると、一時的にレスポンスを返さない現象が発生します。

 原因を追究したところ、
 クライアントとサーバ間にパケットをフィルタする機能を持つ機器が
 つながっており、下記のサーバからのブロードキャストを
 ブロックしていました。

  NBNS
  LLMNR

 どうやら、定期的に上記ブロードキャストをサーバが送信しているようで
 これをブロックすると現象が発生するようです。

 ちなみに
 こちらを通すように設定したところ、現象は改善しました。

 サーバ側アプリからは明示的にブロードキャストは送信していません。

●質問内容
 どうしてこのブロードキャストが
 サーバの応答に関係しているのかわかりません。
 
 UDPの仕様なのでしょうか?
 .NETFramework3.5の仕様なのでしょうか?

 どなたか、アドバイスいただけますと幸いです。

引用返信 編集キー/
■78613 / inTopicNo.2)  Re[1]: UDP通信に関して
□投稿者/ 7774RR (1回)-(2016/01/29(Fri) 07:03:00)
聞きたいことは何だろう

Q1. NBNS LLMNR って何?
Q2. NBNS LLMNR をサーバーが発行しているのはなぜ?
Q3. 自作ソフトと NBNS LLMNR の関係は?

まあどれでもいいんだけど

UDP ってのは到達性を保証しないプロトコルなので100%届くことを期待してはならないんだ。
(たとえ LAN 内、同一 HUB に接続しているマシンでも)
その意味で、当該サーバやクライアントやフィルターは全く正常な動きをしていてなにもおかしくない。
オイラなら UDP を使った通信が時々失敗するのは当然と考える。

引用返信 編集キー/
■78615 / inTopicNo.3)  Re[2]: UDP通信に関して
□投稿者/ kiku (76回)-(2016/01/29(Fri) 09:20:51)
2016/01/29(Fri) 09:21:57 編集(投稿者)

ご回答いただきありがとうございます。

> Q1. NBNS LLMNR って何?
> Q2. NBNS LLMNR をサーバーが発行しているのはなぜ?
> Q3. 自作ソフトと NBNS LLMNR の関係は?

質問事項は下記になります。
・どうしてこのブロードキャストがサーバの応答に関係しているのかわかりません。


> UDP ってのは到達性を保証しないプロトコルなので100%届くことを期待してはならないんだ。
> (たとえ LAN 内、同一 HUB に接続しているマシンでも)

この点については、承知しております。
よって、アプリケーションプロトコルとして
特殊機器から再送を行うようにしています。

> その意味で、当該サーバやクライアントやフィルターは全く正常な動きをしていてなにもおかしくない。
> オイラなら UDP を使った通信が時々失敗するのは当然と考える。

この「時々」という部分なのですが、
これはネットワークか混んでいたりすることによって
ルータやクライアントやサーバにて送信せずに
破棄するものと思っています(もちろんご指摘のように他のパターンもあると思います。)

「状況」のところでも説明しているとおり
関係ない機器をすべて排除し、
最小機器構成でネットワーク上も混んでいない環境を
つくりだし、ブロードキャストが関係しているところまで
追い詰めてきたわけですが
これも送信できないパターンの1つという考えでしょうか?




引用返信 編集キー/
■78616 / inTopicNo.4)  Re[3]: UDP通信に関して
□投稿者/ 774RR (374回)-(2016/01/29(Fri) 09:55:51)
ハードウエア構成を最小にして、物理層レベルでは信号が届いていても
ネットワークドライバーがソフト的に捨ててしまうことがありうるのが UDP だとオイラは解釈してる。
だから今回の件については違和感無し。

> ・どうしてこのブロードキャストがサーバの応答に関係しているのかわかりません。
オイラにもわからないけど
「設計上そういう状況がありうるものが、仕様書に反さない範囲で今そのように振舞う実装になっている」
のだろうと解釈する。その原因が
. Microsoft の作った DLL/SYS にあるのか
. Intel/蟹 のデバイスドライバにあるのか
. Intel/蟹 のデバイス自体にあるのか
までは追及するだけ時間の無駄な気がする。

違うハードウエア構成・違う OS で同一プログラムを走らせたら違う挙動を示す気がするし
今問題が無い(問題を解決する手法が既に見つかっている)のであればそれで良し・・・ぢゃないかな。
「真の原因」を追究しても「あっそ」のレベルで終わる話だとオイラは思う。
お役に立てなくてごめん。
引用返信 編集キー/
■78618 / inTopicNo.5)  Re[4]: UDP通信に関して
□投稿者/ kiku (77回)-(2016/01/29(Fri) 10:42:42)

>>・どうしてこのブロードキャストがサーバの応答に関係しているのかわかりません。
> オイラにもわからないけど
> 「設計上そういう状況がありうるものが、仕様書に反さない範囲で今そのように振舞う実装になっている」
> のだろうと解釈する。その原因が
> . Microsoft の作った DLL/SYS にあるのか
> . Intel/蟹 のデバイスドライバにあるのか
> . Intel/蟹 のデバイス自体にあるのか
> までは追及するだけ時間の無駄な気がする。

なるほど、確かにそうですね。


> 「真の原因」を追究しても「あっそ」のレベルで終わる話だとオイラは思う。
> お役に立てなくてごめん。

いえいえ。
小生自身の考え方も根本的な間違いはないという
こともわかりましたし、
意見が聞けて大変助かりました。

ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -