/proc/net/tcp
表示またはファイルを表示すると、/proc/net/tcp6
コンピュータ自体に開いているポートを表示できます。
しかし、これらの項目がどの順序でリストされているのか疑問に思いますか?
答え1
で述べたようにこのカーネル文書ファイル、、リストを生成する実際のコードは次のとおりです。Linuxカーネルソースファイル.../net/ipv4/tcp_ipv4.c。ドキュメントファイルには、すべてのリスニングソケットが最初にリストされ、その後に確立された接続がリストされていると指定されています。
いかなる種類の追加分類も行われない。したがって、カーネルにTCPソケットの状態保存が再実装されると、正しい順序(または非順序)が変更される可能性があります。つまり、異なるカーネルバージョンが非常に異なる操作を実行できます。
次の4つの主な機能があるようです/proc/net/tcp
。
tcp4_seq_start()
カーネルTCPデータ構造を探索するためにイテレータを起動します。tcp4_seq_show()
さまざまなサブ機能を使用して、現在のレコードをテキスト行に翻訳します。tcp4_seq_next()
次のデータレコードを探すtcp4_seq_stop()
ファイルが閉じられるかリストが完了したら、イテレータをクリーンアップします。
リストを生成するカーネルデータ構造個々のTCP接続を処理するために使用される実際のデータ構造。、ある意味では、システムコールを実行するプロセスの動作によってエントリが挿入されると言うこともlisten()
できます。connect()
別の「/proc/net/tcp アップデート」ステップはどこにもありません。