ÇöÀç°­Á : UNIX BSD ¼ÒÄÏ ½Ã½ºÅÛ ÄÝ ÀÌÀü: 2.1 ¼ÒÄÏÀÇ ÀÌÇØ ´ÙÀ½: 2.3 Ŭ¶óÀ̾ðÆ®ÇÁ·Î±×·¥ ÀÛ¼º ÀýÂ÷


2.2 ÀÎÅÍ³Ý ÁÖ¼Òº¯È¯

¢º ¼ÒÄÏ ÇÁ·Î±×·¡¹Ö ÀýÂ÷¸¦ ¼³¸íÇϱ⿡ ¾Õ¼­ º» Àý¿¡¼­´Â ¹ÙÀÌÆ® ¼ø¼­ º¯È¯°ú ÀÎÅÍ³Ý ÁÖ¼Òº¯È¯À» ¼Ò°³ÇÏ°Ú´Ù.

¢º ÀÎÅͳݿ¡´Â ¿©·¯ °¡Áö Á¾·ùÀÇ ÄÄÇ»Å͵éÀÌ Á¢¼ÓµÇ¾î ÀÖ°í °¢ ÄÄÇ»Å͸¶´Ù µ¥ÀÌÅÍ(¼ýÀÚ, ¹®ÀÚ µî)¸¦ ÄÄÇ»ÅÍ ³»ºÎ¿¡¼­ Ç¥ÇöÇÏ´Â ¹æ½ÄÀÌ ´Ù¸£´Ù. µû¶ó¼­ µ¥ÀÌÅ͸¦ ´Ù¸¥ ±âÁ¾ÀÇ ÄÄÇ»ÅÍ·Î ±×´ë·Î Àü¼ÛÇÏ¸é ¹®Á¦°¡ ¹ß»ýÇÒ ¼ö ÀÖ´Ù.

¢º ÀÌ·¯ÇÑ Åë½Å»óÀÇ ¹®Á¦¸¦ ÇÇÇϱâ À§ÇÏ¿© µ¥ÀÌÅ͸¦ Àü¼ÛÇϱâ Àü¿¡ ±×¸®°í µ¥ÀÌÅ͸¦ ¼ö½ÅÇÑ ÈÄ¿¡ ¹ÙÀÌÆ® ¼ø¼­¸¦ ¸ÂÃß´Â ÀýÂ÷°¡ ÇÊ¿äÇÏ´Ù.

¢º ÇÑÆí ÀÎÅÍ³Ý ÁÖ¼Ò¸¦ Ç¥ÇöÇÏ´Â ¹æ½Ä¿¡´Â µµ¸ÞÀÎ ³×ÀÓ, 32ºñÆ®ÀÇ IP ÁÖ¼Ò, ±×¸®°í ½ÊÁø¼ö(dotted decimal) Ç¥½Ã¹ý µî ¼¼ °¡Áö ¹æ½ÄÀÌ ÀÖÀ¸¸ç À̵é ÁÖ¼Ò Ç¥Çö¹ýÀ» ÀÚÀ¯·Ó°Ô º¯È¯ÇÒ ¼ö ÀÖ´Â ÇÔ¼ö°¡ ÇÊ¿äÇÏ´Ù.

2.2.1 ¹ÙÀÌÆ® ¼ø¼­

¢º ¹ÙÀÌÆ® ¼ø¼­(byte ordering)¿¡´Â È£½ºÆ® ¹ÙÀÌÆ® ¼ø¼­¿Í ³×Æ®¿÷ ¹ÙÀÌÆ® ¼ø¼­ µÎ °¡Áö°¡ ÀÖ´Ù.

¢º È£½ºÆ® ¹ÙÀÌÆ® ¼ø¼­´Â ÄÄÇ»ÅÍ°¡ ³»ºÎ ¸Þ¸ð¸®¿¡ ¼ýÀÚ¸¦ ÀúÀåÇÏ´Â ¼ø¼­¸¦ ¸»Çϴµ¥, ÀÌ°ÍÀº ÄÄÇ»ÅÍÀÇ CPUÀÇ Á¾·ù¿¡ µû¶ó ´Ù¸£´Ù.

¢º PC¿¡¼­ ³Î¸® »ç¿ëµÇ´Â 80x86°è¿­ÀÇ CPU°¡ »ç¿ëÇϴ ȣ½ºÆ® ¹ÙÀÌÆ® ¼ø¼­´Â ¿¹¸¦µé¾î µÎ ¹ÙÀÌÆ®·Î ±¸¼ºµÈ ½ÊÁø¼ö 50146ÀÇ °æ¿ì hexa·Î 0xC3E2À̸ç ÀÌ°ÍÀº 80x86 °è¿­ÀÇ CPU¿¡¼­´Â E2, C3ÀÇ ¼ø¼­·Î(Áï, ÇÏÀ§ ¹ÙÀÌÆ®ºÎÅÍ) ¸Þ¸ð¸®¿¡ ÀúÀåµÇ°í MC68000 °è¿­ÀÇ CPU¿¡¼­´Â C3, E2ÀÇ ¼ø¼­·Î ¸Þ¸ð¸®¿¡ ÀúÀåµÈ´Ù.

±×¸² 2-5 0xC3E2(½ÊÁø¼ö 50146)ÀÇ È£½ºÆ® ¹ÙÀÌÆ® ¼ø¼­ ºñ±³

¢º ÇÑÆí ³×Æ®¿÷ ¹ÙÀÌÆ® ¼ø¼­´Â ³×Æ®¿÷¿¡¼­ ¹ÙÀÌÆ® ´ÜÀ§·Î µ¥ÀÌÅÍ°¡ Àü´ÞµÇ´Â ¼ø¼­¸¦ ¸»Çϴµ¥ 2¹ÙÀÌÆ®ÀÇ ¼ö 0xC3E2ÀÇ °æ¿ì C3, E2ÀÇ ¼ø¼­·Î Áï, »óÀ§ ¹ÙÀÌÆ®ºÎÅÍ Àü¼ÛµÈ´Ù.

¢º Áï, 80x86°è¿­ÀÇ CPU°¡ »ç¿ëÇϴ ȣ½ºÆ® ¹ÙÀÌÆ® ¼ø¼­´Â ³×Æ®¿÷ ¹ÙÀÌÆ® ¼ø¼­¿Í ´Ù¸£´Ù. µû¶ó¼­ 80x86°è¿­ÀÇ ÄÄÇ»ÅÍ¿¡¼­ ³×Æ®¿÷À» ÅëÇÏ¿© Àü¼ÛÇÑ µ¥ÀÌÅ͸¦ 68000°è¿­ÀÇ ÄÄÇ»ÅÍ°¡ ¼ö½ÅÇÏ¸é ¹ÙÀÌÆ® ¼ø¼­°¡ ¹Ù²î°Ô µÈ´Ù.

¢º ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇÏ¿© ÄÄÇ»ÅÍ ³»ºÎ¿¡¼­ ¸¸µé¾îÁø È£½ºÆ® ¹ÙÀÌÆ® ¼ø¼­ÀÇ µ¥ÀÌÅ͸¦ ³×Æ®¿÷À¸·Î Àü¼ÛÇϱâ Àü¿¡ htons() ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ¸ðµÎ ³×Æ®¿÷ ¹ÙÀÌÆ® ¼ø¼­·Î ¹Ù²Ù¾î¾ß ÇÑ´Ù.

¢º ¹Ý´ë·Î ³×Æ®¿÷¿¡¼­ ¼ö½ÅÇÑ µ¥ÀÌÅÍ´Â ntohs() ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© Àڽſ¡°Ô ¸Â´Â È£½ºÆ® ¹ÙÀÌÆ® ¼ø¼­·Î Ç×»ó ¹Ù²Ù¾î¾ß ÇÑ´Ù.

¢º Áï, ³×Æ®¿÷ ¹ÙÀÌÆ® ¼ø¼­¸¦ ÁöÄÑ µ¥ÀÌÅ͸¦ Àü¼ÛÇÔÀ¸·Î½á ¼ö½ÅÇÑ µ¥ÀÌÅÍ°¡ ¾î¶² Á¾·ùÀÇ ÄÄÇ»ÅÍ¿¡¼­ ¸¸µé¾îÁø °ÍÀÎÁö ¾Ë ÇÊ¿ä°¡ ¾øµµ·Ï ÇÏ´Â °ÍÀÌ´Ù.

¢º À§¿¡¼­ MC68000 °è¿­ÀÇ CPU¿¡¼­´Â È£½ºÆ® ¹ÙÀÌÆ® ¼ø¼­¿Í ³×Æ®¿÷ ¹ÙÀÌÆ® ¼ø¼­°¡ °°Àº °ÍÀ» ¾Ë ¼ö Àִµ¥ ÀÌ·¯ÇÑ È£½ºÆ®¿¡¼­ÀÇ htons()¿Í ntohs() ÇÔ¼ö´Â ¾Æ¹« Àϵµ ÇÏÁö ¾Ê°Ô µÈ´Ù.

¢º ¹ÙÀÌÆ® ¼ø¼­¸¦ ¹Ù²Ù´Â ÇÔ¼ö¿¡´Â º¯È¯ÇÒ ¹ÙÀÌÆ® ±æÀÌ¿¡ µû¶ó ´ÙÀ½°ú °°ÀÌ µÎ °¡Áö Á¾·ù°¡ ÀÖ´Ù.

¡¡

2.2.2 ¹ÙÀÌÆ® ¼ø¼­ ¿¹Á¦ ÇÁ·Î±×·¥

¢º ¿©±â¼­´Â ÇöÀç »ç¿ëÁßÀÎ ÄÄÇ»ÅÍÀÇ È£½ºÆ® ¹ÙÀÌÆ® ¼ø¼­°¡ ³×Æ®¿÷ ¹ÙÀÌÆ® ¼ø¼­¿Í °°ÀºÁö¸¦ ¾Ë¾Æº¸´Â Å×½ºÆ® ÇÁ·Î±×·¥ byte_order.c¸¦ ¼Ò°³ÇÑ´Ù.

¢º byte_order.c¿¡¼­´Â ¸ÕÀú udp¸¦ »ç¿ëÇÏ´Â echo ¼­ºñ½ºÀÇ Æ÷Æ®¹øÈ£¸¦ ¾Ë¾Æ³»±â À§ÇÏ¿© getservbyname() ½Ã½ºÅÛ ÄÝÀ» ´ÙÀ½°ú °°ÀÌ È£ÃâÇÑ´Ù.

pmyservent = getservbyname("echo", "udp");

¢º getservbyname()Àº well-known Æ÷Æ®¸¦ »ç¿ëÇÏ´Â TCP/IP ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ Æ÷Æ®¹øÈ£¸¦ ¾Ë¾Æ³»´Â ÇÔ¼öÀÌ´Ù.

¢º ¼­ºñ½º À̸§°ú ÇÁ·ÎÅäÄÝÀ» ÀÎÀÚ·Î ÇÏ¿© È£ÃâÇÏ¸é ¼­ºñ½º °ü·Ã °¢Á¾ Á¤º¸¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â servent¶ó´Â ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÑ´Ù.

¡¡

struct servent {

char *s_name; /* ¼­ºñ½º À̸§ */

char **s_aliases; /* º°¸í ¸ñ·Ï */

int s_port; /* Æ÷Æ®¹øÈ£ */

char *s_proto; /* »ç¿ëÇÏ´Â ÇÁ·ÎÅäÄÝ */

};

¢º servent ±¸Á¶Ã¼´Â ³×Æ®¿÷À¸·ÎºÎÅÍ ¾òÀº Á¤º¸À̹ǷΠ±× ³»¿ëÀÌ ³×Æ®¿÷ ¹ÙÀÌÆ® ¼ø¼­·Î µÇ¾î ÀÖ°í À̸¦ È­¸é¿¡ Ãâ·ÂÇØ º¸·Á¸é È£½ºÆ® ¹ÙÀÌÆ® ¼ø¼­·Î ¹Ù²Ù¾î¾ß ÇÑ´Ù.

¢º ¿¹Á¦ byte_order.c¿¡¼­´Â servent¿¡ µé¾î ÀÖ´Â Æ÷Æ®¹øÈ£(s_port)¸¦ (Á¤»óÀûÀ¸·Î) È£½ºÆ® ¹ÙÀÌÆ® ¼ø¼­·Î ¹Ù²Ù¾î Ãâ·ÂÇØ º¸°í ¶ÇÇÑ ¹ÙÀÌÆ® ¼ø¼­ º¯È¯ ¾øÀÌ ±×´ë·Î Ãâ·ÂÇÏ¿© À̵éÀ» ºñ±³ÇØ º»´Ù.

/*-----------------------------------------------------------------------------------------------

ÆÄÀϸí : byte_order.c

±â ´É : È£½ºÆ® ¹ÙÀÌÆ® ¼ø¼­ Å×½ºÆ® ÇÁ·Î±×·¥

ÄÄÆÄÀÏ : cc -o byte_order byte_order.c -lsocket

½ÇÇ࿹ : byte_order

---------------------------------------------------------------------------------------------- */

#include <sys/types.h>

#include <sys/socket.h>

#include <netdb.h>

void main(void) {

struct servent *pmyservent;

pmyservent = getservbyname( "echo", "udp" );

if( pmyservent == NULL ) {

printf( "¼­ºñ½º Á¤º¸¸¦ ¾òÀ» ¼ö ¾øÀ½. \n\n" );

exit( 1 );

}

printf( "Port number of 'echo', 'udp' with ntohs() : %d \n",

pmyservent->s_port );

printf( "Port number of 'echo', 'udp' without ntohs() : %d \n",

ntohs(pmyservent->s_port));

exit( 0 );

}

¡¡

¢º MC68000 °è¿­ÀÇ CPU¸¦ »ç¿ëÇÏ´Â SUN ÄÄÇ»ÅÍ¿¡¼­´Â byte_order.cÀÇ ½ÇÇà°á°ú°¡ ¾Æ·¡¿Í °°À¸¸ç È£½ºÆ® ¹ÙÀÌÆ® ¼ø¼­°¡ ³×Æ®¿÷ ¹ÙÀÌÆ® ¼ø¼­¿Í °°´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù.

¡¡

# byte_order

Port number of 'echo', 'udp' with ntohs() : 7

Port number of 'echo', 'udp' without ntohs() : 7

#

¡¡

¢º ÇÑÆí, ÀÎÅÚ 80x86 °è¿­ÀÇ CPU¸¦ »ç¿ëÇÏ´Â IBM-PC¿¡¼­ byte_order.c¸¦ ½ÇÇàÇÏ¸é °á°ú°¡ ¾Æ·¡¿Í °°À¸¸ç µû¶ó¼­ È£½ºÆ® ¹ÙÀÌÆ® ¼ø¼­°¡ ³×Æ®¿÷ ¹ÙÀÌÆ® ¼ø¼­¿Í ´Ù¸£´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù.

¢º ¾Æ·¡¿¡¼­ Á¤¼ö 1792´Â 2¹ÙÀÌÆ® ¼ýÀÚ 0x0007ÀÇ ¹ÙÀÌÆ® ¼ø¼­°¡ ¼­·Î ¹Ù²ï 0x0700ÀÇ ½ÊÁø¼öÀÌ´Ù(Æ÷Æ®¹øÈ£´Â 2¹ÙÀÌÆ®·Î µÇ¾î ÀÖÀ½).

# byte_order

Port number of 'echo', 'udp' with ntohs() : 7

Port number of 'echo', 'udp' without ntohs() : 1792

#

¡¡

2.2.3 IP ÁÖ¼Òº¯È¯

¢º 32ºñÆ®ÀÇ IP ÁÖ¼Ò¸¦ ÆíÀÇ¿¡ µû¶ó cc.kangwon.ac.kr°ú °°Àº µµ¸ÞÀÎ ³×ÀÓ, ±×¸®°í192.203.144.11°ú °°Àº dotted decimal Ç¥½Ã¹ý µîÀ¸·Î ¹Ù²Ù¾î ³Î¸® »ç¿ëÇÏ°í ÀÖ´Ù.

¢º ¼ÒÄÏ ÇÁ·Î±×·¥¿¡¼­´Â À̵é ÁÖ¼Ò Ç¥Çö¹ýÀ» ÀÚÀ¯·Ó°Ô º¯È¯ÇÒ ¼ö ÀÖ´Â ÇÔ¼ö°¡ ÇÊ¿äÇÏ¸ç ±×¸² 2-6¿¡ ÀÌµé ¼¼ °¡Áö ÀÎÅÍ³Ý ÁÖ¼Ò Ç¥Çö ¹æ¹ý°ú À̵éÀ» »óÈ£ º¯È¯ÇÏ´Â µ¥ »ç¿ëµÇ´Â ³× °¡Áö ÁÖ¼Òº¯È¯ ÇÔ¼ö¸¦ ³ªÅ¸³Â´Ù.

¢º ÇÑÆí IP ÆÐŶÀ» ³×Æ®¿÷À¸·Î ½ÇÁ¦·Î Àü¼ÛÇÒ ¶§¿¡´Â 32ºñÆ®ÀÇ (binary) IP ÁÖ¼Ò°¡ ÇÊ¿äÇÏ´Ù.

¢º ¿¹¸¦µé¾î ±×¸² 2-6¿¡¼­ dotted decimal·Î Ç¥ÇöµÈ 192. 203.144.11À» 32ºñÆ®ÀÇ IP ÁÖ¼Ò·Î º¯È¯ÇÏ·Á¸é inet_addr() ½Ã½ºÅÛ ÄÝÀ» »ç¿ëÇÏ°í IP ÁÖ¼Ò¸¦ ´Ù½Ã dotted decimal·Î º¯È¯ÇÏ·Á¸é inet_ntoa()¸¦ »ç¿ëÇÑ´Ù.

±×¸² 2-6 IP ÁÖ¼Ò Ç¥ÇöÀÇ ¼¼°¡Áö ¹æ¹ý ¹× À̵éÀÇ »óÈ£ º¯È¯ ÇÔ¼ö

¢º ´ÙÀ½Àº À̸¦ ¼öÇàÇÏ´Â ÄÚµåÀε¥ ÀÌÀÇ ½ÇÇà °á°ú·Î 192. 203.144.11ÀÇ IP ÁÖ¼ÒÀÎ 4¹ÙÀÌÆ®ÀÇ hexa c0cb900b¿Í, À̸¦ ´Ù½Ã dotted decimal ÁÖ¼Ò·Î ¹Ù²Û 192.203.144.11ÀÌ È­¸é¿¡ Ãâ·ÂµÈ´Ù.

struct sockaddr_in server_addr;

server_addr.sin_addr.s_addr = inet_addr ("192.203.144.11");

printf("%x\n", server_addr.sin_addr.s_addr); /* hexa 4¹ÙÀÌÆ® Ãâ·Â */

printf("%s\n", inet_ntoa(server_addr.sin_addr));/* dotted decimal Ãâ·Â */

¢º ÇÑÆí µµ¸ÞÀÎ ³×ÀÓÀ¸·ÎºÎÅÍ IP ÁÖ¼Ò¸¦ ¾Ë±â À§Çؼ­´Â get- hostbyname() ½Ã½ºÅÛ ÄÝÀ» »ç¿ëÇϴµ¥ ¾Æ·¡´Â gethostby- name()ÀÇ »ç¿ë ¿¹ÀÌ´Ù.

struct hostent *gethostbyname(char *hname);

¢º À§¿¡¼­ gethostbyname()Àº µµ¸ÞÀÎ ³×ÀÓ hnameÀ» ÀÔ·ÂÀ¸·Î ¹Þ°í(¿¹¸¦µé¸é cc.kangwon.ac.kr) ±× À̸§¿¡ ÇØ´çÇϴ ȣ½ºÆ®ÀÇ °¢Á¾ Á¤º¸¸¦ °¡Áö°í ÀÖ´Â hostent¶ó´Â ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÑ´Ù.

¢º ±¸Á¶Ã¼ hostentÀÇ Á¤ÀÇ´Â ´ÙÀ½°ú °°´Ù.

struct hostent {

char * h_name; /* È£½ºÆ® À̸§ */

char ** h_aliases; /* È£½ºÆ® º°¸íµé */

int h_addrtype; /* È£½ºÆ® ÁÖ¼ÒÀÇ Á¾·ù */

int h_length; /* ÁÖ¼ÒÀÇ Å©±â(¹ÙÀÌÆ® ´ÜÀ§) */

char **h_addr_list; /* ÁÖ¼Ò ¸®½ºÆ® */

#define h_addr h_addr_list[0]

};

¢º ´ÙÀ½¿¡´Â »ç¿ëÀÚ°¡ ÁöÁ¤ÇÑ È£½ºÆ®ÀÇ hostent ±¸Á¶Ã¼ Á¤º¸¸¦ gethostbyname()À» ÀÌ¿ëÇÏ¿© ±¸ÇÑ ÈÄ, hostent ±¸Á¶Ã¼ÀÇ ³»¿ëÀ» ¸ðµÎ Ãâ·ÂÇØ º¸´Â ¿¹Á¦ ÇÁ·Î±×·¥ host_ent.c¸¦ ¼Ò°³ÇÑ´Ù.

¢º host_ent.cÀÇ ½ÇÇà ¿¹´Â ´ÙÀ½°ú °°´Ù.

# host_ent telecom.kangwon.ac.kr

official host name : telecom.kangwon.ac.kr

host address type : 2

length of host address : 4

address for host : 203.252.65.9

#

¢º host_ent.c¿¡¼­´Â ¸ÕÀú ¸ñÀûÁö È£½ºÆ®ÀÇ µµ¸ÞÀÎ ³×ÀÓÀ» ÇÁ·Î±×·¥ ¸í·É ÀÎÀÚ·Î ¹Þ°í(À§¿¡¼­´Â telecom.kangwon. ac.kr), gethostbyname()À» È£ÃâÇÏ¿© ¸ñÀûÁö È£½ºÆ®ÀÇ hostent ±¸Á¶Ã¼¸¦ ±¸ÇÑ´Ù.

¢º ´ÙÀ½¿¡´Â hostent³»¿¡ Àִ ȣ½ºÆ® À̸§, º°¸í(ÀÖÀ¸¸é), ÁÖ¼Ò Ã¼°è, dotted decimal ÀÎÅÍ³Ý ÁÖ¼Ò¸¦ È­¸é¿¡ Ãâ·ÂÇÑ´Ù.

¢º ¿©±â¼­ ÁÖ¼Ò Ã¼°è°¡ ÀÎÅͳÝÀÏ ¶§´Â AF_INET°¡ µÇ´Âµ¥ AF_INETÀÇ °ªÀº Á¤¼ö 2ÀÌ´Ù.

¢º host_ent.c Àüü¸®½ºÆ® ¹Þ±â

¡¡

2.2.4 ÁÖ¼Òº¯È¯ ¿¹Á¦ ÇÁ·Î±×·¥

(1) ÇÁ·Î±×·¥ ¼³¸í

¢º ¿©±â¼­´Â µµ¸ÞÀÎ ³×ÀÓ, dotted decimal ÁÖ¼Ò, ÀÌÁø¼ö IP ÁÖ¼Ò¸¦ »óÈ£ º¯È¯ÇÏ´Â °ÍÀ» È®ÀÎÇÏ´Â ¿¹Á¦ addr_conv.c¸¦ ¼Ò°³ÇÑ´Ù.

¢º ±×¸² 2-6¿¡¼­ gethostbyname()Àº µµ¸ÞÀÎ ³×ÀÓÀ¸·ÎºÎÅÍ IP ÁÖ¼Ò¸¦ ¾ò´Â ÇÔ¼öÀÌ°í gethostbyaddr()Àº ¹Ý´ë·Î IP ÁּҷκÎÅÍ µµ¸ÞÀÎ ³×ÀÓÀ» ¾ò´Â ÇÔ¼öÀÌ´Ù.

¢º ÀÌµé µÎ ÇÔ¼ö´Â ¸ðµÎ È£½ºÆ®ÀÇ °¢Á¾ Á¤º¸¸¦ ÀúÀåÇÑ ±¸Á¶Ã¼ hostentÀÇ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÑ´Ù.

¢º addr_conv.c¿¡¼­´Â Å°º¸µå¿¡¼­ ¸ñÀûÁö È£½ºÆ®ÀÇ µµ¸ÞÀÎ ³×ÀÓ°ú dotted decimal ÁÖ¼Ò µÎ °¡Áö ÁÖ¼Ò¸¦ ÀÔ·Â ¹Þ°í ´ÙÀ½ÀÇ ³× °¡Áö ±â´ÉÀ» ¼öÇàÇÑ´Ù.

1) ÀÔ·ÂµÈ ¸ñÀûÁö µµ¸ÞÀÎ ³×ÀÓÀ¸·ÎºÎÅÍ IP ÁÖ¼Ò¸¦ ã¾Æ È­¸é¿¡ Ãâ·Â (gethostbyname() ÀÌ¿ë)

2) À§ 1)¿¡¼­ ±¸ÇÑ IP ÁÖ¼Ò¸¦ dotted decimal ÁÖ¼Ò·Î º¯°æÇÏ¿© È­¸é¿¡ Ãâ·Â (inet_ntoa() ÀÌ¿ë)

3) ÀÔ·ÂµÈ dotted decimal ÁּҷκÎÅÍ IP ÁÖ¼Ò¸¦ ã¾Æ È­¸é¿¡ Ãâ·Â (gethostbyaddr() ÀÌ¿ë)

4) À§ 3)¿¡¼­ ±¸ÇÑ hostent ±¸Á¶Ã¼³»¿¡ ÀÖ´Â ¸ñÀûÁö µµ¸ÞÀÎ ³×ÀÓÀ» È­¸é¿¡ Ãâ·Â

¢º ÇÁ·Î±×·¥ addr_conv.cÀÇ ½ÇÇà ¿¹´Â ´ÙÀ½°ú °°´Ù.

# addr_conv vcn.kangwon.ac.kr 203.252.65.3

vcn.kangwon.ac.kr's binary IP address (hexa) : cbfc4103

vcn.kangwon.ac.kr's dotted decimal IP address : 203.252.65.3

203.252.65.3's binary ip address (hexa) : cbfc4103

203.252.65.3's hostname : vcn.kangwon.ac.kr

#

¡¡

¢º addr_conv.c ¹Þ±â

2.2.5 ±âŸ ÁÖ¼Ò °ü·Ã ÇÔ¼ö

¢º ¾Õ¿¡¼­ ¼Ò°³ÇÑ ÁÖ¼Òº¯È¯ ÇÔ¼ö ÀÌ¿Ü¿¡µµ BSD ¼ÒÄÏÀº getXbyY() ÇüÅÂÀÇ È£½ºÆ® Á¤º¸ °Ë»ö ÇÔ¼öµéÀ» Á¦°øÇÏ°í ÀÖ´Ù.

¢º À̵éÀÇ ÀÚ¼¼ÇÑ »ç¿ëÀº ºÎ·Ï A¸¦ ÂüÁ¶Çϱ⠹ٶó°í ¿©±â¼­´Â ´ÙÀ½ÀÇ µÎ °¡Áö ÇÔ¼ö¸¸ ¼Ò°³ÇÑ´Ù.

(1) gethostname()

¢ºÇöÀç »ç¿ëÁßÀÎ ÄÄÇ»ÅÍÀÇ µµ¸ÞÀÎ ³×ÀÓ, ¿¹¸¦µé¾î 'cc.kangwon. ac.kr'°ú °°Àº À̸§À» ¾Ë±â À§ÇÏ¿© gethostname()À» »ç¿ëÇÑ´Ù.

¢º ¾Æ·¡ÀÇ ¿¹¿¡¼­ ¹®ÀÚ¿­ º¯¼ö hname¿¡ ÇöÀç »ç¿ëÁßÀΠȣ½ºÆ®ÀÇ µµ¸ÞÀÎ ³×ÀÓÀÌ ÀúÀåµÈ´Ù.

#define HOST_NAME_LEN 50 /* È£½ºÆ® À̸§ÀÇ ÃÖ´ë ±æÀÌ */

char hname[HOST_NAME_LEN + 1];/* È£½ºÆ® À̸§À» ÀúÀåÇÒ ¹öÆÛ */

gethostname(hname, HOST_NAME_LEN);

(2) sethostname()

¢º »ç¿ëÁßÀΠȣ½ºÆ®ÀÇ µµ¸ÞÀÎ ³×ÀÓÀ» »õ·Î¿î °ªÀ¸·Î ÁöÁ¤ÇÒ ¶§ »ç¿ëÇϴµ¥ ¾Æ·¡ÀÇ ¿¹¿¡¼­´Â È£½ºÆ®ÀÇ À̸§À» new. kangwon.ac.kr·Î ¹Ù²Û´Ù.

sethostname("new.kangwon.ac.kr", strlen("new.kangwon.ac.kr"));

ÇöÀç°­Á : UNIX BSD ¼ÒÄÏ ½Ã½ºÅÛ ÄÝ ÀÌÀü: 2.1 ¼ÒÄÏÀÇ ÀÌÇØ ´ÙÀ½: 2.3 Ŭ¶óÀ̾ðÆ®ÇÁ·Î±×·¥ ÀÛ¼º ÀýÂ÷