で各ネットワークポートに必要な詳細を取得したいと思います/etc/services
。各ポートの状態を取得するためにC ++プログラムを開発する必要がある場合は、どうすればよいですか?私は私のプログラムで電話やそのようなものを許可しませんnetstat
。ss
情報を取得できるファイルはファイルシステムにありますか?
答え1
ANDに対して外部結合を実装するかどうか、netstat -a -t -u
または他のものを実装するかどうかはまだ明確ではありませんが、以下は役に立つかもしれないいくつかのアイデアです。/etc/services
netstat -a -t -u
TCPおよびUDPポート番号の範囲は1〜65536です。
/etc/services
あなたが言及したファイルは次のとおりです。サブセット~の有名な港そして登録されたポート。より大きなリストは次の場所にあります。IANAサービス名とトランスポートプロトコルポート番号レジストリ。あなたはそれを使用することができますgetService()検索にリストされているすべての履歴を検索します/etc/services
。/proc/net/tcp
Linuxでは、ファイル/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",...)
、構造体配列を検索しますxtcpcb
。netstat
これらの構造がどのように解釈されるかを確認するには、ソースコードを調べるのが最善です。
答え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
これにより、システムで開いているすべてのポートが一覧表示されます。