본문으로 바로가기

[K.Knock]소켓 주소 구조체

category Study/network 2017. 6. 8. 02:37

소켓프로그래밍에 있어서 구체적인 주소를 표현하기 위한 요소

-> 주소체계

-> IP주소

-> 포트번호


위의 3개 요소를 묶어 '소켓주소'라고 부르며 이를 담는 구조체인 sockad의 형태는 아래와 같다.


struct sockaddr{

u_short sa_family;

char sa_data[14];

}


위와 같은 형태를 하고 있으며 이때 u_short라는 자료형은 types.h에 들어있는 unsigned short(2바이트)이다.


sa_family가  주소체계를 담을 그릇이며

sa_data[14]가 IP주소와 포트번호를 담는 그릇이다.


그러나 위와같은 구조에서는 IP주소와 포트번호를 구분하여 사용하기가 쉽지 않아 in.h의 sockaddr_in을 사용한다.


struct in_addr{

u_long s_addr;

};


struct sockaddr_in{

short sin_family;

u_short sin_port;

struct in_addr sin_addr;

char sin_zero[8];

};



in_addr은 32비트의 IP주소를 담기위한 구조체이며

sin_family는 주소체계, sin_port는 16비트 포트번호, sin_zero[8]은 전체크기를 16비트로 맞추기 위한 dummy라고한다.


여기서 dummy를 사용해 굳이 16비트로 맞추어주는 이유는 sockaddr_in과 sockaddr과의 호환성을 위함이다.


주소체계에는

->AF_INET(인터넷 주소체계)

->AF_UNIX(유닉스 파일 주소 체계)

->AF_NS(XXEROX 주소체계)


가 들어갈 수 있다.

'Study > network' 카테고리의 다른 글

RFID란?  (0) 2018.05.21
[K.Knock]TCP와 UDP에서 사용되는 소켓함수  (0) 2017.06.08
[K.Knock]TCP와 UDP 소켓 통신 과정  (0) 2017.06.07
[K.Knock]소켓 관련 함수  (0) 2017.06.06
[K.Knock]소켓이란?  (0) 2017.06.02