• ベストアンサー

/etc/servicesの設定について

a-kumaの回答

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

> なぜ記述していないものも、動けてしまうのか教えてください。 まず、結論から言うと、ソケット通信を行う際に /etc/services にポート番号が 記述されていることは、必須ではありません。 プログラムの中に、直接ポート番号を記述することができます。 ただし、良く知られている番号以外は、ポート番号がかち合っちゃうことがある ので、ソケット通信を行うアプリケーションが利用するポート番号を指定する 共通の仕組みとして /etc/services ファイルがあるのです。 ご存知のように、このファイルには、サービスを表す名前とポート番号が対で記述 してあります。 アプリケーションの方では、ポート番号ではなく、サービス名の方をプログラムの 中に記述をし、getservbyname() 関数などでポート番号を取得するように作ります。 このやり方でも、ポートに相当する「サービス名」をプログラム中に記述するわけ ですから、そのサービス名が複数のアプリケーションでかち合ってしまう問題が 解消されているわけではありません。 ただの数値よりも、文字列の方が冗長度が高いので、かち合ってしまう問題が 起こり難いだろう、ということです。

esi
質問者

お礼

早速のご回答ありがとうございます。 /etc/servicesの使われ方がよくわかりました。 とてもわかりやすかったです。 ありがとうございました。

関連するQ&A

  • ポートの開閉の方法

    /etc/inetd.confおよび/etc/services を設定しています。この2つでポートの開閉ができるそうですが、うまく開閉できません。マシンはsolarisですが、linuxユーザーの方の回答も歓迎です。 ローカルマシンから対象のマシンに対してポートスキャンする方法で確認しています。 inetd.confとservicesに、サービスとポート番号を記述/削除してリブートするだけではだめなのでしょうか?

  • inetd.confの設定について

    Solaris8を使用しておりますがinetd関連の設定ファイルとして/etc/inetd.confと/etc/inet/inetd.confがあります。双方の役割と違いについてお教え願えないでしょうか。よろしくお願いいたします。

  • inetd経由でhttpdを2つ起動する方法

    /etc/servicesはinetdが参照します。 ではhttpdを2つinetd経由で起動する場合はエントリを二つ書くのでしょうか? その場合、どのように記述すればよいのでしょうか?

  • services.exe について教えてください

    PCは FMV CE117A Windows-XP HE SP2、アンチウィルスソフトは「キングソフトアンチウィルス 2006」を使っております。 PCの調子が悪いので昨晩リカバリーしました。 一通りの設定を終えてネットに接続したところ、キングソフトアンチウィルスに同梱されているファイアーウォールが以下のような警告を発しました。 ---------------------- ネットワークアクセス警告 警告:services.exe プログラムはメールを送信しようとしています。 ネットワーク情報 ネットワークプロトコル:TCP リモートアドレス:207.69.200.17 リモートのポート:25 ファイルの情報 ファイル名:services.exe ファイルバージョン:0.0.0 製造日期:2006-06-24 14:15:13 ファイルパス:C:\WINDOWS\etc\services.exe --------------------- システム内を検索したところ、次のものが見つかりました。 --------------------- 検索結果 services C\WINDOWS\system32 106KB アプリケーション 2004/08/04 0:56 services C\WINDOWS\servicePackFiles\i386 106KB アプリケーション 2004/08/04 0:56 ------------------- この services.exe は、そのまま実行させておいてよろしいでしょうか? また、なぜメールを送信しようとするのでしょうか? お教えください。よろしくお願いいたします。

  • ポートの開放

    /etc/inetd.conf AAA  stream tcp nowait nobody /usr/local/bin/BBB BBB -inetd /etc/services AAA  5000/tcp /etc/hosts.allow BBB : ALL と記述して、UNIXマシンを再起動しました。その後、同じネットワーク内の他のマシンを使ってポートスキャンでポート5000をたたいても、このポートは開放されません。 当然、サービスAAAを使おうとしても、 unable to connect to host: Connection refused というエラーが出てしまいます。 何か設定忘れ、あるいは記述忘れなどがあるのでしょうか?

  • VNCの設定について

    サーバーマシン(UNIX)に、VNCサーバーを導入し、windowsからVNCviewerを実行させてサーバーマシンを動かそうとしています。 サーバーマシンの/etc/inetd.confに、 vnc-1024x768x8 stream tcp nowait nobody /usr/local/bin/Xvnc Xvnc -inetd -query localhost -once -geometry 1024x768 -depth 8 -cc 3 を追記し、/etc/servicesには、 vnc-1024x768x8 5952/tcp #XVNC を追記し、/etc/hosts.allowには、 Xvnc : ALL を追記し、リブートしました。 このようにすれば、vncserverを走らせることなく、クライアントwindowsPCからvncviewerを起動し、(サーバーマシンのIP:5952)と 入力すればサーバーマシンの画面がwindows画面に現れるはずです。しかし、 unable to connect to host: Connection refused (10061) というエラーが表示されます。おそらくサーバー側のポート5952が 開放されていないからだと思います。 この場合のポートを開放する設定ファイルみたいなものはどこに あるのでしょうか。ちなみに、サーバーはsolarisですが、 linuxの場合でも良いので教えてくれればうれしく思います。

  • 開いているポートを調べたいのですが・・

    開いているポートで、何番ポートが開いているか、そのポートを使用しているサービスは何か。そのサービスは閉じていいのか。 調べる必要があります。 <前提> ・solaris10(用途別に4台) ・標準コマンドで調べたい。(コマンドのインストールは難しい) <試した行動> ・netstat -t <solarisでは使用できない> ・netstat -(いろいろ) <port番号が出ない> ・/etc/services <コメントアウトしているポートなし> <結果> ・setstatコマンドで表示される項目の意味がわかりません。 ・lissonしているport番号が表示されません。 このような状況で手詰まりしています。 解説サイトも見当たりません。 ご存知でしたら、回答をお願いいたします。

  • /etc/vfstabに記述してもmountできない

    OSはSolaris10です。 /etc/vfstabに記述してOS再起動してもmountができない状態です。 ファイルの書き方は問題ありません。(以前問題なかったの資料を参考にしました) mountコマンドではmountできます。 以前Solaris9で行った時は/etc/vfstabに記述すれば普通にOS再起動後にmountされていたのですが、何か他に変更するファイルなどがあるのでしょうか。 /etc/vfstabに記述した後OS再起動時にmountされない状態でformatコマンドを打ちvfstabに指定したディスクのデバイスパスを指定すると、そのvfstabに記述したが認識されない部分がエラーとなって出てきました。 助言頂けると幸いです。

  • Redhadでのネットワーク設定ファイル

    以前はsolarisを使用していたのですが、 Redhatでは以下の設定はなんというファイルで行うのでしょうか? (1)マシン名(solarisでの/etc/hostname.bge0) (2)ログイン画面に表示される名前(solarisでの/etc/nodename (3)IPアドレス(solarisの/etc/hosts) (4)ルータ(solarisでの/etc/defaultrouter) (5)ネットマスク(solarisの/etc/netmasks) (6)nfs許可(solarisでの/etc/dfs/dfstab)

  • Solaris10セキュリティ対策について

    Solaris10環境で、以下を実施する方法を教えてください。 ※セキュリティ対策を講じるため、以下に"不要な"という表現をしています。 1. 開放されているポート番号の確認方法 2. 不要なポートの閉塞方法 3. 不要なサービスの停止方法   svcadmコマンドとinetdコマンドを使用する方法があると思いますが、使い分けがわかりません。 よろしくお願いします。