소켓 파일을 생성하려면 AF_INET이 필요합니까?

소켓 파일을 생성하려면 AF_INET이 필요합니까?

에 대한 정보입니다 AF_INET.

동일한 호스트 내에서 통신하기 위해 AF_UNIX소켓 파일 예제를 만듭니다./tmp/name_of_the_socket_file

AF_INET, 소켓 파일을 만들어야 합니까 ?

AFAIK, 소켓 파일을 만들 필요가 없으며 AF_INET간단한 클라이언트 및 서버 모델과 통신할 수 있습니다.

내 동료가 IP 주소를 파일 이름으로 사용하여 소켓 파일을 만들어야 한다고 말했습니다 AF_INET. 이해가 안 되지만 누군가 나를 명확히 설명할 수 있습니까?

답변1

동료들은 나에게 필요하다고 말했다.AF_INET

당신의 동료가 틀렸다. 맨페이지를 살펴보세요bind(2)다양한 소켓 유형에 규칙이 있음을 알 수 있습니다.

이름 바인딩에 사용되는 규칙은 주소 계열에 따라 다릅니다. 자세한 내용은 섹션 7의 수동 항목을 참조하세요. 에 대해서는 를 AF_INET참조 하고 에 대해서는 를 참조 하십시오 .ip(7)AF_INET6ipv6(7)AF_UNIXpacket(7)AF_X25x25(7)AF_NETLINKnetlink(7)

너는 보게 될 것이다ip(7)파일을 생성할 수 있는 호출은 없습니다 AF_INET. 그리고 이 멋진 것IBM 논문이 소켓 구조와 그에 대한 일부 역사에 대해 설명합니다. 레거시 구조 형식(BSD 4.4/Unix 98):

struct sockaddr_in {
  uint8_t         sin_len;
  sa_family_t     sin_family;
  u_short         sin_port;
  struct in_addr  sin_addr;
  char            sin_zero[8];
};

현재 구조:

struct sockaddr_in {
    sa_family_t    sin_family; /* address family: AF_INET */
    in_port_t      sin_port;   /* port in network byte order */
    struct in_addr sin_addr;   /* internet address */
};

/* Internet address. */
struct in_addr {
    uint32_t       s_addr;     /* address in network byte order */
};

파일 생성에 대한 언급은 없습니다.

다른 부분에서 인용ip(7)이 소켓( AF_INET)이 어떻게 작동하는지에 대한 매뉴얼 페이지:

프로세스가 새로 들어오는 패킷이나 연결을 수신하려면 소켓을 로컬 인터페이스 주소에 바인딩해야 합니다 bind(2). 이 경우 하나의 IP 소켓만 지정된 로컬(주소, 포트) 쌍에 바인딩될 수 있습니다. 바인딩 호출에 지정 되면 INADDR_ANY소켓은 모든 로컬 인터페이스에 바인딩됩니다. listen(2)바인딩되지 않은 소켓에서 호출 되면 소켓은 로컬 주소가 로 설정된 임의의 사용 가능한 포트에 자동으로 바인딩됩니다 INADDR_ANY. 바인딩되지 않은 소켓에서 호출 되면 connect(2)소켓은 임의의 사용 가능한 포트 또는 로컬 주소가 설정된 사용 가능한 공유 포트에 자동으로 바인딩됩니다 INADDR_ANY.

--전단--

주소 형식

IP 소켓 주소는 IP 인터페이스의 조합으로 정의됩니다. 주소와 16비트 포트 번호.기본 IP 프로토콜은 포트 번호를 제공하지 않으며 udp(7) 및 tcp(7)와 같은 상위 수준 프로토콜로 구현됩니다. 원시 소켓에서는 sin_port가 IP 프로토콜로 설정됩니다.

하지만 당신이 보면unix(7)AF_UNIX맨페이지에서는 소켓 유형과 기본 구조의 몇 가지 예를 볼 수 있습니다. 소켓 파일 경로라는 필드 도 있습니다 sun_path(아래 관련 항목 참조).

#define UNIX_PATH_MAX    108

struct sockaddr_un {
  sa_family_t sun_family;               /* AF_UNIX */
  char        sun_path[UNIX_PATH_MAX];  /* pathname */
};

TL, 박사: AF_UNIX소켓(파일 사용)과 AF_INETIP 주소 바인딩 및 다양한 형식(유니캐스트, 멀티캐스트, 브로드캐스트...)으로 통신을 생성하는 데 사용됩니다.

관련 정보:

관련 정보