프로그래밍의 기초/TCP | IP

주소 정보의 표현

Kim나현 2022. 1. 6. 16:58
반응형
  • IPv4 기반의 주소표현을 위한 구조체

- 주소 정보: 주소 체계, IP주소, PORT 번호

[Linux 기반]

struct sockaddr_in
{
    sa_family_t    sin_family;  // 주소체계(Address Family)
    uint16_t       sin_port;    // 16비트 TCP/UDP PORT번호
    struct in_addr sin_addr;    // 32비트 IP주소
    char           sin_zero[8]; // 사용되지 않음
};

구조체 in_addr_t는 32bits IP주소정보를 담을 수 있도록 정의

struct in_addr
{
    in_addr_t    s_addr; // 32비트 IPv4 인터넷 주소
};

[window 기반]

typedef struct sockaddr_in {
  short          sin_family;
  u_short        sin_port;
  struct in_addr sin_addr;
  char           sin_zero[8];
} SOCKADDR_IN, *PSOCKADDR_IN, *LPSOCKADDR_IN;
  • 위와 같이 typedef 선언을 통해 자료형을 재정의하여 사용하는 것은 확장성을 고려했기 때문이다.

 

  • 구조체의 멤버
  • sin_family
주소체계 의미
AF_INET IPv4 인터넷 프로토콜에 적용하는 주소체계
AF_INET6 IPv6 인터넷 프로토콜에 적용하는 주소체계
AF_LOCAL 로컬 통신을 위한 유닉스 프로토콜의 주소체계
  • sin_port

네트워크 바이트 순서로 16bit PORT번호 저장

  • sin_addr

네트워크 바이트 순서로 32bit IP주소정보 저장

  • sin_zero

SOCKADDR_IN의 크기를 SOCKADDR과 일치시키기 위한 멤버이며 0으로 채워야 함

반응형