Linux 커널은 인터넷 도메인 소켓용 파일을 생성합니까? [복사]

Linux 커널은 인터넷 도메인 소켓용 파일을 생성합니까? [복사]

Linux 커널은 경로 이름에 바인딩된 Unix 도메인 소켓용 파일을 생성합니다.

Linux 커널은 인터넷 도메인 소켓용 파일을 생성합니까?

답변1

아니요, 하드 드라이브나 기타 블록 장치에 있는 파일이 아닙니다.

당신이 보면소켓.cLinux 소스 코드에서 소켓용 inode를 생성하지만 데이터는 다음 위치에 있음을 알 수 있습니다.sockfs 파일 시스템, 커널 자체 내의 가상 파일 시스템이며 kmalloc 유형의 함수를 통해 공간을 할당합니다. 이런 의미에서 소켓은 메모리에 상주하는 익명 파일입니다.

이는 범용 유틸리티가 실제 물리적 미디어에 있는 파일과 동일한 기능을 수행하도록 하는 데 초점을 맞춘 디자인 패턴인 "유닉스의 모든 것은 파일이다"라는 개념으로 거슬러 올라갑니다. ~처럼리누스 토발즈지적했다:

"모든 것이 파일이다"의 요점은 임의의 파일 이름을 갖는다는 것이 아니라(소켓과 파이프는 "파일"과 "파일 이름"이 서로 아무 관련이 없음을 나타냄) 공통 이름을 사용할 수 있다는 것입니다. 사물의 도구를 다르게 작동시키는 사실.

따라서 소켓에는 파일과 유사한 액세스를 위한 inode가 있지만 실제 파일 시스템에는 존재하지 않습니다.

그러나 프로세스 네트워킹에 사용되며 디스크 파일 시스템에 상주하는 IPC 유형 개체인 Unix 도메인 소켓이 있습니다.

답변2

Linux 커널은 경로 이름에 바인딩된 Unix 도메인 소켓용 파일을 생성합니다.

좋아요

Linux 커널은 인터넷 도메인 소켓용 파일을 생성합니까?

습관. 소켓을 IP 주소 + 포트에 바인딩하면 경로 이름이 합성되지 않습니다. 볼 수 있는 파일을 생성하지 않습니다.

bind()/ AF_INETsocket AF_INET6의 물리적 파일 시스템에는 파일이 생성되지 않습니다 . 이 bind()호출은 내장된 가상 파일 시스템에 파일을 생성하지 않습니다. (물론 netstat -46새로운 파일이 생성되도록 어떤 방식으로든 모방하는 FUSE 파일 시스템을 직접 작성할 수도 있습니다.)

관련 정보