Unix 도메인 소켓은 여러 클라이언트를 어떻게 구별합니까?
TCP에는 한 클라이언트에게 다른 클라이언트를 알려주는 튜플 쌍 (IP Addr / 포트 / 유형)이 있습니다. UDP는 클라이언트 IP와 포트를 전달합니다. Unix 도메인은 어떻게 다른 클라이언트를 추적하고?
즉, 서버는 / tmp / 소켓과 같은 경로에 바인딩 된 소켓을 생성합니다. 2 개 이상의 클라이언트가 / tmp / socket에 연결됩니다. client1과 client2의 데이터를 추적하는 아래에서 무슨 일이 일어나고 있습니까? 네트워크 스택이 도메인 소켓에서 역할을하지 않는다고 생각하고 있습니다.
IP 프로토콜 형식 및 TCP / UDP 형식과 같은 유닉스 도메인 프로토콜 형식이 있습니까? 도메인 소켓 데이터 그램 프로토콜의 형식이 어딘가에 게시되어 있습니까? 모든 유닉스가 다르거 나 POSIX와 같은 것이 표준화 되니까?
조명에 감사드립니다. 보관 설명하는 정보를 수 없습니다. 모든 소스는 도메인 소켓을 사용하는 방법에 대해 설명했습니다.
PF_UNIX
유형 의 소켓 을 만들고 이에 대한 SOCK_STREAM
연결을 수락하면 연결을 수락 할 때마다 새 파일 설명 accept
시스템 호출 의 반환 값으로 합니다. 이 파일 설명자는 클라이언트 프로세스의 파일 설명자에서 데이터를 읽고 씁니다. 따라서 TCP / IP 연결처럼 작동합니다.
"유닉스 도메인 프로토콜 형식"은 없습니다. Unix 도메인 소켓은 네트워크 연결을 통해 피어에 있기 때문에 그럴 필요가 없습니다. 에서 SOCK_STREAM
Unix 도메인 소켓 의 끝을 파일 설명하는 파일 연결의 다른 끝에있는 파일 설명을 제공합니다. 파일 설명자에 데이터를 쓸 때 파일 설명은 연결의 다른 쪽 끝에서 파일 설명을 찾아서 다른 파일 설명 자의 읽기 버퍼에 데이터를 추가합니다. 목적지를 설명하는 헤더가있는 패킷 안에 데이터가 없습니다.
A의 SOCK_DGRAM
소켓, 당신은 송신하는 데이터를 수신하는 소켓의 경로를 알려 주어야하고, 그 소켓의 파일 이미지를 찾아 볼 수 있습니다.
서버 소켓에 연결하기 전에 (또는 사용하는 경우 데이터를 보내기 전에) 클라이언트 소켓에 경로를 바인딩 SOCK_DGRAM
하면 서버 프로세스는 getpeername
(for SOCK_STREAM
)를 사용하여 해당 경로를 사용할 수 있습니다 . 의 경우 SOCK_DGRAM
수신 측은 recvfrom
송신 소켓의 경로를 가져 오는 데 사용할 수 있습니다 .
경로를 바인딩하지 않는 수신 프로세스가 피어를 고유하게 송신하는 ID를 없습니다. Linux에서는 실행하고 있지 않습니다 2.6.18-238.19.1.el5
.
'ProgramingTip' 카테고리의 다른 글
Windows 용 Sequel Pro 대안 (0) | 2020.12.12 |
---|---|
Java 7 java.nio.file.Path에서 하위 파일 / 폴더에 액세스하는 방법은 무엇입니까? (0) | 2020.12.12 |
Kotlin Bytecode-IntelliJ IDEA에서 분석하는 방법? (0) | 2020.12.12 |
WiX를 사용하여 이벤트 로그 소스를 생성하는 방법 (0) | 2020.12.12 |
대부분을 협곡 프로그램 감지 (0) | 2020.12.12 |