ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : docbook>socket_layer
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
HTMLº¯È¯ ¹®¼
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
<article lang="ko">
<!-- -->
<!-- ¹®¼ Á¤º¸ -->
<!-- -->
<articleinfo>
<title>Socket</title>
<author>
<surname>À± »ó¹è</surname>
<affiliation>
<address>
<email>yundream@joinc.co.kr</email>
</address>
</affiliation>
</author>
<revhistory>
<revision>
<revnumber>0.9</revnumber>
<date>2004³â 8¿ù 19ÀÏ</date>
<revremark>ÀÔÃâ·ÂÇÔ¼ö/µµ¸ÞÀÎ À̸§º¯È¯/¹ÙÀÌÆ®¿À´õ °ü·Ã ÇÔ¼ö Ãß°¡</revremark>
</revision>
</revhistory>
</articleinfo>
<!-- -->
<!-- ¼½¼Ç ½ÃÀÛ -->
<!-- -->
<section>
<title>Socket ¿¡ ´ëÇÑ ±âº»Áö½Ä</title>
<section>
<title>Socket Layer</title>
<para>
Socket Àº À¯´Ð½ºÀÇ ÆÄÀÏ ±â¼úÀÚ¸¦ ÅëÇØ¼ ´Ù¸¥ ÇÁ·Î±×·¥°£ÀÇ
Á¤º¸±³È¯À» °¡´ÉÇϵµ·Ï ÇØÁÖ´Â ¹æ¹ýÀ¸·Î, °°Àº ½Ã½ºÅÛ¿¡ ÀÖ´Â
ÇÁ·Î±×·¥µé°£ÀÇ Á¤º¸±³È¯À» À§ÇѸñÀû, ȤÀº ´Ù¸¥ ½Ã½ºÅÛ(³×Æ®¿÷
»óÀ¸·Î ¸Ö¸®¶³¾îÁ®ÀÖ´Â) µé°£ÀÇ Á¤º¸±³È¯À» À§ÇÑ ¸ñÀûÀ¸·Î
»ç¿ëµÈ´Ù.
</para>
<para>
±×·±µ¥ ¿Ö Layer ¶ó°í ºÎ¸£´Â°¡ ±× ÀÌÀ¯´Â TCP/IP 4°èÃþÀÇ
ÀÀ¿ë°èÃþ(applicaton layer)°ú Àü¼Û°èÃþ(transmission layer) Áß°£¿¡
Á¸ÀçÇϱ⠶§¹®ÀÌ´Ù. ¾Æ·¡ÀÇ ±×¸²À» º¸¶ó
<figure>
<title>¼ÒÄÏ °èÃþ</title>
<graphic fileref="http://www.joinc.co.kr/albums/album01/acf.gif">
</figure>
À§ÀÇ ±×¸²Àº <ulink url="http://www.joinc.co.kr/modules/moniwiki/wiki.php/article_TCPIP °³·Ð">TCP/IP °³¿ä</ulink>¿¡¼
ÀÌ¹Ì º»ÀûÀÌ ÀÖ´Â ±×¸²ÀÏ °ÍÀÌ´Ù. ±×¶§ÀÇ ±×¸²°ú ´Þ¶óÁø Á¡ÀÌ ÀÖ´Ù¸é,
ÀÀ¿ë°èÃþ°ú Àü¼Û°èÃþ¿¡ <emphasis>Socket Layer</emphasis>
°¡ Á¸ÀçÇÑ´Ù´Â °ÍÀÌ´Ù. ÀÌ Socket Layer °¡ ÀÀ¿ë°èÃþ°ú
Àü¼Û°èÃþ »çÀÌ¿¡ Á¸ÀçÇÏ°Ô µÊÀ¸·Î ¿ì¸® ÇÁ·Î±×·¡¸ÓµéÀº º¹ÀâÇϰÔ
TCP ¸¦ Á÷Á¢ Á¦¾îÇÒ ÇÊ¿ä¾øÀÌ, Socket Layer ¿¡¼ Á¦°øÇÏ´Â ´Ù¾çÇÑ
ÇÔ¼ö(Socket API)¸¦ ÀÌ¿ëÇØ¼ °£´ÜÇÏ°Ô ÀÎÅÍ³Ý ³×Æ®¿÷ ÇÁ·Î±×·¡¹Ö
ÀÛ¾÷À» ÇÏ°Ô µÇ´Â°ÍÀÌ´Ù.
</para>
<para>
Socket Layer Àº ÀÀ¿ë°èÃþ¿¡¼ ¹ÞÀº ¸Þ½ÃÁö¸¦ ÇϺΠSocket API ¸¦
ÀÌ¿ëÇØ¼ Àü¼Û°èÃþÀ¸·Î º¸³½´Ù. Àü¼Û°èÃþ¿¡´Â 2°¡Áö ´ëÇ¥ÀûÀÎ ÇÁ·ÎÅäÄÝ
ÀÌ Àִµ¥ ¹Ù·Î TCP ¿Í UDP ÀÌ´Ù. ±×·³À¸·Î ¿ì¸® ÇÁ·Î±×·¡¸ÓµéÀº
TCP ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÒ°ÍÀÎÁö UDP ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÒ°ÍÀÎÁö¸¸
°áÁ¤ÇØÁÖ¸éµÈ´Ù.
</para>
</section>
<section>
<title>¿Ö Layer ±¸Á¶¸¦ °¡Áö´Â°¡</title>
<para>
ÀÏ»ó »ýȰ¿¡¼ ¼ÒÄÏ·¹À̾î¿Í ºñ½ÁÇѰÔ, Àüȱâ¶ó°í
º¼¼ö ÀÖÀ»°ÍÀÌ´Ù.
¿ì¸®´Â »ó´ëÆí¿¡¼ Àüȸ¦ °É±â À§Çؼ »ó´ëÆíÀüÈÀÇ Áö¸®Àû
À§Ä¡°¡ ¾îµðÀÎÁö, ¾î¶² Àüȱ¹¿¡¼ °ü¸®ÇÏ´ÂÁö, ¾ð¾î¸¦ ½ÅÈ£·Î
º¯È¯ ½Ã۱â À§Çؼ ¾î¶°ÇÑ ÀÛ¾÷À» ÇØ¾ßÇÏ´ÂÁö, ¾î¶»°Ô
º¸³»¾ß ÇÏ´ÂÁö ÀüÇô ¾ËÇʿ䰡
¾ø´Ù. ±×³É ¼öȱ⠵é°í ÀüÈ ¹øÈ£¸¸ ´©¸£¸é ±×°É·Î ³¡ÀÌ´Ù.
Áï Àüȱ⠶ó´Â°Ô ÀÖÀ½À¸·Î ±× ³»ºÎ¿¡¼ ÀϾ´Â ¿©·¯°¡Áö º¹ÀâÇÑ
Åë½Å ÇÁ·Î¼¼½º¸¦ ¸ð¸£°íµµ »ó´ëÆí°ú ÀüÈÅëȸ¦ ÇÒ¼ö ÀÖ°Ô µÈ´Ù.
</para>
<para>
Socket Layer ÀÌ Á¸ÀçÇÔÀ¸·Î½á, ¿ì¸®´Â TCP/UDP Çì´õ¸¦ ¾î¶»°Ô
¸¸µé¾î¾ß ÇÏ´ÂÁö, ±¸Á¶°¡ ¾î¶»°Ô µÇ´ÂÁö, ¾î¶»°Ô Ä¿³Î¿¡ Àü´ÞÇØ¾ß
ÇÏ´ÂÁö ½Å°æ¾µÇÊ¿ä ¾øÀÌ ³×Æ®¿÷ ÇÁ·Î±×·¥À» ¸¸µé¼ö ÀÖ°Ô µÈ´Ù.
</para>
</section>
<section>
<title>Socket</title>
<para>
"Socket ÀÌ¶ó´¢ ¿ì¸®´Â À§¿¡¼ Socket Layer¸¦ ÀÌ¹Ì ´Ù·ç¾ú´Âµ¥¿ä ?"
¶ó°í Àǹ®À» °¡Áú¼öµµ ÀÖÀ»°ÍÀÌ´Ù. Socket Layer °ú Socket ´Â
¾ö¿¬È÷ ´Ù¸£´Ù. Socket Layer ´Â °èÃþÀ» ³ªÅ¸³»´Â °ÍÀÌ´Ù.
Áï Socket ¸¦ ´Ù·ç±â À§ÇÑ °èÃþÀÌ´Ù. ÀÌ´Â TCP°¡ Àü¼Û°èÃþÀÌ ¾Æ´Ñ°Í°ú
¸¶Âù°¡ÁöÀÌ´Ù. ¿ì¸®´Â Socket Layer ¿¡¼ Á¦°øÇÏ´Â ´Ù¾çÇÑ API¸¦ ÅëÇØ¼
Socket ¸¦ Á¦¾îÇÏ°Ô µÈ´Ù.
</para>
<para>
±×·³ Socket À̶õ ¹«¾ùÀΰ¡. ¼ÒÄÏÀ̶õ À¯´Ð½º ÆÄÀÏ Áö½ÃÀÚ ¸¦ ÀÌ¿ëÇÏ¿©
´Ù¸¥ ÇÁ·Î±×·¥°ú Á¤º¸±³È¯À» ÇÏ´Â ¹æ¹ý(ȤÀº µµ±¸) ÀÌ´Ù.
ÀϹÝÀûÀ¸·Î À¯´Ð½º »ó¿¡¼ Á¤º¸±³È¯Àº ÆÄÀÏÁö½ÃÀÚ¸¦ ÅëÇѴٴ°É
¾Ë°í ÀÖÀ»°ÍÀÌ´Ù. ¸¶Âù°¡Áö·Î Socket ¸¦ ÀÌ¿ëÇÑ Áö¿ª ȤÀº ³×Æ®¿÷À¸·Î
¿¬°áµÈ ÇÁ·Î±×·¥ °£ÀÇ Á¤º¸±³È¯ ¿ª½Ã ÆÄÀÏÁö½ÃÀÚ¸¦ ÅëÇØ¼ ÀÌ·ç¾îÁø´Ù.
</para>
<para>
<ulink url="http://www.joinc.co.kr/modules/moniwiki/wiki.php/article_´ÙÁß¿¬°á¼¹ö_¸¸µÑ±â1">´ÙÁß¿¬°á¼¹ö ¸¸µé±â(1)</ulink> ÀÇ zipcode_multi.c ¸¦ ÀÌ¿ëÇØ¼ ¼ÒÄÏÀÌ
¾î¶»°Ô ÀÛµ¿ÇÏ´ÂÁö ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ. ¸ÕÀúÀÇ À§ÀÇ ÇÁ·Î±×·¥À» ÄÄÆÄÀÏ
½Ã۰í ÀÛµ¿À» ½ÃÄѺ¸ÀÚ. ÀÛµ¿À» ½ÃÄ×´Ù¸é ps ·Î zipcode_multi
ÇÁ·Î±×·¥ÀÇ pid ¸¦ È®ÀÎÇØº¸°í /proc/pid/fd µð·ºÅ丮·Î À̵¿Çؼ
¾î¶°ÇÑ ÆÄÀÏ Áö½ÃÀÚ¸¦ °¡Áö°í ÀÖ´ÂÁö È®ÀÎÇØº¸µµ·Ï ÇÏÀÚ.
<screen>
[yundream@localhost test]# ./zipcode_multi 4444
...
[yundream@localhost test]# ps -ax | grep zipcode
2473 ttyp1 S 0:00 ./zipcode_multi 4444
</screen>
pid°¡ 2473 À̹ǷΠÀÌ ÇÁ·Î±×·¥ÀÇ /proc/2473/fd ·Î À̵¿Çؼ lsÇØº¸¸é
ÇÁ·Î±×·¥¿¡¼ »ç¿ëÇϰíÀÖ´Â ÆÄÀÏÁö½ÃÀڵ鿡 ´ëÇØ¼ ¾Ë¼ö ÀÖ´Ù.
<screen>
[yundream@localhost test]# ls -al /proc/2473/fd
ÇÕ°è 0
dr-x------ 2 root root 0 5¿ù 28 16:07 .
dr-xr-xr-x 3 root root 0 5¿ù 28 16:07 ..
lrwx------ 1 root root 64 5¿ù 28 16:14 0 -> /dev/ttyp1
lrwx------ 1 root root 64 5¿ù 28 16:14 1 -> /dev/ttyp1
lrwx------ 1 root root 64 5¿ù 28 16:14 2 -> /dev/ttyp1
lr-x------ 1 root root 64 5¿ù 28 16:14 3 -> /home/mycvs/test/zipcode.txt
lrwx------ 1 root root 64 5¿ù 28 16:14 4 -> socket:[171434]
</screen>
0, 1, 2 ´Â °¢°¢ Ç¥ÁØÀÔ·Â, Ç¥ÁØÃâ·Â, Ç¥ÁØ¿¡·¯¸¦ °¡¸®Å°´Â ÆÄÀÏÁö½ÃÀÚ
¶ó´Â°ÍÀº ÀÌ¹Ì ¾Ë°í ÀÖÀ»°ÍÀÌ´Ù. 3 Àº ÇÁ·Î±×·¥ÀÌ ¿¬ ÆÄÀÏÀ» °¡¸®Å²´Ù.
¸¶Áö¸· 4°¡ ¹Ù·Î socket Åë½ÅÀ» À§ÇØ ¸¸µé¾îÁø ÆÄÀÏ Áö½ÃÀÚÀÌ´Ù.
´Ù¸¥ °ÍµéÀÌ Å͹̳ÎÀ̳ª ÆÄÀÏÀ» °¡¸®Å°´Â°Í°ú´Â ´Þ¸® socket ¸¦ °¡¸®
۰í ÀÖÀ½À» ¾Ë¼ö ÀÖ´Ù.
</para>
<para>
¿©±â¿¡ »õ·Î¿î Ŭ¶óÀÌ¾ðÆ®°¡ Á¢±ÙÀ»Çϸé (telnet À̳ª Àü¿ëŬ¶óÀ̾ðÆ®
¸¦ ÀÌ¿ëÇØ¼) ´ÙÀ½°ú °°Àº ÆÄÀÏ Áö½ÃÀÚ°¡ Çϳª Ãß°¡ µÉ°ÍÀÌ´Ù.
<screen>
lrwx------ 1 root root 64 5¿ù 28 16:14 5 -> socket:[171435]
</screen>
</para>
</section>
<section>
<title>socket API</title>
<para>
À̹ø¿¡´Â socket ·¹À̾¼ Á¦°øÇÏ´Â ¼ÒÄÏ °ü·Ã ÇÔ¼öµéÀ» ¼³¸íÇϵµ·Ï ÇϰڴÙ.
</para>
<section>
<title>¼ÒÄÏ »ý¼º ¹× ¿¬°á</title>
<section>
<title>socket(2) ÇÔ¼ö</title>
<para>
ÀÌ·¯ÇÑ ¼ÒÄÏ Àº socket(2) ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ ¸¸µé¾îÁø´Ù.
ÃÖÃÊ socket ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ ¼ÒÄÏÀ» »ý¼ºÇϸé Ä¿³ÎÀº Åë½ÅÀ» À§ÇÑ
Á¾Á¡(end point,Áï Åë½Å¿¬°á»óȲÀ» üũÇÏ´Â)À» »ý¼ºÇϰí,
¿©±â¿¡ ´ëÇÑ
ÆÄÀÏ Áö½ÃÀÚ¸¦ µÇµ¹·ÁÁØ´Ù. ÇÁ·Î±×·¥Àº socket ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼
»ý¼ºÇÑ ÆÄÀÏ Áö½ÃÀÚ¿¡ »õ·Î¿î ¿¬°áÀÌ
µé¾î¿À´Â Áö¸¦ È®ÀÎÇÏ°Ô µÈ´Ù.
</para>
<para>
À§¿¡ ÀÖ´Â TCP/IP 4°èÃþÀ» º¸¸é Socket Layer ¾Æ·¡¿¡´Â ÃÖ¼ÒÇÑ 2°³
ÀÌ»óÀÇ »ç¿ë°¡´ÉÇÑ µ¥ÀÌŸ ±×·¥ÀÇ Å¸ÀÔÀÌ ÀÖÀ½À» ¾Ë¼ö ÀÖ´Ù.
ÀÌ·¯ÇÑ µ¥ÀÌŸ ±×·¥ÀÇ Å¸ÀÔ¿¡´Â TCP, UDP, RAW µîÀÌ ÀÖ´Ù.
TCP ¼ÒÄÏ, UDP ¼ÒÄÏ, RAW ¼ÒÄÏÀ̶ó°í ºÎ¸£±âµµ ÇÑ´Ù.
¶ÇÇÑ ´Ù¾çÇÑ ¼ÒÄÏ ÁÖ¼ÒÆÐ¹Ð¸®(±º)¸¦ Á¦°øÇÑ´Ù.
<table>
<title>¼ÒÄÏÁÖ¼Ò ÆÐ¹Ð¸®</title>
<tgroup cols=2>
<tbody>
<row>
<entry>UNIX</entry>
<entry>À¯´Ð½º µµ¸ÞÀÎ ¼ÒÄÏ, IPC ¿ëÀ¸·Î ¸¹ÀÌ »ç¿ëÇÑ´Ù.</entry>
</row>
<row>
<entry>INET</entry>
<entry>TCP/IP ÇÁ·ÎÅäÄÝÀ» ÀÌ¿ëÇÑ ÀÎÅͳÝÁÖ¼Ò ÆÐ¹Ð¸®, º¸ÅëÀÇ ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö½Ã ÁÖ·Î »ç¿ë</entry>
</row>
<row>
<entry>IPX</entry>
<entry>³ëº§ÀÇ IPX ÇÁ·ÎÅäÄÝ, °ÔÀÓÀ» ÁÁ¾ÆÇÑ´Ù¸é ¸¹ÀÌ µé¾îºÃÀ½Á÷ÇÑ</entry>
</row>
<row>
<entry>AX25</entry>
<entry>¾Æ¸¶Ãß¾î ¶óµð¿À X.25</entry>
</row>
<row>
<entry>X25</entry>
<entry>X.25 ÇÁ·ÎÅäÄÝ</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<para>
±×·¯¹Ç·Î socket ÇÔ¼ö´Â À§ÀÇ ¼ÒÄÏ ÁÖ¼Ò ÆÐ¹Ð¸®¿Í ¼ÒÄÏ Å¸ÀÔ
ÁöÁ¤ÀÌ °¡´ÉÇØ¾ß ÇÑ´Ù.
<screen>
int socket(int domain, int type, int protocol);
</screen>
ù¹øÂ° ¾Æ±Ô¸ÕÆ®°¡ ¼ÒÄÏÁÖ¼Ò ÆÐ¹Ð¸® ÁöÁ¤À» À§Çؼ »ç¿ëµÇ¸ç,
µÎ¹øÂ° ¾Æ±Ô¸ÕÆ®°¡ ¼ÒÄÏ Å¸ÀÔÁöÁ¤À» À§Çؼ »ç¿ëµÈ´Ù.
¼ÒÄÏÁÖ¼Ò ÆÐ¹Ð¸®´Â ÁÖ·Î INET(AF_INET), UNIX(AF_UNIX) °¡
»ç¿ëµÇ¸ç, ¼ÒÄÏŸÀÔÀº TCP(SOCK_STREAM), UDP(SOCK_DGRAM),
RAW(SOCK_RAW) °¡ »ç¿ëµÈ´Ù.
</para>
<para>
Áï ÀÎÅÍ³Ý ÇÁ·ÎÅäÄÝÀ» ÀÌ¿ëÇÏ´Â TCP ¼ÒÄÏÀ» ¸¸µé±â ¿øÇÑ´Ù¸é
socket(AF_INET, SOCK_STREAM, 0) °ú °°ÀÌ »ç¿ëÇÏ¸é µÈ´Ù.
</para>
<para>
socket ÇÔ¼ö°¡ ¼º°øÀûÀ¸·Î ¼öÇàµÇ¸é, »ç¿ë°¡´ÉÇÑ ¼ÒÄÏÀ» °¡¸£Å°´Â ÆÄÀÏ Áö½ÃÀÚ¸¦
µÇµ¹·ÁÁÖ¸ç, ÀÌ ÆÄÀÏÁö½ÃÀÚ´Â endpoint(¿¬°á È®ÀÎ Åë·Î)
·Î½á »ç¿ëµÈ´Ù.
</para>
</section>
<section>
<title>bind(2) ÇÔ¼ö</title>
<para>
socket ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ ¸¸µé¾îÁø ¼ÒÄÏ¿¡ À̸§À» ºÎ¿©ÇÑ´Ù.
</para>
<para>
¶ó°í ¹ø¿ªµÈ man ÆäÀÌÁöȤÀº °ü·ÃµÈ ¹ø¿ª¼¿¡¼ ¼³¸íÀ» Çϰí
ÀÖÁö¸¸, ¼ÒÄÏ¿¡ Ư¼ºÀ» ºÎ¿©(¼ÒÄϰú Ư¼ºÀ» ¹´Â´Ù(bind))ÇÑ´Ù
¶ó´Â°Ô Á»´õ Àû´çÇÑ ¼³¸íÀÌ ¾Æ´Ò±î ½Í´Ù.
<screen>
int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);
</screen>
ÀÎÀÚ·Î ÁÖ¾îÁø sockfd ¿¡´ëÇØ¼ sockaddr À» ÀÌ¿ëÇØ¼ Ư¼ºÀ» ¹¾îÁØ´Ù.
bind ÇÔ¼ö¸¦ ÅëÇØ¼ ¿ì¸®´Â sockfd °¡ »ç¿ëÇÒ Æ÷Æ®¹øÈ£(port), ±×¸®°í ¿¬°áÀ» ¹Þ¾ÆµéÀÏ
IP ÁÖ¼Ò Æ¯¼ºµîÀ» ¹¾îÁÙ¼ö ÀÖ´Ù. IP ÁÖ¼Ò´Â IPv4, IPv6 µîÀÌ »ç¿ëµÉ¼ö ÀÖÀ»°ÍÀÌ´Ù.
</para>
<para>
bind ÇÔ¼ö´Â º¸Åë ¼¹ö¿¡¼ »ç¿ëµÈ´Ù. ±× ÀÌÀ¯´Â ´ëºÎºÐÀÇ ¼ºñ½º(HTTP, FTP..)µéÀÌ
ÁöÁ¤µÈ Æ÷Æ®¹øÈ£¸¦ ÅëÇØ¼ ¼ºñ½º µÇ±â ¶§¹®ÀÌ´Ù. ¹Ý¸é Ŭ¶óÀ̾ðÆ®ÀÇ °æ¿ì
Ä¿³Î¿¡¼ ÇÒ´çÇÑ ÀÓÀÇÀÇ Æ÷Æ®¹øÈ£¸¦ ÀÌ¿ëÇØ¼ ¼¹ö¿Í ¿¬°áÇϱ⠶§¹®¿¡ bind ¸¦ »ç¿ëÇÒ
Çʿ䰡 ¾ø´Ù.
</para>
</section>
<section>
<title>connect(2) ÇÔ¼ö</title>
<para>
<screen>
int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen);
</screen>
À̰ÍÀº Ŭ¶óÀ̾ðÆ®Ãø ¿¡¼ »ç¿ëµÇ¸ç, struct sockaddr ±¸Á¶Ã¼¿¡ ¼¼ÆÃµÈ ³»¿ë´ë·Î
¼¹öÃø¿¡ ¿¬°áÇÑ´Ù. sockaddr ±¸Á¶Ã¼¿¡´Â ¿¬°áµÉ ¼¹ö¿¡ ´ëÇÑ Á¤º¸µé, Áï ÁÖ¼Ò
ÆÐ¹Ð¸® IP ¹øÈ£¿Í PORT ¹øÈ£ µîÀÌ µé¾î°¡ ÀÖÀ¸¸ç, connect ÇÔ¼ö´Â sockaddr Á¤º¸¸¦ ÀÌ¿ëÇØ¼
¼¹öÃø¿¡ ¿¬°áÀ» ÇÏ¸ç ¼¹ö¿ÍÀÇ Åë½ÅÀ» À§ÇÑ endpoint ¿Í sockfd ¸¦ ¿¬°á½ÃŲ´Ù.
sockfd ´Â socket ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ ¸¸µé¾îÁø ¼ÒÄÏ ÁöÁ¤ ¹øÈ£ÀÌ´Ù.
</para>
</section>
<section>
<title>listen(2) ÇÔ¼ö</title>
<para>
<screen>
int listen(int sockfd, int backlog);
</screen>
¼¹öÃø¿¡¼ »ç¿ëµÇ¸ç socket ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ ¸¸µé¾îÁø sockfd ¿¡ ´ëÇØ¼, µé¾î ¿À´Â
¿¬°áÀ» ±â´Ù¸°´Ù. backlog ´Â ¾ÆÁ÷ ¿ÏÀüÈ÷ ¿¬°áµÇÁö ¾ÊÀº ¿¬°áµéÀÌ ´ë±âÇÒ queue ÀÇ
±æÀ̸¦ ¸í½ÃÇϱâ À§Çؼ »ç¿ëµÈ´Ù.
</para>
</section>
<section>
<title>accept(2) ÇÔ¼ö</title>
<para>
<screen>
int accept(int s, struct sockaddr *addr, socklen_t *addrlen);
</screen>
listen À» ÅëÇØ¼ ¸¸µé¾îÁø ¹Ì¿¬°áÀÇ ´ë±â¿¿¡¼ °¡Àå ¾Õ¿¡ ÀÖ´Â ¿¬°áÀÇ ³»¿ëÀ» °¡Á®¿Í¼
»õ·Î¿î ¿¬°á ¼ÒÄÏÀ» ¸¸µé¾îÁØ´Ù. »õ·Î¸¸µé¾îÁø ¿¬°á¼ÒÄÏÀº ÆÄÀÏ Áö½ÃÀÚ¸¦ ÇÒ´çÇÏ¿©¼
¸®ÅÏÇØÁÖ°Ô µÇ¸ç, ¿ì¸®´Â ¸®ÅÏµÈ ÆÄÀÏ Áö½ÃÀÚ¸¦ ÀÌ¿ëÇØ¼ »õ·Î¸¸µé¾îÁø ¼ÒÄϰú Åë½ÅÀ»
ÇÒ¼ö ÀÖ°Ô µÈ´Ù.
</para>
</section>
</section>
<section>
<title>ÀÔÃâ·Â ÇÔ¼ö</title>
<para>
À¯´Ð½º¿¡¼ ¼ÒÄÏÀº ÆÄÀϰú µ¿ÀÏÇÏ°Ô Ãë±Þ µÇ±â ¶§¹®¿¡ read(), write()¿Í°°Àº ½Ã½ºÅÛ
ÇÔ¼ö¸¦ ÀÌ¿ëÇØµµ ´ëºÎºÐÀÇ ÀÔÃâ·ÂÀ» ´Ù·ê ¼ö ÀÖ´Ù. ±×·¯³ª ÀÌµé ½Ã½ºÅÛ ÇÔ¼öµéÀº
³×Æ®¿öÅ©ÀÇ Æ¯¼ºÀ» °í·ÁÇÏÁö ¾Ê°í ¸¸µé¾ú±â ¶§¹®¿¡ ³×Æ®¿öÅ© Á¤º¸¸¦ ÇÊ¿ä·Î ÇÏ´Â ÀÛ¾÷À»
Çϱ⿡´Â Àû´çÇÏÁö ¾ÊÀº Á¡ÀÌ ÀÖ´Ù.
</para>
<para>
¿¹¸¦µé¾î UDP¸¦ ÀÌ¿ëÇØ¼ Åë½ÅÀ» ÇÒ°æ¿ì Àбâ´Â ¹®Á¦¾øÁö¸¸ ¾²±â¿¡´Â ¹®Á¦°¡ »ý±æ ¼ö ÀÖ´Ù.
UDP´Â ¿¬°á ¼ÒÄÏÀ» ¸¸µéÁö ¾Ê±â ¶§¹®¿¡ ¾µ¶§ ¿¬°áµÈ È£½ºÆ®ÀÇ Á¤º¸¸¦ ¾Ë ¼ö°¡ ¾ø±â ¶§¹®¿¡
write()ÇÔ¼ö·Î´Â µ¥ÀÌÅ͸¦ Àü¼ÛÇÒ ¼ö ¾ø°Ô µÈ´Ù. ÀÌ·²°æ¿ì¿¡´Â ¼ÒÄÏ API¸¦ »ç¿ëÇØ¼ Åë½ÅÀ»
ÇØÁÖ¾î¾ß ÇÑ´Ù.
</para>
<section>
<title>ÀÔ·ÂÇÔ¼ö - recvfrom/recvmsg</title>
<para>
¼ÒÄÏÀ¸·Î ºÎÅÍ µ¥ÀÌÅ͸¦ ¹Þ±â À§Çؼ »ç¿ëÇÑ´Ù.
<screen>
#include <sys/types.h>
#include <sys/socket.h>
ssize_t recvfrom(int s, void *buf, size_t len, int flags, struct sock-
addr *from, socklen_t *fromlen);
ssize_t recvmsg(int s, struct msghdr *msg, int flags);
</screen>
¼ÒÄÏ ÁöÁ¤ÀÚ <emphasis>s</emphasis>·Î ºÎÅÍ µ¥ÀÌÅ͸¦ Àд ÀÏÀ» ÇÑ´Ù. µÑ´Ù
¿¬°áÁöÇâ ¼ÒÄϰú ºñ¿¬°áÁöÇâ ¼ÒÄÏ ¸ðµÎ¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Ù. º¸Åë recvfrom()ÇÔ¼ö°¡
»ç¿ëÇϱ⿡ Á÷°üÀûÀÎ °ü°è·Î ½±°Ô »ç¿ëÇÒ ¼ö ÀÕ´Ù. ¼ÒÄÏÀ¸·Î ºÎÅÍ <emphasis>len</emphasis>
¸¸Å µ¥ÀÌÅ͸¦ Àоî¿Í¼ <emphasis>buf</emphasis>¿¡ ÀúÀåÇÑ´Ù.
¶ÇÇÑ 5¹øÂ° ÀÎÀÚÀÎ <emphasis>from</emphasis>¸¦ ÅëÇØ¼ µ¥ÀÌÅ͸¦ º¸³½ È£½ºÆ®ÀÇ
ÀÎÅÍ³Ý Á¤º¸¸¦ ¾ò¾î ¿Ã ¼ö ÀÖ´Ù. ±×·¯¹Ç·Î ºñ¿¬°á ÁöÇâ ¼ÒÄÏÀ» »ç¿ëÇÏ´õ¶óµµ
ÀÌ ÀÎÅÍ³Ý Á¤º¸¸¦ ÅëÇØ¼ µ¥ÀÌÅ͸¦ ¼ö½ÅÇÒ ¸ñÀûÁö È£½ºÆ®¸¦ °áÁ¤ÇÒ ¼ö ÀÖ°Ô µÈ´Ù.
<emphasis>fromlen</emphasis>´Â sockaddr ±¸Á¶Ã¼ÀÇ ±æÀÌ´Ù.
³ª¸ÓÁö ÀÚ¼¼ÇÑ ³»¿ëÀº recvform(2)ÀÇ ¸ÇÆäÀÌÁö¸¦ Âü°íÇϱ⠹ٶõ´Ù.
</para>
</section>
<section>
<title>Ãâ·ÂÇÔ¼ö - sendto/sendmsg</title>
<para>
¼ÒÄÏÀ¸·Î µ¥ÀÌÅ͸¦ º¸³»±â À§Çؼ »ç¿ëÇÑ´Ù.
<screen>
#include <sys/types.h>
#include <sys/socket.h>
ssize_t sendto(int s, const void *buf, size_t len, int flags, const
struct sockaddr *to, socklen_t tolen);
ssize_t sendmsg(int s, const struct msghdr *msg, int flags);
</screen>
¿ª½Ã Á÷°üÀûÀÎ sendto¸¦ ³Î¸® »ç¿ëÇÑ´Ù. ¼ÒÄÏ ÁöÁ¤ÀÚ <emphasis>s</emphasis>¿¡
<emphasis>len</emphasis>Å©±â¸¸Å <emphasis>buf</emphasis>ÀÇ ³»¿ëÀ» º¸³½´Ù.
<emphasis>to</emphasis>¸¦ ÀÌ¿ëÇØ¼ µ¥ÀÌÅ͸¦ ¹ÞÀ» È£½ºÆ®¸¦ ¸í½ÃÇÒ ¼ö ÀÖ´Ù.
sendto()¿Í recvfrom()ÇÔ¼öÀÇ »ç¿ë¿¹´Â
<ulink url="http://www.joinc.co.kr/modules/moniwiki/wiki.php/article_UDP_¼ÒÄÏ_ÇÁ·Î±×·¡¹Ö">UDP ¼ÒÄÏ ÇÁ·Î±×·¡¹Ö</ulink>
À» Âü°íÇϱ⠹ٶõ´Ù.
</para>
</section>
</section>
<section>
<title>ÀÎÅÍ³Ý ÁÖ¼Òº¯È¯</title>
<para>
ÀÎÅÍ³Ý ÁÖ¼Ò ÀÚü°¡ Àΰ£ÀÌ ÀÎÁöÇϱ⠾î·Á¿î ¼ö·Î µÇ¾î ÀÖ´Ù º¸´Ï À̰ÍÀ»
°ü¸®Çϱ⠽±µµ·Ï Á¡¹ÚÀÌ 3ÇüÁ¦ ½ºÅ¸ÀÏÀÇ ÀÎÅÍ³Ý ÁÖ¼Òü°è¸¦ ¸¸µé¾î¼
°ü¸®ÇÏ°í ¿©±â¿¡ ¶Ç µµ¸ÞÀÎ À̸§À» Á༠½±°Ô ±â¾ïÇÒ ¼ö ÀÖµµ·Ï Çϰí ÀÖ´Ù.
ÇÁ·Î±×·¡¸Ó³ª »ç¿ëÀÚ´Â º¸Åë µµ¸ÞÀÎ À̸§À̳ª Á¡¹ÚÀÌ 3ÇüÁ¦ ½ºÅ¸ÀÏÀÇ ÀÎÅͳÝ
ÁÖ¼Ò¸¦ »ç¿ëÇÏ°Ô µÇ´Âµ¥, ½ÇÁ¦ ³×Æ®¿öÅ© ÇÁ·Î±×·¥¿¡¼´Â 32bit ÁÖ¼Ò ÇüÅ·Î
º¯È¯ ½ÃÄÑÁà¾ßÇÒ Çʿ䰡 ÀÖ´Ù.
</para>
<para>
¿©±â¿¡¼´Â À̵é ÁÖ¼Ò°£ º¯È¯°ú °ü·ÃµÈ ÇÔ¼ö¸¦ ¼Ò°³ÇÑ´Ù.
</para>
</section>
<section>
<title>ÀÎÅÍ³Ý ÁÖ¼Ò <-> 32bit ÁÖ¼Ò</title>
<para>
inet_addr(3), inet_aton(3), inet_network(3), inet_ntoa(3) ÀÇ ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼
ÀÎÅÍ³Ý ÁÖ¼Ò¿Í 32bit ÁÖ¼Ò°£ º¯È¯À» ÇÒ ¼ö ÀÖ´Ù. inet_addr(3)°ú inet_network(3)ÇÔ¼ö´Â
Á¡¹ÚÀÌ 3ÇüÀç ½ºÅ¸ÀÏ ÀÎÅÍ³Ý ÁÖ¼Ò·Î ºÎÅÍ 32bit ÁÖ¼Ò¸¦ ¾ò±â À§Çؼ, inet_aton(3)°ú
inet_ntoa(3)±× ¹Ý´ëÀÇ º¯È¯ °ªÀ» ¾ò±â À§Çؼ »ç¿ëÇÑ´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº man ÆäÀÌÁö¸¦
Âü°íÇϱ⠹ٶõ´Ù(±×³É ÇÔ¼ö ¸µÅ©¸¦ Ŭ¸¯ÇÏ¸é µÈ´Ù).
</para>
</section>
<section>
<title>µµ¸ÞÀÎ À̸§ -> 32bit ÁÖ¼Ò</title>
<para>
Á¡¹ÚÀÌ 3ÇüÁ¦ ½ºÅ¸ÀÏÀÇ ÀÎÅÍ³Ý ÁÖ¼Ò´Â È®½ÇÈ÷ °ü¸®Çϱâ ÁÁ°í ¿Ü¿ì±â¿¡ Á»´õ
ÆíÇϱä ÇÏÁö¸¸ ¼ýÀÚ·Î µÇ¾î ÀÖ´Ù´Â °Í ¶§¹®¿¡ ÀÎÅÍ³Ý ¼ºñ½º¸¦ À§ÇÑ È£½ºÆ® ÁÖ¼Ò·Î
»ç¿ëÇϱ⿣ Àû´çÇÏÁö ¾Ê´Ù. ±×·¡¼ ÀÎÅÍ³Ý ÁÖ¼Ò¿¡ À̸§À» ÁÖ´Â ¼ºñ½º°¡ ¸¸µé¾îÁö°Ô
µÇ¾ú´Âµ¥ µµ¸ÞÀÎ ¼ºñ½ºÀÌ´Ù. µµ¸ÞÀÎ ¼ºñ½º´Â µµ¸ÞÀÎ À̸§¿¡ ´ëÇÑ ÀÎÅÍ³Ý ÁÖ¼Ò¸¦
µÇµ¹·Á ÁÖ´Â ÀÏÀ» ÇÑ´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº
<ulink url="http://www.joinc.co.kr/modules/moniwiki/wiki.php/article_ÀÎÅͳÝ_ÁÖ¼Ò_º¯È¯">ÀÎÅÍ³Ý ÁÖ¼Ò º¯È¯</ulink>¹®¼¸¦ Âü°íÇϱ⠹ٶõ´Ù.
</para>
<section>
<title>gethostbyname/gethostbyaddr</title>
<para>
µµ¸ÞÀÎ À̸§¿¡¼ ÀÎÅÍ³Ý ÁÖ¼Ò¸¦ ¾ò¾î¿À´Â ÀÏÀ» ÇÑ´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº
gethostbyname(3)°ú getbyaddr(3)ÀÇ ¸ÇÆäÀÌÁö¸¦ Âü°í Çϱâ¹Ù¶õ´Ù.
</para>
</section>
</section>
<section>
<title>³×Æ®¿öÅ© ¹ÙÀÌÆ® ¿À´õ</title>
<para>
³×Æ®¿öÅ© Åë½ÅÀ» ÇÏ´Ùº¸¸é CPUÀÇ ¹ÙÀÌÆ® ¿À´õ°¡ ´Ù¸¥ ÀÌÀ¯·Î À̸¦ Ç¥ÁØ ¹ÙÀÌÆ® ¿À´õÀÎ
³×Æ®¿öÅ© ¹ÙÀÌÆ® ¿À´õ·Î º¯È¯Çؼ º¸³»°í, ¹Þ¾ÆµéÀÎ µ¥ÀÌÅʹ ȣ½ºÆ®ÀÇ ¹ÙÀÌÆ® ¿À´õ¿¡
¸Â°Ô ´Ù½Ã º¯°æ½ÃÄÑÁÖ´Â ÀÛ¾÷ÀÌ ÇÊ¿äÇÏ´Ù. ÀÌ·¯ÇÑ ÀÛ¾÷À» À§Çؼ ¼ÒÄÏÀº ¸î °³ÀÇ
ÇÔ¼öµéÀ» Á¦°øÇÑ´Ù. ¹ÙÀÌÆ® ¿À´õ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº
<ulink url="http://www.joinc.co.kr/modules/moniwiki/wiki.php/article_endian¿¡_´ëÇØ¼">endian¿¡ ´ëÇØ¼
</ulink>¸¦ Âü°íÇϱ⠹ٶõ´Ù.
</para>
<section>
<title>È£½ºÆ® ¹ÙÀÌÆ® ¿À´õ -> ³×Æ®¿öÅ© ¹ÙÀÌÆ® ¿À´õ</title>
<para>
htonl(3), htons(3) ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. ÀüÀÚ´Â 4byte µ¥ÀÌÅÍ, ÈÄÀÚ´Â 2byte µ¥ÀÌÅ͸¦
³×Æ®¿öÅ© ¹ÙÀÌÆ® ¿À´õ¸¦ µû¸£µµ·Ï º¯È¯ÇÑ´Ù.
</para>
</section>
<section>
<title>³×Æ®¿öÅ© ¹ÙÀÌÆ® ¿À´õ -> È£½ºÆ® ¹ÙÀÌÆ® ¿À´õ</title>
<para>
ntohl(3), ntohs(3) ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. ÀüÀÚ´Â 4byteµ¥ÀÌÅÍ, ÈÄÀÚ´Â 2byteµ¥ÀÌÅ͸¦
È£½ºÆ® ¹ÙÀÌÆ® ¿À´õ¸¦ µû¸£µµ·Ï º¯È¯ÇÑ´Ù.
</para>
</section>
<section>
<title>¿£µð¾È °Ë»ç ÇÔ¼ö</title>
<para>
ÀÌ°Ç º¸³Ê½º´Ù. ÇöÀç CPUÀÇ ¹ÙÀÌÆ® ¿À´õ ¹æ½ÄÀ» ¾Ë·Á ÁÖ´Â °£´ÜÇÑ ÇÔ¼ö´Ù.
<screen>
int endian(void)
{
int i = 0x00000001;
if ( ((char *)&i)[0] )
return LITTLE_ENDIAN;
else
return BIG_ENDIAN;
}
</screen>
</para>
</section>
</section>
<section>
<title>¼ÒÄÏ ¿É¼Ç</title>
<section>
<title>¼ÒÄÏ ¿É¼Ç ¼³Á¤ - setsockopt(2)</title>
<para>
</para>
</section>
<section>
<title>¼ÒÄÏ ¿É¼Ç °¡Á®¿À±â - getsockopt(2)</title>
<para>
</para>
</section>
</section>
</section>
</section>
<section>
<title>¼ÒÄÏ ÇÁ·Î±×·¡¹Ö ÀϹÝ</title>
<section>
<title>¼¹öÃø socket »ý¼º ¼ø¼</title>
<para>
´ÙÀ½Àº ¼¹öÃøÀÇ ¼ÒÄÏ »ý¼º ¼ø¼¸¦ ³ª¿ÇÑ °ÍÀÌ´Ù.
<orderedlist>
<listitem>
<para>
¼¹öÃøÀÇ ¼ÒÄÏ »ý¼º¼ø¼´Â ÃÖÃÊ <emphasis>socket</emphasis>
ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ endpoint ¼ÒÄÏ, Áï Ŭ¶óÀ̾ðÆ®ÀÇ
¿¬°áÀ» µè±â À§ÇÑ ¼ÒÄÏÀ» »ý¼ºÇÏ°Ô µÈ´Ù.
ÀÌ ¼ÒÄÏÀº ¼¹ö°¡ Á¾·áµÉ¶§±îÁö ³²¾ÆÀÖ°Ô µÈ´Ù.
</para>
</listitem>
<listitem>
<para>
<emphasis>bind</emphasis> ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ¼ÒÄÏÆ¯¼ºÀ» ¹¾îÁØ´Ù. ÀÌ ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿©
port ¹øÈ£¸¦ ÁöÁ¤ÇØÁÖ¸ç, ¹Þ¾ÆµéÀÏ IPÁÖ¼Ò¿¡ ´ëÇÑ ¼³Á¤À» ÇÑ´Ù.
</para>
</listitem>
<listitem>
<para>
<emphasis>listen</emphasis> ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© µè±â
¼ÒÄÏ(socket ÇÔ¼ö¸¦ ÅëÇØ¼ ¸¸µé¾îÁø)
¿¡ ¿¬°áÀÌ ÀÖ´ÂÁö ±â´Ù¸°´Ù. ¸¸¾à ¿¬°áÀÌ ÀÖ´Ù¸é, ¿¬°á ´ë±â¿(queue)¿¡ ½×¾Æ³õ´Â´Ù.
</para>
</listitem>
<listitem>
<para>
<emphasis>accept</emphasis> ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© ¿¬°á ´ë±â¿¿¡ ´ë±âÁßÀÎ ¿¬°áÀÌ ÀÖ´Ù¸é
ÇØ´ç ¿¬°á¿¡ ´ëÇÏ¿© »õ·Î¿î ¼ÒÄÏÀ» ¸¸µé°í ¸¸µé¾îÁø ¼ÒÄÏ¿¡ ´ëÇÑ ÆÄÀÏ Áö½ÃÀÚ¸¦
µÇµ¹·ÁÁØ´Ù. ÀÌ ¼ÒÄÏÀº Àбâ/¾²±â·Î ¸¸µé¾îÁø´Ù. ¸¸¾à ¿¬°á ´ë±â¿¿¡ ´ë±âÁßÀÎ ¿¬°áÀÌ
¾ø´Ù¸é (±âº»ÀûÀ¸·Î) ÇØ´ç ¿µ¿ª¿¡¼ ºÀ¼â(block)µÈ´Ù.
</para>
</listitem>
<listitem>
<para>
<emphasis>read, write</emphasis> µîÀÇ ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ Åë½ÅÀ» ÇÑ´Ù.
</para>
</listitem>
</orderedlist>
</para>
</section>
<section>
<title>Ŭ¶óÀÌ¾ðÆ® Ãø socket »ý¼º¼ø¼</title>
<para>
´ÙÀ½Àº Ŭ¶óÀ̾ðÆ®ÃøÀÇ ¼ÒÄÏ »ý¼º ¼ø¼¸¦ ³ª¿ÇÑ °ÍÀÌ´Ù. ¼¹öÃø¿¡ ºñÇÏ¿©¼
ÈνŠ°£´ÜÇÏ°Ô ÀÌ·ç¾îÁüÀ» ¾Ë¼ö ÀÖ´Ù.
<orderedlist>
<listitem>
<para>
ÃÖÃÊ <emphasis>socket</emphasis> ¸¦ ÀÌ¿ëÇÏ¿© endpoint ¼ÒÄÏÀ» »ý¼ºÇÑ´Ù.
Ŭ¶óÀÌ¾ðÆ® À̹ǷΠÀ̰ÍÀº µè±â ¼ÒÄÏÀÌ ¾Æ´Ï°í, ¿¬°á ¼ÒÄÏÀÌ µÉ°ÍÀÌ´Ù.
(À̸§¸¸ ´Ù¸¦»Ó »ç½Ç µè±â ¼ÒÄϰú ¿¬°á ¼ÒÄÏÀÇ ±¸ºÐÀº ¾ø´Ù)
</para>
</listitem>
<listitem>
<para>
<emphasis>connect</emphasis> ¸¦ ÀÌ¿ëÇÏ¿© ¼¹ö¿¡ ¿¬°áÇÑ´Ù.
</para>
</listitem>
<listitem>
<para>
<emphasis>read, write</emphasis> µîÀÇ ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ ¼¹ö¿Í Åë½ÅÇÑ´Ù.
</para>
</listitem>
</orderedlist>
</para>
</section>
</section>
<section>
<title>°á·Ð</title>
<para>
ÀÌ»ó Socket Layer ÀÇ °³³ä°ú Socket Layer ¿¡¼ Á¦°øÇÏ´Â Socket API ¿¡ ´ëÇÑ °£´ÜÈ÷
¾Ë¾Æ º¸¾Ò´Ù. ¿©±â¿¡ ÀÖ´Â API µéÀº °¡Àå ±âº»ÀûÀÎ(Åë½ÅÀ» À§Çؼ ÇÊ¿äÇÑ) ÇÔ¼öµéÀÌ´Ù.
³ª¸ÓÁö Á»´õ ¼¼¹ÐÇÑ ÇÔ¼öµé¿¡ ´ëÇØ¼´Â Unix NetWork Programming µîÀÇ ¼ÀûÀ» Âü°íÇϱ⠹ٶõ´Ù.
</para>
<para>
¿©±â¿¡ ÀÖ´Â ¼ÒÄÏ API µéÀÇ »ç¿ë¿¹´Â ÀÌ »çÀÌÆ®¿¡¼ ÃæºÐÈ÷ ã¾Æº¼¼ö ÀÖÀ»°ÍÀÌ´Ù.
</para>
</section>
</article>
|
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|