프로그래밍의 기초/TCP | IP
주소 정보의 표현
Kim나현
2022. 1. 6. 16:58
반응형
- IPv4 기반의 주소표현을 위한 구조체
- 주소 정보: 주소 체계, IP주소, PORT 번호
[Linux 기반]
struct sockaddr_in
{
sa_family_t sin_family; // 주소체계(Address Family)
uint16_t sin_port; // 16비트 TCP/UDP PORT번호
struct in_addr sin_addr; // 32비트 IP주소
char sin_zero[8]; // 사용되지 않음
};
구조체 in_addr_t는 32bits IP주소정보를 담을 수 있도록 정의
struct in_addr
{
in_addr_t s_addr; // 32비트 IPv4 인터넷 주소
};
[window 기반]
typedef struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
} SOCKADDR_IN, *PSOCKADDR_IN, *LPSOCKADDR_IN;
- 위와 같이 typedef 선언을 통해 자료형을 재정의하여 사용하는 것은 확장성을 고려했기 때문이다.
- 구조체의 멤버
- sin_family
주소체계 | 의미 |
AF_INET | IPv4 인터넷 프로토콜에 적용하는 주소체계 |
AF_INET6 | IPv6 인터넷 프로토콜에 적용하는 주소체계 |
AF_LOCAL | 로컬 통신을 위한 유닉스 프로토콜의 주소체계 |
- sin_port
네트워크 바이트 순서로 16bit PORT번호 저장
- sin_addr
네트워크 바이트 순서로 32bit IP주소정보 저장
- sin_zero
SOCKADDR_IN의 크기를 SOCKADDR과 일치시키기 위한 멤버이며 0으로 채워야 함
반응형