ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
Docbook ¿ø¹® ¼ÒÄϿɼÇ
¿Ï¼ºÀÌ µÇ¸é docbook¿¡ Ãß°¡µÉ °ÍÀÌ´Ù.
³×Æ®¿öÅ© ȯ°æÀº ¸Å¿ì ´Ù¾çÇϸç, ¿¹ÃøÇϱâ Èûµç°æ¿ìµµ ¸¹ÀÌ ¹ß»ýÇÑ´Ù. ¶§¹®¿¡ ³×Æ®¿öÅ©ÇÁ·Î±×·¥ÀÇ Á¾·ù¿¡ µû¶ó¼ ¼ÒÄÏÀÇ ¼¼ºÎ»çÇ×À» Á¶ÀýÇØ¾ß ÇÏ´Â °æ¿ì°¡ ¹ß»ýÇÑ´Ù. ÀÌ·¯ÇÑ ¼ÒÄÏ¿É¼Ç ¼³Á¤À» À§Çؼ ¼ÒÄÏÀº getsockopt()¿Í setsockopt()µÎ°³ÀÇ ÇÔ¼ö¸¦ Á¦°øÇÑ´Ù. À̸§¿¡¼ ¾Ë ¼ö ÀÖµíÀÌ getsockopt´Â ÇöÀçÀÇ ¼ÒÄϿɼǰªÀ» °¡Á®¿À±â À§Çؼ, setsockopt´Â ¼ÒÄϿɼǰªÀ» º¯°æÇϱâ À§Çؼ »ç¿ëÇÑ´Ù.
¿¹¸¦ µéÀÚ¸é µ¿ÀÏÇÑ ³×Æ®¿ö ÇÁ·Î±×·¥À̶ó°í ÇÏ´õ¶óµµ ATM¸Á¿¡¼ ÀÛµ¿ÇÏ´Â °Í°ú ÀÎÅͳݸÁ PPP¿¡¼ ÀÛµ¿ÇÏ´Â °ÍÀº ȯ°æ¿¡ ÀÖ¾î¼ Â÷À̰¡ »ý±æ ¼ö ¹Û¿¡ ¾øÀ» °ÍÀÌ´Ù. ¼ÒÄϹöÆÛÀÇ Å©±â¸¦ ¿¹·Î µéÀÚ¸é, ÀϹÝÀûÀ¸·Î (´ë¿ªÆø * Áö¿¬À²) * 2ÀÇ °ø½Ä¿¡ µû¸¦ °æ¿ì ÃÖÀûÀÇ È¿°ú¸¦ º¸¿©Áشٰí ÇÑ´Ù. ´ÙÀ½Àº À̵é ÇÔ¼öÀÇ »ç¿ë¹æ¹ýÀÌ´Ù. #include <sys/types.h> #include <sys/socket.h> int getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen); int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen);
SOL_SOCKET·¹º§¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Â ¿É¼Ç°ú µ¥ÀÌŸÇüÀº ´ÙÀ½°ú °°´Ù.
IPPROTO_TCP·¹º§¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Â ¿É¼Ç°ú µ¥ÀÌÅÍÇüÀÌ´Ù.
SO_REUSEADDR
°£´ÜÇÑ ¿¹·Î, ¼ÒÄÏÀ» ÀÌ¿ëÇÑ ¼¹öÇÁ·Î±×·¥À» ¿î¿ëÇÏ´Ù º¸¸é °Á¦Á¾·áµÇ°Å³ª ºñÁ¤»ó Á¾·áµÇ´Â °æ¿ì°¡ ¹ß»ýÇÑ´Ù. Å×½ºÆ®¸¦ ¸ñÀûÀ¸·Î ÇÒ °æ¿ì¿¡´Â ƯÈ÷ °Á¦Á¾·á ½ÃÄÑ¾ß ÇÏ´Â °æ¿ì°¡ ÀÚÁÖ ¹ß»ýÇϴµ¥, °Á¦Á¾·á ½Ã۰í ÇÁ·Î±×·¥À» ´Ù½Ã ½ÇÇà½Ãų°æ¿ì ´ÙÀ½°ú °°Àº ¸Þ½ÃÁö¸¦ Á¾Á¾ º¸°Ô µÈ´Ù. bind error : Address already in useÀÌ´Â ±âÁ¸ ÇÁ·Î±×·¥ÀÌ Á¾·áµÇ¾úÁö¸¸, ºñÁ¤»óÁ¾·áµÈ »óÅ·Π¾ÆÁ÷ Ä¿³ÎÀÌ bind(2)Á¤º¸¸¦ À¯ÁöÇϰí ÀÖÀ½À¸·Î ¹ß»ýÇÏ´Â ¹®Á¦´Ù. º¸Åë 1-2ºÐ Á¤µµ Áö³ª¸¸ Ä¿³ÎÀÌ ¾Ë¾Æ¼ Á¤¸®¸¦ Çϱä ÇÏÁö¸¸, ±× ½Ã°£µ¿¾È ±â´Þ·Á¾ß ÇÑ´Ù´Â °ÍÀº »ó´çÈ÷ ¹ø°Å·Î¿î ÀÏÀÌ µÉ °ÍÀÌ´Ù. ÀÌ °æ¿ì ´ÙÀ½°ú °°Àº Äڵ带 »ðÀÔÇÔÀ¸·Î½á ¹®Á¦¸¦ ÇØ°áÇÒ ¼ö ÀÖ´Ù. int sock = socket(...); setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *)&bf, (int)sizeof(bf));ÀÌ·¸°Ô Çϸé Ä¿³ÎÀº ±âÁ¸¿¡ bind·Î ÇÒ´çµÈ ¼ÒÄÏÀÚ¿øÀ» ÇÁ·Î¼¼½º°¡ Àç »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Çã¶ôÇÏ°Ô µÈ´Ù.
´ÙÀ½Àº ¼ÒÄϹöÆÛÀÇ Å©±â¸¦ °¡Á®¿À°í ¼³Á¤ÇÏ´Â ¿ÏÀüÇÑ ÄÚµå´Ù.
TCP_NODELAY
ÀÌ ¿É¼ÇÀ» ÀÌÇØÇÏ·Á¸é Nagle¾Ë°í¸®Áò¿¡ ´ëÇØ¼ ÀÌÇØ¸¦ ÇØ¾ß ÇÑ´Ù. Nagle ¾Ë°í¸®ÁòÀÌ Àû¿ëµÇ¸é, ¿î¿µÃ¼Á¦´Â ÆÐŶÀ» ACK°¡ ¿À±â¸¦ ±â´Ù·È´Ù°¡ µµÂøÇϸé, ±× µ¿¾È ½×¿©ÀÖ´ø µ¥ÀÌÅ͸¦ ÇѲ¨¹ø¿¡ º¸³»°Ô µÈ´Ù. ÀÌ·¯ÇÑ ¹æ½ÄÀ» »ç¿ëÇÏ°Ô µÇ¸é, ´ë¿ªÆøÀÌ ³·Àº WAN¿¡¼ ºó¹øÇÑ Àü¼ÛÀ» ÁÙÀÌ°Ô µÊÀ¸·Î È¿°úÀûÀÎ ´ë¿ªÆøÈ°¿ëÀÌ °¡´ÉÇØÁø´Ù.
´ëºÎºÐÀÇ °æ¿ì¿¡ ÀÖ¾î¼ Nagle ¾Ë°í¸®ÁòÀº È¿À²ÀûÀ¸·Î ÀÛµ¿Çϱä ÇÏÁö¸¸, ºó¹øÇÑ ÀÀ´äÀÌ Áß¿äÇÑ ¼ºñ½ºÀÇ °æ¿ì¿¡´Â Àû´çÇÏÁö ¾ÊÀº °æ¿ì°¡ ¹ß»ýÇÑ´Ù. ¿¹¸¦ µé¾î X-TerminalÀ» ÀÌ¿ëÇÒ °æ¿ì ¸¶¿ì½º À̺¥Æ®´Â Áï½Ã Àü´ÞµÉ Çʿ䰡 Àִµ¥, Nagle¾Ë°í¸®ÁòÀ» »ç¿ëÇÏ¸é ¾Æ¹«·¡µµ ¹ÝÀÀ½Ã°£ÀÌ ¶³¾îÁö°Ô µÉ °ÍÀÌ´Ù. ½Ç½Ã°£ÀûÀÎ ¹ÝÀÀÀÌ Áß¿äÇÑ ¿Â¶óÀÎ °ÔÀÓ¿ª½Ã Nagle ¾Ë°í¸®ÁòÀ» Á¦°ÅÇÏ´Â°Ô ÁÁÀ» °ÍÀÌ´Ù.
¾Æ·¡ÀÇ À̹ÌÁö´Â nagleÀÌ Àû¿ëµÇ¾úÀ» ¶§¿Í ±×·¸Áö ¾ÊÀ» ¶§, ¾î¶»°Ô µ¥ÀÌÅÍ Àü¼ÛÀÌ ÀϾ´ÂÁö¸¦ º¸¿©ÁÖ°í ÀÖ´Ù. ![]() SO_LINGER
SO_LINGERÀº ¼ÒÄÏÀÌ close()µÇ¾úÀ» ¶§, ¼ÒÄϹöÆÛ¿¡ ³²¾ÆÀÖ´Â µ¥ÀÌÅ͸¦ ¾î¶»°Ô ÇÒ °ÍÀÌÁö¸¦ °áÁ¤Çϱâ À§Çؼ »ç¿ëÇÑ´Ù. ´ÙÀ½Àº SO_LINGER ¿É¼Ç¿¡ »ç¿ëµÇ´Â µ¥ÀÌÅͱ¸Á¶Ã¼ÀÌ´Ù. struct linger
{
int l_onoff;
int l_linger;
}
¼ÒÄÏ timeout
1. Socket ¿¡ ´ëÇÑ ±âº»Áö½Ä1.1. Socket LayerSocket Àº À¯´Ð½ºÀÇ ÆÄÀÏ ±â¼úÀÚ¸¦ ÅëÇØ¼ ´Ù¸¥ ÇÁ·Î±×·¥°£ÀÇ Á¤º¸±³È¯À» °¡´ÉÇϵµ·Ï ÇØÁÖ´Â ¹æ¹ýÀ¸·Î, °°Àº ½Ã½ºÅÛ¿¡ ÀÖ´Â ÇÁ·Î±×·¥µé°£ÀÇ Á¤º¸±³È¯À» À§ÇѸñÀû, ȤÀº ´Ù¸¥ ½Ã½ºÅÛ(³×Æ®¿÷ »óÀ¸·Î ¸Ö¸®¶³¾îÁ®ÀÖ´Â) µé°£ÀÇ Á¤º¸±³È¯À» À§ÇÑ ¸ñÀûÀ¸·Î »ç¿ëµÈ´Ù. ±×·±µ¥ ¿Ö Layer ¶ó°í ºÎ¸£´Â°¡ ±× ÀÌÀ¯´Â TCP/IP 4°èÃþÀÇ ÀÀ¿ë°èÃþ(applicaton layer)°ú Àü¼Û°èÃþ(transmission layer) Áß°£¿¡ Á¸ÀçÇϱ⠶§¹®ÀÌ´Ù. ¾Æ·¡ÀÇ ±×¸²À» º¸¶ó À§ÀÇ ±×¸²Àº TCP/IP °³¿ä¿¡¼ ÀÌ¹Ì º»ÀûÀÌ ÀÖ´Â ±×¸²ÀÏ °ÍÀÌ´Ù. ±×¶§ÀÇ ±×¸²°ú ´Þ¶óÁø Á¡ÀÌ ÀÖ´Ù¸é, ÀÀ¿ë°èÃþ°ú Àü¼Û°èÃþ¿¡ Socket Layer °¡ Á¸ÀçÇÑ´Ù´Â °ÍÀÌ´Ù. ÀÌ Socket Layer °¡ ÀÀ¿ë°èÃþ°ú Àü¼Û°èÃþ »çÀÌ¿¡ Á¸ÀçÇÏ°Ô µÊÀ¸·Î ¿ì¸® ÇÁ·Î±×·¡¸ÓµéÀº º¹ÀâÇÏ°Ô TCP ¸¦ Á÷Á¢ Á¦¾îÇÒ ÇÊ¿ä¾øÀÌ, Socket Layer ¿¡¼ Á¦°øÇÏ´Â ´Ù¾çÇÑ ÇÔ¼ö(Socket API)¸¦ ÀÌ¿ëÇØ¼ °£´ÜÇÏ°Ô ÀÎÅÍ³Ý ³×Æ®¿÷ ÇÁ·Î±×·¡¹Ö ÀÛ¾÷À» ÇÏ°Ô µÇ´Â°ÍÀÌ´Ù.Socket Layer Àº ÀÀ¿ë°èÃþ¿¡¼ ¹ÞÀº ¸Þ½ÃÁö¸¦ ÇϺΠSocket API ¸¦ ÀÌ¿ëÇØ¼ Àü¼Û°èÃþÀ¸·Î º¸³½´Ù. Àü¼Û°èÃþ¿¡´Â 2°¡Áö ´ëÇ¥ÀûÀÎ ÇÁ·ÎÅäÄÝ ÀÌ Àִµ¥ ¹Ù·Î TCP ¿Í UDP ÀÌ´Ù. ±×·³À¸·Î ¿ì¸® ÇÁ·Î±×·¡¸ÓµéÀº TCPÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÒ°ÍÀÎÁö UDP ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÒ°ÍÀÎÁö¸¸ °áÁ¤ÇØÁÖ¸éµÈ´Ù. 1.2. ¿Ö Layer ±¸Á¶¸¦ °¡Áö´Â°¡ÀÏ»ó »ýȰ¿¡¼ ¼ÒÄÏ·¹À̾î¿Í ºñ½ÁÇѰÔ, Àüȱâ¶ó°í º¼¼ö ÀÖÀ»°ÍÀÌ´Ù. ¿ì¸®´Â »ó´ëÆí¿¡¼ Àüȸ¦ °É±â À§Çؼ »ó´ëÆíÀüÈÀÇ Áö¸®Àû À§Ä¡°¡ ¾îµðÀÎÁö, ¾î¶² Àüȱ¹¿¡¼ °ü¸®ÇÏ´ÂÁö, ¾ð¾î¸¦ ½ÅÈ£·Î º¯È¯ ½Ã۱â À§Çؼ ¾î¶°ÇÑ ÀÛ¾÷À» ÇØ¾ßÇÏ´ÂÁö, ¾î¶»°Ô º¸³»¾ß ÇÏ´ÂÁö ÀüÇô ¾ËÇʿ䰡 ¾ø´Ù. ±×³É ¼öȱ⠵é°í ÀüÈ ¹øÈ£¸¸ ´©¸£¸é ±×°É·Î ³¡ÀÌ´Ù. Áï Àüȱ⠶ó´Â°Ô ÀÖÀ½À¸·Î ±× ³»ºÎ¿¡¼ ÀϾ´Â ¿©·¯°¡Áö º¹ÀâÇÑ Åë½Å ÇÁ·Î¼¼½º¸¦ ¸ð¸£°íµµ »ó´ëÆí°ú ÀüÈÅëȸ¦ ÇÒ¼ö ÀÖ°Ô µÈ´Ù. Socket Layer ÀÌ Á¸ÀçÇÔÀ¸·Î½á, ¿ì¸®´Â TCP/UDP Çì´õ¸¦ ¾î¶»°Ô ¸¸µé¾î¾ß ÇÏ´ÂÁö, ±¸Á¶°¡ ¾î¶»°Ô µÇ´ÂÁö, ¾î¶»°Ô Ä¿³Î¿¡ Àü´ÞÇØ¾ß ÇÏ´ÂÁö ½Å°æ¾µÇÊ¿ä ¾øÀÌ ³×Æ®¿÷ ÇÁ·Î±×·¥À» ¸¸µé¼ö ÀÖ°Ô µÈ´Ù. 1.3. Socket"Socket ÀÌ¶ó´¢ ¿ì¸®´Â À§¿¡¼ Socket Layer¸¦ ÀÌ¹Ì ´Ù·ç¾ú´Âµ¥¿ä ?" ¶ó°í Àǹ®À» °¡Áú¼öµµ ÀÖÀ»°ÍÀÌ´Ù. Socket Layer °ú Socket ´Â ¾ö¿¬È÷ ´Ù¸£´Ù. Socket Layer ´Â °èÃþÀ» ³ªÅ¸³»´Â °ÍÀÌ´Ù. Áï Socket ¸¦ ´Ù·ç±â À§ÇÑ °èÃþÀÌ´Ù. ÀÌ´Â TCP°¡ Àü¼Û°èÃþÀÌ ¾Æ´Ñ°Í°ú ¸¶Âù°¡ÁöÀÌ´Ù. ¿ì¸®´Â Socket Layer ¿¡¼ Á¦°øÇÏ´Â ´Ù¾çÇÑ API¸¦ ÅëÇØ¼ Socket ¸¦ Á¦¾îÇÏ°Ô µÈ´Ù. ±×·³ Socket À̶õ ¹«¾ùÀΰ¡. ¼ÒÄÏÀ̶õ À¯´Ð½º ÆÄÀÏ Áö½ÃÀÚ ¸¦ ÀÌ¿ëÇÏ¿© ´Ù¸¥ ÇÁ·Î±×·¥°ú Á¤º¸±³È¯À» ÇÏ´Â ¹æ¹ý(ȤÀº µµ±¸) ÀÌ´Ù. ÀϹÝÀûÀ¸·Î À¯´Ð½º »ó¿¡¼ Á¤º¸±³È¯Àº ÆÄÀÏÁö½ÃÀÚ¸¦ ÅëÇÑ´Ù´Â°É ¾Ë°í ÀÖÀ»°ÍÀÌ´Ù. ¸¶Âù°¡Áö·Î Socket ¸¦ ÀÌ¿ëÇÑ Áö¿ª ȤÀº ³×Æ®¿÷À¸·Î ¿¬°áµÈ ÇÁ·Î±×·¥ °£ÀÇ Á¤º¸±³È¯ ¿ª½Ã ÆÄÀÏÁö½ÃÀÚ¸¦ ÅëÇØ¼ ÀÌ·ç¾îÁø´Ù. ´ÙÁß¿¬°á¼¹ö ¸¸µé±â(1) ÀÇ zipcode_multi.c ¸¦ ÀÌ¿ëÇØ¼ ¼ÒÄÏÀÌ ¾î¶»°Ô ÀÛµ¿ÇÏ´ÂÁö ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ. ¸ÕÀúÀÇ À§ÀÇ ÇÁ·Î±×·¥À» ÄÄÆÄÀÏ ½Ã۰í ÀÛµ¿À» ½ÃÄѺ¸ÀÚ. ÀÛµ¿À» ½ÃÄ×´Ù¸é ps ·Î zipcode_multi ÇÁ·Î±×·¥ÀÇ pid ¸¦ È®ÀÎÇØº¸°í /proc/pid/fd µð·ºÅ丮·Î À̵¿Çؼ ¾î¶°ÇÑ ÆÄÀÏ Áö½ÃÀÚ¸¦ °¡Áö°í ÀÖ´ÂÁö È®ÀÎÇØº¸µµ·Ï ÇÏÀÚ.
¿©±â¿¡ »õ·Î¿î Ŭ¶óÀÌ¾ðÆ®°¡ Á¢±ÙÀ»Çϸé (telnet À̳ª Àü¿ëŬ¶óÀÌ¾ðÆ® ¸¦ ÀÌ¿ëÇØ¼) ´ÙÀ½°ú °°Àº ÆÄÀÏ Áö½ÃÀÚ°¡ Çϳª Ãß°¡ µÉ°ÍÀÌ´Ù.
1.4. socket APIÀ̹ø¿¡´Â socket ·¹À̾¼ Á¦°øÇÏ´Â ¼ÒÄÏ °ü·Ã ÇÔ¼öµéÀ» ¼³¸íÇϵµ·Ï ÇϰڴÙ. 1.4.1. ¼ÒÄÏ »ý¼º ¹× ¿¬°á1.4.1.1. socket(2) ÇÔ¼öÀÌ·¯ÇÑ ¼ÒÄÏ Àº socket(2) ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ ¸¸µé¾îÁø´Ù. ÃÖÃÊ socket ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ ¼ÒÄÏÀ» »ý¼ºÇϸé Ä¿³ÎÀº Åë½ÅÀ» À§ÇÑ Á¾Á¡(end point,Áï Åë½Å¿¬°á»óȲÀ» üũÇÏ´Â)À» »ý¼ºÇϰí, ¿©±â¿¡ ´ëÇÑ ÆÄÀÏ Áö½ÃÀÚ¸¦ µÇµ¹·ÁÁØ´Ù. ÇÁ·Î±×·¥Àº socket ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ »ý¼ºÇÑ ÆÄÀÏ Áö½ÃÀÚ¿¡ »õ·Î¿î ¿¬°áÀÌ µé¾î¿À´Â Áö¸¦ È®ÀÎÇÏ°Ô µÈ´Ù. À§¿¡ ÀÖ´Â TCP/IP 4°èÃþÀ» º¸¸é Socket Layer ¾Æ·¡¿¡´Â ÃÖ¼ÒÇÑ 2°³ ÀÌ»óÀÇ »ç¿ë°¡´ÉÇÑ µ¥ÀÌŸ ±×·¥ÀÇ Å¸ÀÔÀÌ ÀÖÀ½À» ¾Ë¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ µ¥ÀÌŸ ±×·¥ÀÇ Å¸ÀÔ¿¡´Â TCP, UDP, RAW µîÀÌ ÀÖ´Ù. TCP ¼ÒÄÏ, UDP ¼ÒÄÏ, RAW ¼ÒÄÏÀ̶ó°í ºÎ¸£±âµµ ÇÑ´Ù. ¶ÇÇÑ ´Ù¾çÇÑ ¼ÒÄÏ ÁÖ¼ÒÆÐ¹Ð¸®(±º)¸¦ Á¦°øÇÑ´Ù. 표 1. ¼ÒÄÏÁÖ¼Ò ÆÐ¹Ð¸®
±×·¯¹Ç·Î socket ÇÔ¼ö´Â À§ÀÇ ¼ÒÄÏ ÁÖ¼Ò ÆÐ¹Ð¸®¿Í ¼ÒÄÏ Å¸ÀÔ ÁöÁ¤ÀÌ °¡´ÉÇØ¾ß ÇÑ´Ù.
Áï ÀÎÅÍ³Ý ÇÁ·ÎÅäÄÝÀ» ÀÌ¿ëÇÏ´Â TCP ¼ÒÄÏÀ» ¸¸µé±â ¿øÇÑ´Ù¸é socket(AF_INET, SOCK_STREAM, 0) °ú °°ÀÌ »ç¿ëÇÏ¸é µÈ´Ù. socket ÇÔ¼ö°¡ ¼º°øÀûÀ¸·Î ¼öÇàµÇ¸é, »ç¿ë°¡´ÉÇÑ ¼ÒÄÏÀ» °¡¸£Å°´Â ÆÄÀÏ Áö½ÃÀÚ¸¦ µÇµ¹·ÁÁÖ¸ç, ÀÌ ÆÄÀÏÁö½ÃÀÚ´Â endpoint(¿¬°á È®ÀÎ Åë·Î) ·Î½á »ç¿ëµÈ´Ù. 1.4.1.2. bind(2) ÇÔ¼ösocket ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ ¸¸µé¾îÁø ¼ÒÄÏ¿¡ À̸§À» ºÎ¿©ÇÑ´Ù. ¶ó°í ¹ø¿ªµÈ man ÆäÀÌÁöȤÀº °ü·ÃµÈ ¹ø¿ª¼¿¡¼ ¼³¸íÀ» Çϰí ÀÖÁö¸¸, ¼ÒÄÏ¿¡ Ư¼ºÀ» ºÎ¿©(¼ÒÄϰú Ư¼ºÀ» ¹´Â´Ù(bind))ÇÑ´Ù ¶ó´Â°Ô Á»´õ Àû´çÇÑ ¼³¸íÀÌ ¾Æ´Ò±î ½Í´Ù.
bind ÇÔ¼ö´Â º¸Åë ¼¹ö¿¡¼ »ç¿ëµÈ´Ù. ±× ÀÌÀ¯´Â ´ëºÎºÐÀÇ ¼ºñ½º(HTTP, FTP..)µéÀÌ ÁöÁ¤µÈ Æ÷Æ®¹øÈ£¸¦ ÅëÇØ¼ ¼ºñ½º µÇ±â ¶§¹®ÀÌ´Ù. ¹Ý¸é Ŭ¶óÀ̾ðÆ®ÀÇ °æ¿ì Ä¿³Î¿¡¼ ÇÒ´çÇÑ ÀÓÀÇÀÇ Æ÷Æ®¹øÈ£¸¦ ÀÌ¿ëÇØ¼ ¼¹ö¿Í ¿¬°áÇϱ⠶§¹®¿¡ bind ¸¦ »ç¿ëÇÒ Çʿ䰡 ¾ø´Ù. 1.4.1.3. connect(2) ÇÔ¼ö
1.4.1.4. listen(2) ÇÔ¼ö
1.4.1.5. accept(2) ÇÔ¼ö
1.4.2. ÀÔÃâ·Â ÇÔ¼öÀ¯´Ð½º¿¡¼ ¼ÒÄÏÀº ÆÄÀϰú µ¿ÀÏÇÏ°Ô Ãë±Þ µÇ±â ¶§¹®¿¡ read(), write()¿Í°°Àº ½Ã½ºÅÛ ÇÔ¼ö¸¦ ÀÌ¿ëÇØµµ ´ëºÎºÐÀÇ ÀÔÃâ·ÂÀ» ´Ù·ê ¼ö ÀÖ´Ù. ±×·¯³ª ÀÌµé ½Ã½ºÅÛ ÇÔ¼öµéÀº ³×Æ®¿öÅ©ÀÇ Æ¯¼ºÀ» °í·ÁÇÏÁö ¾Ê°í ¸¸µé¾ú±â ¶§¹®¿¡ ³×Æ®¿öÅ© Á¤º¸¸¦ ÇÊ¿ä·Î ÇÏ´Â ÀÛ¾÷À» Çϱ⿡´Â Àû´çÇÏÁö ¾ÊÀº Á¡ÀÌ ÀÖ´Ù. ¿¹¸¦µé¾î UDP¸¦ ÀÌ¿ëÇØ¼ Åë½ÅÀ» ÇÒ°æ¿ì Àбâ´Â ¹®Á¦¾øÁö¸¸ ¾²±â¿¡´Â ¹®Á¦°¡ »ý±æ ¼ö ÀÖ´Ù. UDP´Â ¿¬°á ¼ÒÄÏÀ» ¸¸µéÁö ¾Ê±â ¶§¹®¿¡ ¾µ¶§ ¿¬°áµÈ È£½ºÆ®ÀÇ Á¤º¸¸¦ ¾Ë ¼ö°¡ ¾ø±â ¶§¹®¿¡ write()ÇÔ¼ö·Î´Â µ¥ÀÌÅ͸¦ Àü¼ÛÇÒ ¼ö ¾ø°Ô µÈ´Ù. ÀÌ·²°æ¿ì¿¡´Â ¼ÒÄÏ API¸¦ »ç¿ëÇØ¼ Åë½ÅÀ» ÇØÁÖ¾î¾ß ÇÑ´Ù. 1.4.2.1. ÀÔ·ÂÇÔ¼ö - recvfrom/recvmsg¼ÒÄÏÀ¸·Î ºÎÅÍ µ¥ÀÌÅ͸¦ ¹Þ±â À§Çؼ »ç¿ëÇÑ´Ù.
1.4.2.2. Ãâ·ÂÇÔ¼ö - sendto/sendmsg¼ÒÄÏÀ¸·Î µ¥ÀÌÅ͸¦ º¸³»±â À§Çؼ »ç¿ëÇÑ´Ù.
1.4.3. ÀÎÅÍ³Ý ÁÖ¼Òº¯È¯ÀÎÅÍ³Ý ÁÖ¼Ò ÀÚü°¡ Àΰ£ÀÌ ÀÎÁöÇϱ⠾î·Á¿î ¼ö·Î µÇ¾î ÀÖ´Ù º¸´Ï À̰ÍÀ» °ü¸®Çϱ⠽±µµ·Ï Á¡¹ÚÀÌ 3ÇüÁ¦ ½ºÅ¸ÀÏÀÇ ÀÎÅÍ³Ý ÁÖ¼Òü°è¸¦ ¸¸µé¾î¼ °ü¸®ÇÏ°í ¿©±â¿¡ ¶Ç µµ¸ÞÀÎ À̸§À» Á༠½±°Ô ±â¾ïÇÒ ¼ö ÀÖµµ·Ï Çϰí ÀÖ´Ù. ÇÁ·Î±×·¡¸Ó³ª »ç¿ëÀÚ´Â º¸Åë µµ¸ÞÀÎ À̸§À̳ª Á¡¹ÚÀÌ 3ÇüÁ¦ ½ºÅ¸ÀÏÀÇ ÀÎÅÍ³Ý ÁÖ¼Ò¸¦ »ç¿ëÇÏ°Ô µÇ´Âµ¥, ½ÇÁ¦ ³×Æ®¿öÅ© ÇÁ·Î±×·¥¿¡¼´Â 32bit ÁÖ¼Ò ÇüÅ·Πº¯È¯ ½ÃÄÑÁà¾ßÇÒ Çʿ䰡 ÀÖ´Ù. ¿©±â¿¡¼´Â À̵é ÁÖ¼Ò°£ º¯È¯°ú °ü·ÃµÈ ÇÔ¼ö¸¦ ¼Ò°³ÇÑ´Ù. 1.4.4. ÀÎÅÍ³Ý ÁÖ¼Ò <-> 32bit ÁÖ¼Ò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 ÆäÀÌÁö¸¦ Âü°íÇϱ⠹ٶõ´Ù(±×³É ÇÔ¼ö ¸µÅ©¸¦ Ŭ¸¯ÇÏ¸é µÈ´Ù). 1.4.5. µµ¸ÞÀÎ À̸§ -> 32bit ÁÖ¼ÒÁ¡¹ÚÀÌ 3ÇüÁ¦ ½ºÅ¸ÀÏÀÇ ÀÎÅÍ³Ý ÁÖ¼Ò´Â È®½ÇÈ÷ °ü¸®Çϱâ ÁÁ°í ¿Ü¿ì±â¿¡ Á»´õ ÆíÇϱä ÇÏÁö¸¸ ¼ýÀÚ·Î µÇ¾î ÀÖ´Ù´Â °Í ¶§¹®¿¡ ÀÎÅÍ³Ý ¼ºñ½º¸¦ À§ÇÑ È£½ºÆ® ÁÖ¼Ò·Î »ç¿ëÇϱ⿣ Àû´çÇÏÁö ¾Ê´Ù. ±×·¡¼ ÀÎÅÍ³Ý ÁÖ¼Ò¿¡ À̸§À» ÁÖ´Â ¼ºñ½º°¡ ¸¸µé¾îÁö°Ô µÇ¾ú´Âµ¥ µµ¸ÞÀÎ ¼ºñ½ºÀÌ´Ù. µµ¸ÞÀÎ ¼ºñ½º´Â µµ¸ÞÀÎ À̸§¿¡ ´ëÇÑ ÀÎÅÍ³Ý ÁÖ¼Ò¸¦ µÇµ¹·Á ÁÖ´Â ÀÏÀ» ÇÑ´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº ÀÎÅÍ³Ý ÁÖ¼Ò º¯È¯¹®¼¸¦ Âü°íÇϱ⠹ٶõ´Ù. 1.4.5.1. gethostbyname/gethostbyaddrµµ¸ÞÀÎ À̸§¿¡¼ ÀÎÅÍ³Ý ÁÖ¼Ò¸¦ ¾ò¾î¿À´Â ÀÏÀ» ÇÑ´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº gethostbyname(3)°ú getbyaddr(3)ÀÇ ¸ÇÆäÀÌÁö¸¦ Âü°í Çϱâ¹Ù¶õ´Ù. 1.4.6. ³×Æ®¿öÅ© ¹ÙÀÌÆ® ¿À´õ³×Æ®¿öÅ© Åë½ÅÀ» ÇÏ´Ùº¸¸é CPUÀÇ ¹ÙÀÌÆ® ¿À´õ°¡ ´Ù¸¥ ÀÌÀ¯·Î À̸¦ Ç¥ÁØ ¹ÙÀÌÆ® ¿À´õÀÎ ³×Æ®¿öÅ© ¹ÙÀÌÆ® ¿À´õ·Î º¯È¯Çؼ º¸³»°í, ¹Þ¾ÆµéÀÎ µ¥ÀÌÅʹ ȣ½ºÆ®ÀÇ ¹ÙÀÌÆ® ¿À´õ¿¡ ¸Â°Ô ´Ù½Ã º¯°æ½ÃÄÑÁÖ´Â ÀÛ¾÷ÀÌ ÇÊ¿äÇÏ´Ù. ÀÌ·¯ÇÑ ÀÛ¾÷À» À§Çؼ ¼ÒÄÏÀº ¸î °³ÀÇ ÇÔ¼öµéÀ» Á¦°øÇÑ´Ù. ¹ÙÀÌÆ® ¿À´õ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº endian¿¡ ´ëÇØ¼ ¸¦ Âü°íÇϱ⠹ٶõ´Ù. 1.4.6.1. È£½ºÆ® ¹ÙÀÌÆ® ¿À´õ -> ³×Æ®¿öÅ© ¹ÙÀÌÆ® ¿À´õhtonl(3), htons(3) ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. ÀüÀÚ´Â 4byte µ¥ÀÌÅÍ, ÈÄÀÚ´Â 2byte µ¥ÀÌÅ͸¦ ³×Æ®¿öÅ© ¹ÙÀÌÆ® ¿À´õ¸¦ µû¸£µµ·Ï º¯È¯ÇÑ´Ù. 1.4.6.2. ³×Æ®¿öÅ© ¹ÙÀÌÆ® ¿À´õ -> È£½ºÆ® ¹ÙÀÌÆ® ¿À´õntohl(3), ntohs(3) ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. ÀüÀÚ´Â 4byteµ¥ÀÌÅÍ, ÈÄÀÚ´Â 2byteµ¥ÀÌÅ͸¦ È£½ºÆ® ¹ÙÀÌÆ® ¿À´õ¸¦ µû¸£µµ·Ï º¯È¯ÇÑ´Ù. 1.4.6.3. ¿£µð¾È °Ë»ç ÇÔ¼öÀÌ°Ç º¸³Ê½º´Ù. ÇöÀç CPUÀÇ ¹ÙÀÌÆ® ¿À´õ ¹æ½ÄÀ» ¾Ë·Á ÁÖ´Â °£´ÜÇÑ ÇÔ¼ö´Ù.
2. ¼ÒÄÏ ÇÁ·Î±×·¡¹Ö ÀϹÝ2.1. ¼¹öÃø socket »ý¼º ¼ø¼´ÙÀ½Àº ¼¹öÃøÀÇ ¼ÒÄÏ »ý¼º ¼ø¼¸¦ ³ª¿ÇÑ °ÍÀÌ´Ù.
2.2. Ŭ¶óÀÌ¾ðÆ® Ãø socket »ý¼º¼ø¼´ÙÀ½Àº Ŭ¶óÀ̾ðÆ®ÃøÀÇ ¼ÒÄÏ »ý¼º ¼ø¼¸¦ ³ª¿ÇÑ °ÍÀÌ´Ù. ¼¹öÃø¿¡ ºñÇÏ¿©¼ ÈνŠ°£´ÜÇÏ°Ô ÀÌ·ç¾îÁüÀ» ¾Ë¼ö ÀÖ´Ù.
3. °á·ÐÀÌ»ó Socket Layer ÀÇ °³³ä°ú Socket Layer ¿¡¼ Á¦°øÇÏ´Â Socket API ¿¡ ´ëÇÑ °£´ÜÈ÷ ¾Ë¾Æ º¸¾Ò´Ù. ¿©±â¿¡ ÀÖ´Â API µéÀº °¡Àå ±âº»ÀûÀÎ(Åë½ÅÀ» À§Çؼ ÇÊ¿äÇÑ) ÇÔ¼öµéÀÌ´Ù. ³ª¸ÓÁö Á»´õ ¼¼¹ÐÇÑ ÇÔ¼öµé¿¡ ´ëÇØ¼´Â Unix NetWork Programming µîÀÇ ¼ÀûÀ» Âü°íÇϱ⠹ٶõ´Ù. ¿©±â¿¡ ÀÖ´Â ¼ÒÄÏ API µéÀÇ »ç¿ë¿¹´Â ÀÌ »çÀÌÆ®¿¡¼ ÃæºÐÈ÷ ã¾Æº¼¼ö ÀÖÀ»°ÍÀÌ´Ù. |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|