소켓 생성 시 어떤 책은 PF_INET를 쓰고, 어떤 책은 AF_INET 를 사용합니다. PF_INET는 프로토콜 체계(프로토콜 패밀리)중 하나이고, AF_INET는 주소 체계(주소 패밀리)중 하나입니다. 프로토콜 패밀리는 아래와 같은 종류가 있습니다. 소켓을 만들 때는 소켓이 사용될 환경을 고려해 프로토콜을 설정해 주어야 합니다. 다시 말해 프로토콜 패밀리는 소켓을 생성할 때 이 소켓이 어떤 프로토콜을 사용해 통신을 할지 정해줍니다. 참고로 소켓은 네트워크 통신을 할때만 사용되는 것은 아닙니다. 유닉스 계열의 시스템에서 시스템 내부의 프로세스들끼리 통신을 하기 위해서도 사용됩니다. 자주 사용되는 PF_INET는 프로토콜 패밀리중 하나입니다. AF_INET는 주소 패밀리중 하나입니다. 종류는 아래와 같습니다. 이 들은 주소 구조체 안에 주소 패밀리를 정의할 때 사용합니다. 프로토콜 체계를 나타내는 PF_INET와 주소체계를 나타내는 AF_INET 는 같은 상수 값을 가지고 있습니다. 그렇다고 해서 주소정보를 설정하는 부분에 PF_INET를 사용하고 프로토콜 패밀리 정보를 설정하는 부분에 AF_INET를 넣는 것은 좋지 않습니다. 결과적으로, 프로토콜 체계를 설정하는 부분은 PF로 시작하는 상수를 사용하고, 주소 체계를 설정하는 부분은 AF로 시작하는 상수를 사용하는 것이 좋습니다. 실제 코딩 부분에서 socket()함수에 프로토콜 패밀리에 AF_INET를 넣어도 되지만 PF_INET를 넣는게 바람직하고 struct sockaddr_in 구조체에 주소 체계를 넣을 때에도 PF_INET 를 넣어도 되지만 AF_INET를 넣는게 바람직하다. 출처 : http://blog.naver.com/l18400?Redirect=Log&logNo=60109296392 [출처] PF_INET 와 AF_INET 의 차이점|작성자 l18400
프로토콜 체계(Protocol Family)
정의
PF_INET
IPv4인터넷 프로토콜
PF_INET6
IPv6인터넷 프로토콜
PF_LOCAL
LOCAL 통신을 위한 UNIX 프로토콜
PF_PACKET
Low level socket을 위한 인터페이스
PF_IPX
IPX 노벨 프로토콜
주소체계(Address Family)
정의
AF_INET
IPv4인터넷 프로토콜
AF_INET6
IPv6인터넷 프로토콜
AF_LOCAL
LOCAL 통신을 위한 UNIX 프로토콜
PF_INET 과 AF_INET의 차이점
2011. 2. 22. 11:05