ネットワークポートの状態

ネットワークポートの状態

で各ネットワークポートに必要な詳細を取得したいと思います/etc/services。各ポートの状態を取得するためにC ++プログラムを開発する必要がある場合は、どうすればよいですか?私は私のプログラムで電話やそのようなものを許可しませんnetstatss情報を取得できるファイルはファイルシステムにありますか?

答え1

ANDに対して外部結合を実装するかどうか、netstat -a -t -uまたは他のものを実装するかどうかはまだ明確ではありませんが、以下は役に立つかもしれないいくつかのアイデアです。/etc/servicesnetstat -a -t -u

  • TCPおよびUDPポート番号の範囲は1〜65536です。/etc/servicesあなたが言及したファイルは次のとおりです。サブセット~の有名な港そして登録されたポート。より大きなリストは次の場所にあります。IANAサービス名とトランスポートプロトコルポート番号レジストリ。あなたはそれを使用することができますgetService()検索にリストされているすべての履歴を検索します/etc/services

  • /proc/net/tcpLinuxでは、ファイル/proc/net/tcp6を読み取って/proc/net/udp、受信、接続、接続、または部分的に閉じられたすべてのソケットと、そのローカルおよびリモートアドレスとポートのリストを取得できます/proc/net/udp6。出力はnetstat -a -t -u -nこのファイルとほぼ同じですが、より美しいです。アドレス、ポート番号、状態はすべて16進数です。次の名前を使用して、ステータスフィールドのクールなバージョンを作成できます/usr/include/netinet/tcp.h

    数える
    {
      TCP_ESTABLISHED = 1,
      TCP_SYN_SENT,
      TCP_SYN_RECV,
      TCP_FIN_WAIT1,
      TCP_FIN_WAIT2,
      TCP_TIME_WAIT,
      TCP_閉じる、
      TCP_CLOSE_WAIT、
      TCP_LAST_ACK、
      TCP_リスニング、
      TCP_CLOSING
    };
  • FreeBSDでは呼び出すことができsysctlbyname("net.inet.tcp.pcblist",...)、構造体配列を検索しますxtcpcbnetstatこれらの構造がどのように解釈されるかを確認するには、ソースコードを調べるのが最善です。

答え2

netstatはいこれネットワーキングの基礎を学ぶためのツールです。どのオペレーティングシステムを使用しているかを指定していませんが、この場合、Linuxはnetstat -tun | awk '{ if ($4 ~ ":<portNumber>") print }'必要なほとんどの作業を実行する必要があるとします。コロンとポート番号で終わるソケットを選択して、すべてのTCPおよびUDPソケットを印刷します。

sshdたとえば、自分のシステムに接続している人を探します。

[root@xxx5b ~]# netstat -tun | awk '{ if ($4 ~ ":22") print }'
tcp        0     64 10.xxx.5.140:22             10.xxx.255.178:51976         ESTABLISHED
tcp        0      0 10.xxx.5.140:22             10.xx.255.178:58535         ESTABLISHED
[root@xxx5b ~]#

気に入らない場合は、いつでも出力を視覚的にスキャンawkできます。netstat -tun | lessリストにポートがない場合は、netstatシステムに深刻な問題がある可能性があります。

答え3

次のコマンドを使用します。

nmap localhost -p 0-65535

これにより、システムで開いているすべてのポートが一覧表示されます。

関連情報