私は Linux(C++) 用のプロキシを開発中です。このプロキシは、他の機能とともに、TCP 接続を追跡し、それをプロセスの PID に関連付けます。そのためには、/proc/net/tcp の inode を取得し、/proc/pid/fd のすべての proc を解析して、どのプロセスにそれが含まれているかを確認します。非常に簡単です。
問題は、クライアントが接続を開いたり閉じたりする速度が、プロキシがプロセスの fds を解析する速度よりも速い場合があることです。/proc/net/tcp にある「メモリ内のソケットの位置」というフィールドに気付きました。 https://www.kernel.org/doc/Documentation/networking/proc_net_tcp.txt
そして、それが何か役に立つかどうか疑問に思います。全体的に文書化が非常に不十分で、関連するオンラインリソースは見つかりませんでした。
私の質問は、ソケット メモリの場所とは正確には何を意味するのか、どのようにアクセスするのか、そしてそこには何があるのかということです。
ありがとう。