소켓 생성시 사용되는 인자도메인은 PF_INET, AF_INET이 있다.
PF_INET는 프로토콜 체계(Protocol Family)중 하나이고
AF_INET은 주소 체계(Address Family)중 하나이다.
프로토콜 체계의 종류와 각 종류의 정의는 다음과 같다.
PF_INET : IPv4 인터넷 프로토콜
PF_INET6 : IPv6 인터넷 프로토콜
PF_LOCAL : LOCAL통신을 위한 UNIX 프로토콜
PF_PACKET : Low Level Socket을 위한 인터페이스
PF_IPX : IPX 노블(오타가 아니라 진짜) 프로토콜 (Novell IPX)
소켓을 만들때는 소켓이 사용될 환경에 따라 프로토콜을 설정해 주는 것이 좋다.
갑자기 이 얘기를 왜 하냐면 위에 기술한 각 프로토콜의 종류가 다르고 소켓을 생성하는것도 결국 저 종류중 하나의 목적을 위해 사용하려는 것이기 때문에 그에 따르게 생성해 주는 것이 좋다.
그리고 저 프로토콜 패밀리의 각 종류를 입력하는 것은 각 소켓이 어떤 목적으로 작업하기 위해 생성되는지 미리 알려주는 것과 같다.
그리고 소켓은 네트워크 통신을 할때만 사용되는 것이 아니라 UNIX계열의 시스템에서는 내부 프로세스들끼리 통신을 하기 위해서도 소켓을 사용할 수 있다.
저 프로토콜 체계에서 자주 사용되어지는것은 PF_INET이다.
다음은 주소 체계에 대한 내용이다.
AF_INET : IPv4 인터넷 프로토콜
AF_INET6 : IPv6 인터넷 프로토콜
AF_LOCAL : LOCAL 통신을 위한 UNIX 프로토콜
이 목록들은 주소 구조체안에 주소 체계를 정할때 사용하는 목록들이다.
프로토콜 체계를 나타내는 PF_INET과 주소 체계를 나타내는 AF_INET은 같은 상수값을 가진다. 그러나 같은 상수값을 가진다고 해서 Socket에 AF_INET을 또는 structure sockaddr_in 에 PF_INET을 사용해도 된다는 것은 아니다. 프로토콜과 주소에 대한 구분을 나누기 위해서 구분을 지어놓은 것이기 때문에 그 목적에 맞게 사용하는것이 좋다.