반응형

IPv4 기반의 주소 표현을 위한 구조체

 

 

응용 프로그램상에서의 IP주소와 PORT번호를 표현을 위한 구조체가 정의되어 있다.

 

따라서 이 구조체를 사용하면 IP주소와 PORT번호를 쉽게 할당할 수 있다.

 

-

 

주소정보를 담을 때에는 아래의 3가지 질문에 답이 되도록 담아야 한다.

 

물론 아래의 질문과 답변을 읽어보면 당연하다고 생각할 것이다.

 

-

 

질문 1 : 어떠한 주소체계를 사용할 건가

답변 : IPv4 기반 주소체계를 사용한다.

 

질문 2 : IP주소가 어떻게 되냐

답변 : 127.0.0.1 이다.

 

질문 3 : PORT번호는 몇 번이냐

답변 : 9999이다.

 

-

 

그래서 위의 3가지 질문에 답이 될 수 있도록 아래 사지에 나와있는 형태로 sockaddr_in 구조체가 정의되어 있다.

 

sockaddr_in 구조체는 bind함수한테 주소 정보를 전달하는 용도로 사용된다.

 

-

 

 

-

 

위에 사진의 내용 중에  sockaddr_in 구조체 속 in_addr이라는 구조체를 포함하고 있는데

 

in_addr 구조체는 32비트 IP주소 정보를 담을 수 있도록 정의되어있다.

 

 IP주소 정보를 담으려면 제일 말단인 s_addr이라는 변수까지 접근해서 IP주소 정보를 넣어줘야 한다.

 

-

 

위의 두 구조체 정의를 보면 생소한 자료형이 보인다.

 

uint16_t, in_addr_t와 같은 자료형의 근거는

 

POSIX(Portable Operating System Interface)에서 찾을 수 있다.

 

POSIX란 유닉스 계열의 운영체제에 적용하기 위한 표준을 말한다.

 

즉, POSIX에서는 아래의 사진과 같이 추가로 자료형을 정의하고 있다.

 

-

 

 

-

 

위의 자료형 정보만 참조를 해도 앞서 보인 구조체의 의미를 파악할 수 있다.

 

이렇게 자료형을 별도로 정의해놓은 이유는 확장성을 고려했기 때문이다.

 

즉, int8_t라는 자료형을 사용한다면, 이는 어떠한 경우에도 1바이트(8비트) 자료형임을 보장받을 수 있다.

 

혹 이후에 자료형 int가 8바이트로 표현되는 날이 오더라도 말이다.

 

-

 

이제 다음 포스팅부터 sockaddr_in 구조체의 멤버에 대해 자세히 알아보자.

반응형

+ Recent posts