アプリケーションが使用するポート

アプリケーションが使用するポート

独自のポートを開くアプリケーション (これらのポートのサーバーとして機能し、したがってそのポートでリッスンする) と、同じアプリケーションが他のアプリケーションによってバインドされたポートに接続するアプリケーション (これらのポートのクライアントとして機能) をテストしています。

アプリケーションがどのポートを作成し、どのアプリケーションとポートに接続するかについての概要を取得したいと思います。

これどうやってするの?

答え1

これには を使用できますnetstat。例を参照してください ( を grep しましたssh)。

netstat -putan | grep ssh
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1725/sshd
tcp        0      0 1.2.3.4:45734           1.2.3.5:22              ESTABLISHED 2491/ssh
tcp6       0      0 :::22                   :::*                    LISTEN      1725/sshd

説明:

私はパラメータをよく使います-putan(覚えやすいので)。

  • -p: アプリケーション/プロセスのPIDを表示します
  • -u: UDP ポート/接続を表示
  • -t: TCP ポート/接続を表示
  • -a: リスニングソケットと非リスニングソケットの両方を表示する
  • -n: 数値出力 (ホスト名などの DNS 検索は行いません)

上記の出力では、すべてのネットワーク インターフェイス ( ) 上のポート をリッスンしているsshdPID を持つ ssh デーモン プロセス ( )があることがわかります。また、ポート番号 のIP アドレス に接続されているssh クライアント プロセス (PID ) があります。私の IP アドレスは、外部ポートは です。接続が確立されていることがわかります。したがって、 経由でログインしています。1725220.0.0.024911.2.3.5221.2.3.445734ssh

答え2

これを実行できる別のツールはlsof:

# lsof -i -a -p 1981
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1981 root    3u  IPv4    917      0t0  TCP host.example.com:ssh (LISTEN)
# lsof -i -a -p 1981 -n
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1981 root    3u  IPv4    917      0t0  TCP 10.1.2.3:ssh (LISTEN)
# lsof -i -a -p 1981 -n -P
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1981 root    3u  IPv4    917      0t0  TCP 10.1.2.3:22 (LISTEN)
#

使用されるオプションは次のとおりです。

  • -iプロセスによって開かれたインターネットポートを印刷する
  • -aすべてのオプションをANDにする
  • -p 1981プロセス1981の出力を表示する
  • -nホスト名の検索を禁止し、代わりにIPを表示する
  • -Pサービス検索を禁止し、代わりにポート番号を表示する

lsof大きな出力から grep でプロセスを検索する必要がなく、チェックするプロセスを指定できるという利点があります。以前 よりも標準的になりつつありnetstatますが、システム上でより確実に利用できるlsofようになりました。

答え3

すでに適切な回答がありますが、コマンドの実行時に開いているポートのみがリストされます。

straceアプリケーションの存続期間中に開かれた接続を監視するのに適したツールです。

strace -e socket,connect,close -f -o hipchat.strace.txt hipchat

出力には、UDP 要求や開かれたが閉じられた接続などの追加情報が表示されます。

答え4

ss -a4 | less

IPv4 について話していると思いますが、そうでない場合は、前のコマンドの 4 を 6 に置き換えてください。-a パラメータは、すべてのポート (リスニング ポートと非リスニング ポート) を表示します。表示で名前を解決したくない場合は、パラメータに -n を追加できます。

関連情報