소켓프로그래밍에 있어서 구체적인 주소를 표현하기 위한 요소
-> 주소체계
-> 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 |