SockFSはファイルシステムを介してUDPとTCPソケットをマウント/相互作用します。

SockFSはファイルシステムを介してUDPとTCPソケットをマウント/相互作用します。

私が読んでいる内容はソケットファイルシステム、ドライバがインストールされていないようですが、なぜそうなのか気になります。つまり、SockFSがUDPおよびTCPソケット用のVFS APIを実装している場合は、他のタスクを実行できるようにソケットのユーザースペースファイルシステム表現がないのはなぜcat /net/tcp/151.101.65.69/80ですかecho "GET /v1/users/some-id HTTP/1.1" > /net/tcp/192.168.0.5/8000

実際、UnixソケットはTCPソケットとUDPソケットと同じソケットAPIを実装し、ファイルシステム表現も持っているので、これははるかに意味がありません。

編集:/proc/*/fd/*ソケットファイル/シンボリックリンクに関する情報が見つかりました。/proc/pid/fdの[ソケット:番号]とはどういう意味ですか?が、読み書きできないので、あまり役に立たないようです。

root@drpyser-thinkpad[192.168.8.224] in /proc/1
❯ ll fd/18
lrwx------ root root 64 B Fri Feb 24 13:54:16 2023  fd/18 ⇒ socket:[14810]

root@drpyser-thinkpad[192.168.8.224] in /proc/1
❯ file fd/18
fd/18: symbolic link to socket:[14810]

root@drpyser-thinkpad[192.168.8.224] in /proc/1
❯ socket:[14810]^C

root@drpyser-thinkpad[192.168.8.224] in /proc/1
❯ cat fd/18
cat: fd/18: No such device or address

root@drpyser-thinkpad[192.168.8.224] in /proc/1
✖1 ❯ cat > fd/18
warning: An error occurred while redirecting file 'fd/18'
open: No such device or address

EDIT2:計画9に加えて、FreeBSDの概念の実装も発見されました。http://csr.bu.edu/icnp2005/posters/netfs_abstract.pdf

答え1

cat /net/tcp/151.101.65.69/80私ができることやecho "GET /v1/users/some-id HTTP/1.1" > /net/tcp/192.168.0.5/8000他のことをするためにソケットのためのユーザースペースファイルシステム表現がないのはなぜですか?

2つの異なるもの。 SockFSは、ファイル記述子と一致する方法で生成されたソケットを表します。

あなたが望むのは、まったく異なることをするユーザーレベルのファイルシステムです!新しいソケットの作成、リモートホストへの接続設定、データ送受信の開始など、複雑な操作をファイル名の後に隠します。 VFS互換項目にすでに設定されているソケット記述子を表すために構造体を使用するのとはかなり異なります。

ところで、Plan9 OSは、あなたが望むファイルシステム階層を正確に持っていると聞きました。

したがって、誰かがすでにあなたが望むものを書いているかもしれませんし、私たちの誰もそれを知らないかもしれません。実際、zshは実際のファイル名の代わりに特定の文字列に何かをリダイレクトするのを見るとエミュレートすると思います。指定されたホスト/ポートへのTCP接続を確立し、そこにリダイレクトされた文字を送信します。

とにかく、これは実際にはファイルシステムではありません。書きたい場合は続けてください。 FUSEはそれほど難しくなく、パフォーマンスは確かに制限されていますが、説明した内容を達成するのに邪魔になることはありません。それするちょっと混乱していますが!複数のプロセスを同時に開くことができます/net/tcp/192.168.0.5/8000。このようにしますか?同じ接続ですか、それとも2つの別々の接続ですか?このファイルシステムで実行する作業には注意が必要です。

関連情報