내가 읽고 있는 내용은소켓 파일 시스템, 드라이버가 설치되지 않은 것 같은데 왜 그런지 궁금합니다. 즉, 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/*
소켓 파일/symlink에 대한 정보를 찾았습니다./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
/또는 다른 것을 할 수 있도록 소켓에 대한 사용자 공간 파일 시스템 표현이 없는 이유는 무엇입니까 ?
두 가지 다른 것. SockFS는 파일 설명자와 일치하는 방식으로 생성된 소켓을 나타냅니다.
당신이 원하는 것은 완전히 다른 일을 하는 사용자 수준 파일 시스템입니다! 새 소켓 생성, 원격 호스트에 대한 연결 설정, 데이터 송수신 시작과 같은 복잡한 작업을 파일 이름 뒤에 숨깁니다. VFS 호환 항목에 이미 설정된 소켓 설명자를 나타내기 위해 구조체를 사용하는 것과는 상당히 다릅니다!
그런데 Plan9 OS가 여러분이 원하는 파일 시스템 계층 구조를 정확히 갖고 있다고 들었습니다.
따라서 누군가가 이미 귀하가 원하는 것을 작성했을 수도 있고 우리 중 누구도 그것을 알지 못할 수도 있습니다. 실제로 zsh는 실제 파일 이름 대신 특정 문자열로 무언가를 리디렉션하는 것을 볼 때 에뮬레이트한다고 생각합니다. 지정된 호스트/포트에 대한 TCP 연결을 설정하고 거기로 리디렉션된 문자를 보냅니다.
어쨌든 이것은 실제로 파일 시스템이 아닙니다. 작성하고 싶다면 계속하십시오. FUSE는 그다지 어렵지 않으며 성능은 확실히 제한되어 있지만 설명한 내용을 달성하는 데 방해가 되는 것은 없습니다. 그것하다좀 헷갈리긴 하지만! 여러 프로세스를 동시에 열 수 있습니다 /net/tcp/192.168.0.5/8000
. 이렇게 하시겠습니까?동일한연결입니까, 아니면 두 개의 별도 연결입니까? 이 파일 시스템에서 수행하는 작업에 주의해야 합니다!