ソケット通信について

解決


でるでる  2006-03-15 05:13:18  No: 20500

ソケット通信でわかない事があります。
クライアントとサーバーをCONNECTするのにIPアドレスとポート番号が必要と思うのですが、この時、ポート番号は何番でも良いのでしょうか?
あるシステムでサーバー側に指定されているポート番号ではなくてもCONNECTが出来てしまいます。あるデータフォーマットでサーバー側を制御するのですが、この時CONNECTが出来たポート番号を使うと応答が帰ってきません。


deldel  2006-03-15 18:01:53  No: 20501

ここを参照してはどうでしょうか?

http://www.mm-labo.com/computer/tcpip/ipaddress/portsort.html


でるでる  2006-03-16 20:33:15  No: 20502

参考にします。


デル太  2006-03-21 08:46:15  No: 20503

解決済みのようですが、少し補足させてもらいますね。

クライアントとサーバを接続する場合、一般にはIPアドレスで接続先のコンピュータを指定します。
そして、ポート番号で利用するサービスを指定しますね。

最近はセキュリティの関係で、ポート番号を使って自由に通信させてもらえなくなってきていて、分かりにくくなってますよね?

非常に簡単に考えると、ポート番号は「アプリケーション」の指定なんです。
ローカルだとメモ帳を実行するときに「notepad.exe」のようにファイル名で起動しますよね?
これがネットワークの場合、「80番」のように番号を指定してサービスを要求します。

  「80番」が要求された→80番はWebサービス→Webサーバ(アプリケーション)が応答する

という流れですね。

このポート番号について、よく使われる番号が決められているのは、deldelさんが紹介してくれたページで説明されていますね。

でも、決められた番号を他の用途に使えない、ということではないので、勝手に使うこともできます。
でるでるさんが出会った次の現象は

> あるシステムでサーバー側に指定されているポート番号ではなくてもCONNECTが出来てしまいます。

指定したポート番号でたまたま他のサービスが受け入れ待ちをしていたためだと思います。
サーバ側ではポート番号で指定されたサービス(アプリケーション)が誰かに呼ばれたから「お、9928番が呼ばれた。私のことですね?なーに?」のように返事をしたんですね。

接続できたら、次はコンピュータ同士で会話を始めるのですが、そのときはルールに従ってコマンドをやり取りします。
このルールを「プロトコル」と言うそうで、有名なポート番号で使うプロトコルは決まっているそうです。

でるでるさんが出会った次の現象の場合、

> あるデータフォーマットでサーバー側を制御するのですが、この時CONNECTが出来たポート番号を使うと応答が帰ってきません。

サーバ側のデータフォーマットが違っていたので、意思疎通ができないんだと思います。
「なーに?」と返事はしたものの、返されたメッセージが例えばロシア語で、理解できないでいるそんな感じでしょうか・・?
またはクライアント側が返答をしないので、待ちつづけているだけかもしれません。

ポート番号がアプリケーションと対応していますので、これは自然なことなんですね。
指定されているポート番号で接続して、指定されたデータフォーマットで試せば、きっと期待通り動くと思いますよ。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加