• 締切済み

非同期通信のサーバプログラムについて

はじめまして。 今、C#で非同期通信の勉強をしています。 ためしにローカルネットワーク内で文字を やり取りするチャットソフトを作成したのですが このサーバプログラムについて改良を加えたいので ご協力をお願いいたします。 このサーバプログラムをインターネット上のサーバとする場合なのですが 実験環境ではルータを使用しインターネットに接続しています。 ルータのポート開放等は設定してあります。 プログラムでサーバ自身のローカルIPアドレスと ポートを作成したソケットにBindすることで ルータが外部からきた接続要求をアドレス変換し サーバに届けることはできるのでしょうか? うまく説明できなくてわかりにくいかと思いますが よろしくお願いいたします。

みんなの回答

  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.2

ルータを通して通信する場合、アプリケーション層では、 ルータに接続された外部からの通信に対して、 特定のホストに接続要求させることは不可能だと思います。 (ルータから、特定ホストに全ての通信を中継し、 特定ホストから接続要求を変換する事は可能かもしれませんが) このための仕組みとして、最近のルータには、 NAT(Network Address Translation)という機能があるわけです。 >ルータのポート開放等は設定してあります。 そもそも、これをしたなら必要ない事だと思うのですが。。。?

rnknsk
質問者

補足

質問の仕方が間違っていたかもしれません。 Bindするときの引数がわからなかったのです。 NATを利用しているのであればサーバのソケットで バインドするのは自身に割り振られたIPアドレス (この場合ローカル内のIP)でも問題ないのかなと 思いまして・・・。 わけのわからないことを言ってたらごめんなさい。

全文を見る
すると、全ての回答が全文表示されます。
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

>プログラムでサーバ自身のローカルIPアドレスと >ポートを作成したソケットにBindすることで ルーターの外にあるPCから中のPCに接続する為には ルーターのWAN側のIP、つまりグローバルIPが必要です。 直接ルーターの内側のローカルIPを指定する事は出来ません。 >ルータが外部からきた接続要求をアドレス変換し >サーバに届けることはできるのでしょうか? アドレスをどのように変換するかはルーターの仕事です。 ですからルーターの設定次第です。 プログラムは関係ありません。 あと非同期通信ということはUDPでしょうか。 UDPのルーター越えはホールパンチングという手法が有名ですが 一旦ポート番号を保持する外部サーバーが必要になるのと ルーターの種類によっては使えない場合もあります。

rnknsk
質問者

補足

>あと非同期通信ということはUDPでしょうか。 TCPでの非同期です。 >プログラムは関係ありません。 イメージ的にプログラムがルータのWAN側まで出て行って処理をするのかなと (雑居ビル内(ローカルネットワーク)の 飲み屋(サーバプログラム)が 来てくれた客(接続要求)をするのに 道(WAN)まででていってるようなイメージ。) もしくはNATを使っての場合は (ビルにいる案内員(NAT) が案内してくれるので飲み屋(サーバプログラム) は店舗の中で待ってるだけでいいのかな というイメージ。) あほうなことを言ってるかもしれません・・・。orz

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 自宅のチャットサーバに自宅内からアクセスするとルータが見えてしまう

    環境 ADSL回線ルータは富士通のflashwaveです ポート9999でjavaのチャットサーバとflashクライアントでチャットをしたいと思っています。 ポートの指定はサーバのipアドレスに通しています。 apachにflashクライアントをおき同じPC上にjavaのサーバを起動させています。 ローカルエリアネットワーク内でflashからサーバにつなぐためのアドレスをサーバのローカルipアドレスを指定するとローカルでチャット可能です。かつ、 flashからサーバにつなぐアドレスを127.0.0.1や自分のローカルipアドレスを指定すると自分からのみ見ることができ、自分のpc上でのみチャットが可能です。 問題は、自宅サーバにチャットサーバをたて、グローバルでチャットをするときです。 自宅外のpcはチャットできるのですが、自宅内にいる自分はチャットすることができません。 自宅内からアドレス(http://xxxxx-net.jp/xxchat.html)を指定すると自宅のルータが見えてしまいます。 ルータが見えるというのは自宅から192.168.0.1にアクセスし、ルータの設定を行う画面になってしまうということです。 プロクシサーバを通して自宅webサーバを見ると見えるのですが、ポートが指定されているためチャットすることができません。 何かいい方法はないのでしょうか。

  • サーバー機のプライマリ、セカンダリポートについて。

    通常のPCですと、LANポートは、ローカル、インターネット兼ということで、1つですが、サーバー機は2つあります。 そんなサーバー機の接続について質問をさせて下さい。 プライマリ:ローカル側、 セカンダリ:インターネット側 と2つのポートがあります。回線からルーターに接続をし、インターネットへの接続は、ルーターから行っています。 ルーターから、サーバー機への接続はどのように行ったらいいのか待ったくをもって分かりません。ローカル・インターネット側・・・? DMZ?ルーターで分ける・・・?  ((サーバーのOSはLinuxです。))

  • サーバソケットで待受ポートと違うポートで通信可能?

    192.168.0.1のTCPサーバソケットの12345ポートで待ち受けたとします。 そこに192.168.0.2の23456ポートから接続が来た場合には「192.168.0.1:12345⇔192.168.0.2:23456」というソケットが作成され、(PG次第ですが)引き続き12345ポートで待ち受けることになるかと思います。 上記例において、23456ポートから接続が来た場合に「192.168.0.1:34567⇔192.168.0.2:23456」といった、待ち受けポートと異なるポートとのソケットを作成することはできるのでしょうか? 私はできないという認識なのですが、できると言う人がいるので確認したいと思い質問します。

  • TCP及びUDP通信について

    TCP及びUDP通信について 現在WinSockAPIを用いた通信を行うプログラムを組んでいます。 しかしながらネットワークに関しては初心者で、わからない点がいくつか出てきたので質問させて頂きます。 -------------------------------------------------- 1.TCPで双方向通信を行う場合、サーバ側は指定したポートにbind→listenし、接続を待ち受けます。 クライアント側はサーバのIPを指定し、接続確立後にポートはOSが自動で割り振ると聞きました。 つまり、クライアント側がポートを開放せずに通信が出来るのは、OSなどが自動でポートを割り当て、割り当てたポートに到着したデータを該当アプリケーションに渡すからでしょうか? ポート関連は全てルータが管理しているものだと思っていたのですが、OSがポートを割り当てるという動作がよく理解できません。 -------------------------------------------------- 2.UDPで双方向通信を行う場合、端末A・端末Bともに指定したポートにbindする必要があると聞きました。 つまり、UDPで双方向通信を行う場合、端末A・端末Bの双方でポートを開放する必要があるということでしょうか? -------------------------------------------------- 是非ともご教授ください。

  • vmware server上のサーバー公開について

    現在勉強用に一時的にサーバー公開(公開できるかどうかだけの確認)をおこなおうとしています。 環境としては、vmware server上にcentosをインストールし、ブリッジモードで接続しています。apacheをインストールし、実行しています。 LAN内からは、そのアドレスにいくと、apacheが実行されているのわかりました。 ダイナミックDNSを取得し、ppoe接続(OCN のフレッツ光ファイバー)のルーターのインターネット側のアドレスを取得するようにDiCEをセットしました。 次に、ルーターにポート80をvmware server上のcent osのアドレスにポート転送するようにしました。 これで、インターネット側のIPアドレスにアクセスすると、apacheによるページがみれるという認識でいたのですが、ルーターの認証画面およびアクセス画面となります。DDNSもおなじで、ルーターの画面となってしまいます。外部からアクセスすると、アクセスが拒否され、ルーターの画面にすらいきつけません。 これは、どういうことなのでしょうか?ポート転送ができてないのでしょうか?ポートは80であいているのは確認しました。公開するにはどうしたらいいでしょうか?もちろん、勉強のためなので、確認したら、すぐ切断するのですが・・・ 以下、設定です。 ルーター ローカル側 192.168.11.1 ポート転送 192.168.11.100(ポート80) centos(vmware server上、ブリッジ) 192.168.11.100 ホストpc(windows) 192.168.11.5 インターネット環境 フレッツ光 マンション  OCN です。 どうか、よろしくおねがいします。

  • 2度目の自宅サーバ構築を考えているのですが、理解できないことがあります

    2度目の自宅サーバ構築を考えているのですが、理解できないことがあります。 1度目の時は、(インターネット)---(モデム)---(サーバ兼ルータ)---(PC) といったネットワーク構成になっていて、サーバにはLANポートが2つあり、片方には グローバルアドレス、もう片方にはローカルアドレスが割り振られていたのですが、 今調べていたら、(インターネット)---(モデム)---(ルータ)という構成で、 最後のルータにサーバとPCの両方が接続しているといった構成がよく目に付きます。 そしてこの場合サーバには(ルータを通した後なので)ローカルアドレスを 割り振ると明記されているのですが、その構成で外部からサーバにアクセス出来る というのがどうしても理解できません。どういう仕組みになっているのでしょうか。

  • yahoo messengerのビデオがみれない。

    yahoo messengerにログイン、チャットはまったく問題ないのですがウェブカムだけが見れたり見れなかったりします。 5100ポートを開放、ポートマッピングしているのですが、ウェブカムを見ようとするとインターネット&ローカルエリアが応答しなくなってしまいます。 ルータにもアクセスできなくなり、再起動させないと回復しません。 ルータはコレガのCG-WLBARAG2、OSはXP、有線接続です。 ポート開放がうまくいっていないのならつながらないのはわかるのですが、、、ネット&ローカルにもつながらなくなるのが謎です。 どなたかお助けください。

  • Linuxサーバ ポートが開放できない

    私の事務所では、サーバにFedoraLinuxとルータにWebCaster720を使っています。サーバを公開するためにルータのDMZ機能を使っていますが、HTTPとDNSのポートしか開放できません。他のポートSMTP、POP3,FTPなどのポートが開放できません。どうすれば他のポート番号を開放できるか、どうかご教授お願いします。 あとルータに固定IPアドレスが振られています。サーバのホームページも外部からドメイン名とIPアドレスで閲覧できます

  • NIC2枚搭載のサーバーに対するアクセスについ

    以下のネットワーク環境において質問があります。 初歩的な質問で申し訳ございません。 教えていただけますでしょうか。 NICが2枚搭載しているサーバーでローカルエリア接続1(有効)とローカルエリア接続2(有効)にして、 GWアドレスはそれぞれ先につながっているルータのポートのアドレスを設定します。 外側からなのですが、アクセス(やりとり)する時に問題なく通信できますでしょうか。 どちらから入ってもやり取りできますでしょうか? ちょっと不安で質問させてください。 又、もう1点質問なのですが、サーバーとの間のセグメントがルーターAとルーターB両方とも同じ場合(訳あってルーター2つが同じネットワーク上になってしまった場合) どちらかは無効にしなければならないという理解でよろしいでしょうか。(ルーターのポートのアドレスは異なります。) (理由分からずなぜそうなるかはおかしい話ですが、そのような話で引き継ぎとなってしまい。。。。) (サーバー) ローカルエリア接続1------ルーターA-----1.1.1.1 ローカルエリア接続2------ルーターB-----2.2.2.2 よろしくお願いします。

  • TS3のサーバーの立て方について。

    タイトルの通り、TS3と言うVC(ボイスチャット)のサーバーの立て方について。 サーバーを立てるのにポート開放をしないといけないのですが、 ポート開放のやり方がよくわかりません。 どういう風にポートを開放するのか教えてくださると有り難です。 よろしくお願いします。。

このQ&Aのポイント
  • 屋外設置の機械装置の天井に水が溜まると、塗装が劣化しやすくなります。
  • 天井カバーの平面部には少なからず水が溜まりますが、一定の水たまりは許容されます。
  • 文献によると、平面部の水たまりの許容値はまだ明確に定められていないようです。
回答を見る

専門家に質問してみよう