본문 바로가기
TCP/IP

SOCKADDR_IN 구조체

by 상레알 2010. 3. 28.

* struct sockaddr_in  : IPv4의 주소 체계를 나타내는 구조체

struct sockaddr_in
{

short                    sin_family; //주소 체계(address family)

unsigned short     sin_port; // 16비트 TCP/UDP Port

struct   in_addr     sin_addr; // 32비트 IPv4주소

char                      sin_zero[8]; // 사용되지 않음

};

sin_family :  프로토콜 체계마다 주소 체계가 다르다. sin_family 변수에는 사용되는 주소 체계에 대한 정보를 대입해 준다. 표현될 수 있는 주소 체계 정보는 밑에 표와 같다.

주소체계(Address Family)                           

정의                                                               

AF_INET

IPv4 인터넷 프로토콜

AF_INET6

IP_6 인터넷 프로토콜

AF_LOCAL

Local 통신을 위한 UNIX 프로토콜


sin_port :
네트웍 바이트 오더로 이루어진 포트 번호 : 16 비트 Port 정보를 대입해 준다. 네트워크 바이트 순서로 대입해야 한다.

sin_addr : 네트웍 바이트 오더로 이루어진 아이피 번호 : 32비트 IP 정보를 대입해 준다. 역시 바이트 순서로 저장해야 한다.

sin_zero : 사용되지 않는 필드이며 0으로 설정될 수 있습니다. SOCKADDR에서 같의 위치의 같은 크기또한 사용하지 않습니다. ( 특별한 의미 없이 단순한 채워주기(padding)을 위한 목적으로 사용된는 구조체 멤버이다.


: sin_addr 필드는
IN_ADDR 타입의 또 다른 구조체입니다. 프로그램은 IN_ADDR 구조체를 이용하여 IP 어드레스의 각 부분에 접근 할 수 있습니다. IN_ADDR 구조체는 윈도우즈 소켓 헤더 파일인 WINSOCK.H 에 다음과 같이 선언되어 있습니다.

ex) struct in_addr{

uint32_ts_addr;//32비트 IPv4 인터넷 주소

};

생소한 데이터 타입들이 나오고 있다. 이러한 데이터 타입들은 POSIX에서 그 근거를 찾을 수 있다. POSIX(Portable Operating System Interface)란 유닉스 계열의 운영 체제를 위해 표준화 해 놓은 인터페이스(API)다.

Data type

Description

Header

int8_t

uint8_t

int16_t

uint16_t

int32_t

uint32_t

signed 8-bit int

unsigned 8-bit in (unsigned char)

signed 16-bit int (unsigned short)

unsigned 16-bit int (unsigned short)

signed 32-bit int

unsigned 32-bit int(unsigned long)

<sys/types.h>

sa_family_t

socklen_t

address family

length of struct

<sys/socket.h>

 
이런 식으로 데이터 타입을 따로 선언해 놓은 이유는 확장성을 고려한 결과이다. 즉 int32_t라는 데이터 타입을 사용한다면, 어떠한 경우에도 4바이트 데이터 타입이라는 것을 보장 받을 수 있다.


참조사이트 : http://synch3d.com/winsock/SOCKADDR_IN.html

'TCP/IP' 카테고리의 다른 글

Nagle 알고리즘  (0) 2011.05.02
getsockopt() , setopt () 함수  (0) 2011.05.02
ioctl : 장치 제어 함수  (0) 2011.04.29
소켓 함수 및 헤더들  (0) 2011.02.07
sendto()  (0) 2010.03.28
SOCKET() 함수  (0) 2010.03.25
Linux: SOCK_PARCKET  (0) 2009.12.03
ICMP 프로토콜  (0) 2009.11.16
인터넷 소켓 활용  (0) 2009.08.31
TCP/IP 열혈 강의  (0) 2009.08.12