2014-10-09 3 views
0

다음 링크가 있습니다. SOL_SOCKET in getsockopt()getsockopt의 매개 변수 수준은 무엇입니까?

하지만 정말 혼란 스럽습니다. 1 개는 SOL_SOCKET가 소켓 층을 의미했다는 것을 응답했다. 소켓 층이란 무엇입니까? 해당 매개 변수에 사용할 수있는 다른 옵션이 있습니까?

SOL_SOCKET 매개 변수를 전달하면 무엇이 발생하며 SOL은 무엇을 나타내는가?

저는 UNIX를 사용하고 있습니다.

답변

1

"소켓 레이어"는 작동 시스템의 소켓 추상화를 나타냅니다. 이러한 옵션은 처리중인 소켓 유형과 독립적으로 설정할 수 있습니다. 실제로는 TCP/IP 소켓에만 관심이있을 수 있지만 UDP/IP 소켓, Unix 도메인 소켓 등이 있습니다. SOL_SOCKET과 관련된 옵션은 그 중 어떤 것에도 적용 할 수 있습니다. The list provided in the answer of the other question에는 그 중 일부가 있습니다. manual page of sockets에는 "소켓 옵션"섹션에 훨씬 더 많은 것이 있습니다.

SOL_SOCKET은 해당 수준과 관련된 "프로토콜 번호"에 대한 상수입니다. 다른 프로토콜 또는 레벨의 경우 getprotoent을 사용하여 이름에서 프로토콜 번호를 얻거나 프로토콜 설명서를 확인할 수 있습니다. 예를 들어 manual page of IP에는 IP (IPPROTO_IP), TCP (IPPROTO_TCP)의 프로토콜 번호에 대한 상수가 설명되어 있습니다.)와 UDP (IPPROTO_UDP) 인 반면, manual page of Unix sockets에는 역사적인 이유로 SOL_SOCKET을 사용하여 프로토콜 옵션을 설정해야한다고 나와 있습니다. 또한 시스템에 지원되는 프로토콜 목록을 /etc/protocols에서 찾을 수 있습니다. 그리고 각 프로토콜이 지원하는 옵션은 설명서에 있습니다. IP, TCP, UDP, Unix sockets ...

+0

이제는 소켓 계층에서 분명했습니다. 하지만 SOL은 어떤 아이디어를 의미합니까? –

+0

SOL_SOCKET 이외의 다른 옵션을 설정할 수 있습니까 –

+0

@VinothKumar 제 답변을 연장했습니다. 도움이 되었으면합니다! – jdehesa

관련 문제