본문 바로가기
Programming/C/C++

PF_INET와 AF_INET

by bbolmin 2012. 4. 30.

소켓 프로그래밍을 할 때 socket()함수에서는 PF_INET으로 ipv4 프로토콜을 표현하고 struct sockaddr_in 의 sin_family에는 AF_INET으로 ipv4를 표현었습니다.

그런데 PF_INET와 AF_INET의 차이는 무엇일까요?

socket(PF_INET, ~~, ~~);

struct sockaddr_in의 sin_family멤버에 = AF_INET

 

 

리눅스에서 아래와 같은 프로그램을 만들어서 실행해보면

#include <stdio.h>
#include <sys/socket.h>

int main()
{
    printf("PF_INET : %d \n", PF_INET);
    printf("AF_INET : %d \n", AF_INET);
}

 

 

PF_INET와 AF_INET 둘다 2라는 상수를 가지는 것을 확인 할 수 있습니다.

 

그래서 실제로 PF_INET와 AF_INET을 바꿔서도 차이는 없습니다. 다만 형식적으로

프로토콜 체계를 표현할 때는 PF_INET을 사용하고

주소 체계를 표현할 때는 AF_INET을 사용합니다.

 

프로그램 작동에서의 차이는 없으나 형식적으로 명시되어 있으므로

프로토콜 체계를 표현할 때는 PF_INET 

주소 체계를 표현할 때는 AF_INET를 사용하는 것 입니다..

 

 

 프로토콜 체계

정의 

 PF_INET

 IPv4인터넷 프로토콜 
 PF_INET6  IPv6인터넷 프로토콜 
 PF_LOCAL

 LOCAL 통신을 위한 UNIX 프로토콜

 PF_PACKET

 Low level socket을 위한 인터페이스

 PF_IPX

 IPX 노벨 프로토콜

 

주소 체계 

정의 

 AF_INET

 IPv4인터넷 프로토콜
 AF_INET6

 IPv6인터넷 프로토콜 

 AF_LOCAL  LOCAL 통신을 위한 UNIX 프로토콜