글
(1) Network Byte Ordering 변환 함수
u_long WSAAPI ntohl(__in u_long netlong);
network to host(시스템) long(4바이트)
TCP/IP 네트워크로부터 인텔 프로세스의 리틀 엔디안인 호스트(시스템) 바이트 순서로 u_long(부호 없는 4바이트)
타입의 값을 변환한다.
- 리턴 : netlong 전달인자에 대해 뒤집어진 바이트 순으로 제공된 값
- netlong : TCP/IP 네트워크 바이트 순서에서 32비트 숫자.
u_short WSAAPI ntohs(__in u_short netshort);
network to host(시스템) short(2바이트)
TCP/IP 네트워크로부터 인텔 프로세스의 리틀 엔디안인 호스트(시스템) 바이트 순서로 u_short(부호 없는 2바이트)
타입의 값을 변환한다.
- 리턴 : 호스트(시스템) 바이트 순서로 된 값.
- netshort : TCP/IP 네트워크 바이트 순서에서 16비트 숫자.
u_long WSAAPI htonl(__in u_long hostlong);
host to network long
호스트로부터 빅 엔디안인 TCP/IP 네트워크 바이트 순서로 u_long 타입의 값을 변환한다.
- 리턴 : TCP/IP 네트워크 바이트 순서로 된 값.
- hostlong : 호스트(시스템) 바이트 순서로 된 32비트 숫자.
u_short WSAAPI htons(__in u_short hostshort);
host to network short
호스트로부터 빅 엔디안인 TCP/IP 네트워크 바이트 순서로 u_short 타입의 값을 변환한다.
- 리턴 : TCP/IP 네트워크 바이트 순서로 된 값.
- hostshort : 호스트(시스템) 바이트 순서로 된 16비트 숫자.
※ 네트워크 바이트 순서는 Big Endian 이다 !
: 현 재 시스템의 CPU가 Big-Endian 방식을 사용하고 있다 하더라도, 반드시 변환 함수를 사용해서 네트워크 바이트 순서로
변환하는 과정을 거쳐야 한다. 그 이유는 '이식성'을 위해서 이다. 본 프로그램이 Big-Endian 시스템에서만 사용된다는 보장을
할 수 없기 때문에.
(2) 표현계층(presentation layer)
네트워크 바이트 순서를 결정하는 등의 서로 표현하는 방법에 대한 규칙을 정한다.
ex) 나라마다 날짜 표기가 다르다.
한국 : 09/06/02, 미국 : June 2th 2009
(3) WORD
- 컴퓨터가 한 번에 처리할 수 있는 단위. (실제 의미)
- 윈도우즈 WIN16의 호환성을 위해 2바이트를 사용한다.
unsigned long inet_addr(__in const char *cp);
IPv4의 점으로 표시된 10진수 주소값으로 구성된 문자열을 IN_ADDR 구조체를 위한 적절한 주소로 변환한다.
- 리턴 : 주어진 인터넷 주소의 2진수 표현으로 구성된 부호없는 long값.
- cp : 인터넷 표준 "." 표기법으로 표현된 숫자를 나타내는 NULL종료 문자열
char* FAR inet_ntoa(__in struct in_addr in);
(IPv4인) 인터넷 네트워크 주소를 인터넷 표준 10진-구두점 형태의 문자열로 변환한다.
- 리턴 : "." 표기법으로 문자 주소를 포함한 정적인 버퍼의 포인터.
- in : 인터넷 호스트 주소를 표현한 in_addr 구조체
2011/06/20 - [[ Theory ]/Network] - 네트워크 바이트 순서 (Byte Ordering)
'P rogramming > C Language' 카테고리의 다른 글
Malloc(동적 메모리 할당) vs Array(배열) (0) | 2011.06.01 |
---|---|
전처리기 (0) | 2011.04.19 |
execl(), execv() - 프로세스 생성 (3) | 2011.04.05 |
fork() - 프로세스 생성 (1) | 2011.03.28 |
SDL Function (0) | 2011.03.24 |
RECENT COMMENT