AF_INET이란 무엇이며 왜 필요한가요?


201

소켓 프로그래밍을 시작하고 있으며 계속 이것을보고 AF_INET있습니다.

그러나 나는 그 대신에 다른 어떤 것도 본 적이 없다. 저의 강사들은 그다지 도움이되지 않고 단지 "그냥 필요합니다"라고 말합니다.

그래서 내 질문 :

  • 의 목적은 AF_INET무엇입니까?
  • 그 대신 사용 된 것이 있습니까?
    • 그렇지 않다면 왜 존재합니까? 미래에 가능한 변화를 위해?
    • 그렇다면 무엇을, 왜?

답변:


269

AF_INET소켓이 통신 할 수있는 주소 유형 (이 경우 Internet Protocol v4 주소)을 지정하는 데 사용되는 주소 제품군입니다. 소켓을 만들 때 해당 주소 패밀리를 지정해야하며 해당 유형의 주소 만 소켓과 함께 사용할 수 있습니다. 예를 들어, Linux 커널은 UNIX ( AF_UNIX) 소켓 및 IPX ( AF_IPX) 와 같은 29 개의 다른 주소 계열 과 IRDA 및 Bluetooth와의 통신 ( AF_IRDAAF_BLUETOOTH)을 지원하지만 이러한 낮은 수준에서 사용할 수는 없습니다.

대부분의 AF_INET경우 네트워크를 통한 소켓 프로그래밍을 고수 하는 것이 가장 안전한 옵션입니다. 또한이 AF_INET6인터넷 프로토콜 버전 6 주소를.

도움이 되었기를 바랍니다,


43

AF_INET의 주요 목적은 다른 가능한 네트워크 프로토콜 또는 주소 패밀리를 허용하는 것입니다 (AF는 주소 패밀리 용, PF_INET은 (IPv4) 인터넷 프로토콜 패밀리 용). 예를 들어, 여전히 몇 개의 Netware SPX / IPX 네트워크가 여전히있을 것입니다. DECNet, StarLAN 및 SNA와 같은 다른 네트워크 시스템이 있었지만, 잘못 알려진 ISO OSI (Open Systems Interconnection)는 말할 것도없고, 현재 유비쿼터스 IP 주소를 사용하여 네트워크 연결에서 피어 호스트를 식별 할 필요는 없었습니다.

AF_INET에 대한 유비쿼터스 대안 (이후 AF_INET4로 이름을 지정 했어야 함)은 IPv6 주소 제품군의 경우 AF_INET6입니다. IPv4는 32 비트 주소를 사용합니다. IPv6은 128 비트 주소를 사용합니다.

다른 값이 표시 될 수 있지만 이례적인 값은 아닙니다. 대안과 향후 방향을 제시 할 수 있습니다. 소켓 인터페이스는 실제로 매우 일반적입니다. 이는 다른 네트워킹 인터페이스가 시들어 버린 이유 중 하나입니다.

인생은 (대부분) 단순 해졌습니다. 감사합니다.


귀하의 답변에 감사드립니다-첫 번째 질문에 대한 귀하의 답변은 사용할 네트워크 프로토콜을 정의하는 것입니다. 그래도 다른 질문에 대해 더 구체적으로 설명해 주시겠습니까?
Smashery

AF_INET6에 대한 좋은 점; 다른 주소 계열은 일부 OS에서 지원됩니다.
MarkR

15

IPC 소켓 통신을 구현하는 데 사용할 소켓 주소 지정 유형을 지정하려면 AF_UNIX 또는 AF_INET과 같은 인수가 필요합니다. AF는 주소 패밀리를 나타냅니다.

BSD 표준 소켓 (Python 소켓 모듈에 채택)에서와 같이 주소는 다음과 같이 표시됩니다.

  1. AF_UNIX / AF_LOCAL 주소 패밀리에는 단일 문자열이 사용됩니다. 이 옵션은 IP 주소가 필요하지 않은 로컬 시스템의 IPC에 사용됩니다.

  2. AF_INET 주소 패밀리에는 한 쌍 (호스트, 포트)이 사용됩니다. 여기서 호스트는 'daring.cwi.nl'과 같은 인터넷 도메인 표기법의 호스트 이름 또는 '100.50.200.5'와 같은 IPv4 주소를 나타내는 문자열이며 포트는 정수 인터넷을 통한 프로세스 간 통신에 사용됩니다.

AF_UNIX, AF_INET6, AF_NETLINK, AF_TIPC, AF_CAN, AF_BLUETOOTH, AF_PACKET, AF_RDSAF_INET 대신 사용할 수있는 다른 옵션입니다 .

AF_INET과 PF_INET의 차이점에 대한스레드 도 유용 할 수 있습니다.


14

소켓은 도메인, 유형 및 전송 프로토콜로 특징 지어집니다. 일반적인 도메인은 다음과 같습니다.

  1. AF_UNIX : 주소 형식은 UNIX 경로 이름입니다

  2. AF_INET : 주소 형식은 호스트 및 포트 번호입니다

(실제로 특수 목적으로 사용할 수있는 다른 옵션이 많이 있습니다.) 일반적으로 소켓 프로그래밍에 AF_INET을 사용합니다

참조 : http://www.cs.uic.edu/~troy/fall99/eecs471/sockets.html


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.