DOBON.NET DOBON.NETプログラミング掲示板過去ログ

C# 固定IPとローカルIPで通信したい。

環境/言語:[WindowsXP、C#、NETFramework2.0]
分類:[.NET]

ローカルIPをもったClientPCから、グローバルIPをもったServerと通信をしたいと
考えています。プロトコルはUDPです。
この様なことは現実的に可能でしょうか?

Clientから、Serverへの通信は可能だと思いますが、
ServerからClientへはどのように実現させるのでしょうか。
Clientから、自分のIPをServerへ送信するのでしょうか。
でも、それってローカルIPなので、Serverからは特定できないのでは
ないかと考えています。
■No18945に返信(sigさんの記事)
> ローカルIPをもったClientPCから、グローバルIPをもったServerと通信をしたいと
> 考えています。プロトコルはUDPです。
> この様なことは現実的に可能でしょうか?
>
> Clientから、Serverへの通信は可能だと思いますが、
> ServerからClientへはどのように実現させるのでしょうか。
> Clientから、自分のIPをServerへ送信するのでしょうか。
> でも、それってローカルIPなので、Serverからは特定できないのでは
> ないかと考えています。
>
>

とりあえず、VB.NET2003のソースですが、
 http://pegalabo.net/cgi/downloader/tfsafe.cgi/VB.NET/Com.lzh
を参考にしてみてください。C# .NET Framework 2.0 を時間が空いてる時にでも、やってみます。(もしくは、サンプルを探します)
どぼんさんがCodeZineで「TCPを利用した複数クライアント接続可能なチャットアプリケーションの作成」
 http://codezine.jp/a/article.aspx?aid=22
を出していました。参考にしてください。
>ローカルIPをもったClientPCから、グローバルIPをもったServerと通信をしたいと
>考えています。プロトコルはUDPです。
>この様なことは現実的に可能でしょうか?

ネットワーク環境によっては出来ません。

例えば、イントラネットから PROXY を通してインターネットに接続しているような場合はまず無理です。

ルータ経由での接続の場合はルータの設定によります。

内→外方向の接続を禁止している場合は少ないかもしれませんが、外→内方向の接続はデフォルトでは滅多に許可しません。ネットワーク管理者に依頼するなどして、ルータの設定を変更する必要があります。

市販のホームルータの場合、最近は UPnP 仕様準拠のものが多いので、仕様で定められた手続きによってルータ設定の変更を動的に行うことが出来ます。

>http://pegalabo.net/cgi/downloader/tfsafe.cgi/VB.NET/Com.lzh

>http://codezine.jp/a/article.aspx?aid=22

これ、どっちも TCP/IP のサンプルですよね?
UDP を扱う場合は、使うクラスも考え方も少し変えないと駄目じゃないですか?
渋木さん、お久しぶりです。

> >http://pegalabo.net/cgi/downloader/tfsafe.cgi/VB.NET/Com.lzh
> >http://codezine.jp/a/article.aspx?aid=22
>
> これ、どっちも TCP/IP のサンプルですよね?
> UDP を扱う場合は、使うクラスも考え方も少し変えないと駄目じゃないですか?

あう、すいません。UDPでしたね。確かに…
一方通行型なので、それなりに工夫が必要ですね。
お返事ありがとうございます!

ひとつ確認したいことがあります。。
> 内→外方向の接続を禁止している場合は少ないかもしれませんが、外→内方向の接続はデフォルトでは滅多に許可しません。
これは、プロトコルに関係なくということでしょうか?
例えば、TCP/IPで内から外へConnectionを接続してしまえば、
双方向での通信が可能になるのでしょうか?
これもルータの設定次第になってしまうのですよね、きっと。。。
■No18952に返信(sigさんの記事)
> お返事ありがとうございます!
>
> ひとつ確認したいことがあります。。
>>内→外方向の接続を禁止している場合は少ないかもしれませんが、外→内方向の接続はデフォルトでは滅多に許可しません。
> これは、プロトコルに関係なくということでしょうか?
> 例えば、TCP/IPで内から外へConnectionを接続してしまえば、
> 双方向での通信が可能になるのでしょうか?
> これもルータの設定次第になってしまうのですよね、きっと。。。

基本的にTCPで外←→内を禁止しているルータでは、UDPの戻り(外→内)を許可していないはずです。
したがって、「TCP/IPで内から外へConnectionを接続」できても、外から内への接続が許可できていない場合は、接続できません。
やはりルータの設定しだいなのですが…
2007/01/29(Mon) 23:22:55 編集(投稿者)

>>内→外方向の接続を禁止している場合は少ないかもしれませんが、外→内方向の接続はデフォルトでは滅多に許可しません。
> これは、プロトコルに関係なくということでしょうか?

ですね。大多数がそのパターンなんじゃないでしょうか。

「穴」があれば、そこを足がかりにして侵入を試みることが出来ます。
はじめから「穴」が無ければ、そのリスクは大きく減じられます。

> 例えば、TCP/IPで内から外へConnectionを接続してしまえば、
> 双方向での通信が可能になるのでしょうか?

「接続が出来る」のなら端点同士は通信可能である場合が多いはずです。
が、ルータの設定によって左右されることもあります。

ターゲットを企業ネットとホームネットに大きく分けて考えた方が楽になるはずです。

中規模以上の企業なら PROXY が導入されていると考えて設計するべきです。
ホームネットなら UPnP と NAT が利用可能であると期待してもOKと思います。
ぺがらぼさま、渋木宏明(ひどり)さま

いろいろありがとうございました。
とても勉強になりました。

LAN内でのチャットソフトができたので、
Serverを固定IPで動かしたいな〜と考えていました。
Networkをもっと勉強して出直したいと思います。
ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板