소켓 프로그래밍을 시작하고 있으면 계속 AF_INET이라는 것이 눈에 띌 것입니다.
그렇다면 AF_INET의 목적은 무엇이고, 그 이외의 사용할 수 있는 것들은 어떤 것이 있을까?
AF_INET은 소켓이 통신 할 수있는 주소 유형(이 경우 Internet Protocol v4 주소)을 지정하는 데 사용되는 주소 체계입니다.
소켓을 만들 때는 해당 주소의 패밀리를 지정해야하며 해당 유형의 주소만 소켓과 함께 사용할 수 있습니다.
예를 들어, Linux 커널은 UNIX(AF_UNIX) 소켓 및 IPX(AF_IPX)와 같은 29개의 다른 주소 계열과 IRDA 및 Bluetooth와의 통신(AF_IRDA 및 AF_BLUETOOTH)을 지원하지만 이러한 낮은 수준에서 사용할 수는 없습니다.
대부분의 AF_INET경우 네트워크를 통한 소켓 프로그래밍을 고수 하는 것이 가장 안전한 옵션입니다.
또한 Internet Protocol v6 addresses에 대한 AF_INET6이 있습니다.
AF_INET의 주요 목적은 다른 가능한 network protocol 또는 address family를 허용하는 것입니다.
(AF는 주소 패밀리용, PF_INET은 (IPv4) 인터넷 프로토콜 패밀리 용).
예를 들어, 몇몇의 Netware SPX / IPX 네트워크가 여전히 있을 것입니다.
DECNet, StarLAN 및 SNA와 같은 다른 네트워크 시스템이 있었지만, 잘못 알려진 ISO OSI(Open Systems Interconnection)는 말할 것도 없고, 현재 ubiquitous IP 주소를 사용하여 네트워크 연결에서 peer host 식별 할 필요는 없었습니다.
AF_INET의 ubiquitous 대안 (이후 AF_INET4라는 이름)은 IPv6 주소 제품군의 경우 AF_INET6입니다.
IPv4는 32-bit 주소를, IPv6은 128-bit 주소를 사용합니다.
다른 값이 표시 될 수 있지만 이례적인 값은 아닙니다. 대안과 향후 방향을 제시 할 수 있습니다.
소켓 인터페이스는 실제로 매우 일반적입니다. 이는 다른 네트워킹 인터페이스가 시들어 버린 이유 중 하나입니다.
IPC 소켓 통신을 구현하는 데 사용할 소켓 주소 지정 유형을 지정하려면 AF_UNIX 또는 AF_INET과 같은 인수가 필요합니다. AF는 주소 패밀리를 나타냅니다.
BSD 표준 소켓 (Python 소켓 모듈에 채택)에서와 같이 주소는 다음과 같이 표시됩니다.
AF_UNIX / AF_LOCAL 주소 패밀리에는 단일 문자열이 사용됩니다.
이 옵션은 IP 주소가 필요하지 않은 로컬 시스템의 IPC에 사용됩니다.
AF_INET 주소 패밀리에는 한 쌍(호스트, 포트)으로 사용됩니다.
여기서 호스트는 인터넷 도메인 표기법의 Host name 또는 '100.50.200.5'와 같은 IPv4 주소를 나타내는 문자열이며 포트는 정수 인터넷을 통한 프로세스 간 통신에 사용됩니다.
AF_UNIX, AF_INET6, AF_NETLINK, AF_TIPC, AF_CAN, AF_BLUETOOTH, AF_PACKET, AF_RDS 는 AF_INET 대신 사용할 수있는 다른 옵션입니다 .
해당 게시글은 Stackoverflow 사이트의 질문 게시글의 답변을 번역하연 게시글입니다.
https://stackoverflow.com/questions/1593946/what-is-af-inet-and-why-do-i-need-it
여러 주소 체계 유형들이 존재하며, 각기 다른 사용법에 따라 분류됩니다.