본문 바로가기

C/용어정리

PF_INET, AF_INET

소켓 생성시 사용되는 인자도메인은 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을 사용해도 된다는 것은 아니다. 프로토콜과 주소에 대한 구분을 나누기 위해서 구분을 지어놓은 것이기 때문에 그 목적에 맞게 사용하는것이 좋다.

 

출처 : http://blog.naver.com/l18400/60109296392