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

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

で各ネットワークポートに必要な詳細を取得したいと思います/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これらの構造がどのように解釈されるかを確認するには、ソースコードを調べるのが最善です。

おすすめ記事