본문 바로가기
2023-1/컴퓨터네트워크및실습

htons / inet_addr

by 철없는민물장어 2023. 3. 31.
728x90
반응형

Struct for Ipv4 Address

 

struct sockaddr_in
{
	sa_family_t sin_family;//주소체계
    uint16_t sin_port; //포트번호
    struct in_addr sin_addr;//IP주소
    char sin_zero[8];
}

struct in_addr
{
	in_addr_t s_addr;
}
struct sockaddr
{
	sa_family_t sin_family;
    char sa_data[14];
}

Host Byte Order / Network Byte Order

 

CPU에 따라서 상위 바위트를 하위 메모리 주소에 저장하기도 하고(빅 엔디안), 상위 바이트를 상위 메모리 주소에 저장하기도 한다(리틀 엔디안). CPU마다 데이터를 표현, 해석하는 방식이 다르다.

 

그래서 통신을 위해서는 한가지 방식으로 기준을 정해서 사용해야 하는데, 

빅 엔디안이 통신의 기준 방식이 된다.

 

그래서 호스트 바이트 순서(빅 엔디안? 리틀 엔디안?)를 네트워크 바이트 순서(빅 엔디안)로 바꾸거나, 그 반대를 할 수 있어야 한다.

 

unsigned short htons(unsigned short);
unsigned short ntohs(unsigned short);
unsigned long htonl(unsigned long);
unsigned long ntohl(unsigned long);

Converting Dotted-Decimal Notaion IP Address to Integer

 

127.0.0.1 처럼 점이 찍힌 10진수로 표현된 문자열을 32비트 정수형으로 반환해준다.

 

#include <arpa/inet.h>

in_addr_t inet_addr(const char* string);
728x90
반응형

'2023-1 > 컴퓨터네트워크및실습' 카테고리의 다른 글

UDP Server & Client  (0) 2023.06.11
Transport Layer Basic  (0) 2023.06.11
DHCP  (0) 2023.03.23
Socket Basic (실습)  (0) 2023.03.17
IP Addressing: classful, CIDR /IP Fragmentation /NAT  (0) 2023.03.17

댓글