[- Disclaimer -]
아래 내용은 정보보안 공부 목적으로 작성된 것이나, 이를 토대로 허가되지 않은 대상에 실습을 진행할 경우 해킹 시도로 간주하여 법적 처벌을 받을 수 있음을 알려 드립니다.
Socket Address Structures (=Socket 주소 구조체)
✦ Network 프로그램에서 Socket 함수 Argument로 사용
✦ Protocol 구조에 따라 별도의 Socket 주소 구조체 사용
✦ Return 시 반드시 SOCKADDR 포인터 형으로 Casting
SOCKADDR_IN addr;
(...)
SocketFunc(..., (SOCKADDR *(&addr, sizeof(addr), ...);
(...)
Plain Text
복사
SOCKADDR 구조체
✦ <winsock2.h>에 포함된 <ws2def.h>
✦ Parameter1에 전달되는 Argument
✧ 16 bit로 주소 체계 표현
→ Ex) AF_INET, AF_INET6
✦ Parameter2에 전달되는 Argument
✧ 사용할 주소 정보
→ Ex) TCP/IP 사용 시 IP와 Port 번호
typedef struct sockaddr {
u_short sa_family;
char sa_data[14];
} SOCKADDR;
Plain Text
복사
TCP/IP의 Socket 주소 구조체
✦ SOCKADDR_IN 혹은 SOCKADDR_IN6 사용
IrDA의 Socket 주소 구조체
✦ SOCKADDR_IRDA
SOCKADDR_IN 구조체
✦ <winsock2.h>에 포함된 <ws2def.h>
✦ Parameter1에 전달되는 Argument1
✧ 주소 체계
→ Ex) AF_INET, AF_INET6
✦ Parameter2에 전달되는 Argument2
✧ Port
→ Unsigned 16 bit 정수
✦ Parameter3에 전달되는 Argument3
✧ IP
→ 32 bit IN_ADDR 구조체 혹은 128 bit IN6_ADDR 구조체
typedef struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8]; //0으로 설정
} SOCKADDR_IN;
Plain Text
복사
SOCKADDR_IN6 구조체
✦ <ws2tcpip.h>에 포함된 <ws2ipdef.h>
✦ Parameter1에 전달되는 Argument1
✧ 주소 체계
→ Ex) AF_INET, AF_INET6
✦ Parameter2에 전달되는 Argument2
✧ Port
→ Unsigned 16 bit 정수
✦ Parameter3에 전달되는 Argument3
✧ IP
→ 32 bit IN_ADDR 구조체 혹은 128 bit IN6_ADDR 구조체
typedef struct sockaddr_in6 {
short sin6_family;
u_short sin6_port;
u_long sin6_flowinfo; //대부분 0으로 설정
struct in6_addr sin6_addr;
u_long sin6_scope_id; //대부분 0으로 설정
} SOCKADDR_IN6
Plain Text
복사
IN_ADDR 구조체
✦ <winsock2.h>에 포함된 <inaddr.h>
✦ 동일 메모리 영역을 각각 8 bit S_un_b 단위 및 16 bit S_un_w 단위 및 32 bit S_addr 단위로 접근 가능한 공용체 S_un
typedef struct in_addr {
union {
struct { u_char s_b1, s_b2, s_b3, s_b4; } s_un_b;
struct { u_short s_w1, s_w2p; } S_un_w;
u_long S_addr;
} S_un;
#define s_addr S_un.S_addr
} IN_ADDR;
Plain Text
복사
IN6_ADDR 구조체
✦ <ws2tcpip.h>에 포함된 <in6addr.h>
typedef struct in6_addr {
union {
u_char Byte[16];
u_short Word[8];
} u;
} IN6_ADDR;
Plain Text
복사
기타 등등
✦ SOCKADDR_IRDA 구조체, SOCKADDR_BTH 구조체 등 이런 Socket 구조체들도 이따



