· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Linuxdoc Sgml/Multicast-HOWTO

Multicast over TCP/IP HOWTO

Multicast over TCP/IP HOWTO

Juan-Mariano de Goyeneche jmseyas@dit.upm.es

v1.0, 20 March 1998 ±èÇöÇÊ khp@kldp.org v0.9, 10 July 2000
ÀÌ ¹®¼­¿¡¼­´Â TCP/IP ³×Æ®¿÷¿¡¼­ ¸ÖƼij½ºÆ®¿Í °ü·ÃµÈ Àü¹ÝÀûÀÎ »çÇ×À» ¼³¸íÇÑ´Ù. µû¶ó¼­ »ó´çºÎºÐ ¸®´ª½º¿¡ ±¹ÇѵǴ ³»¿ëÀÌ ¾Æ´Ï´Ù. (¾ÆÁ÷..GNU/¸®´ª½º¸¦ ¾²Áö ¾ÊÀ» °æ¿ì¿¡¸¸) ¸ÖƼij½ºÆ®´Â Áö±Ý±îÁöµµ È°¹ßÈ÷ ¿¬±¸ÁßÀÎ ºÐ¾ßÀÌ´Ù. µû¶ó¼­ ÀÌ ±ÛÀÇ ÀÛ¼º ½ÃÁ¡¿¡¼­´Â Ç¥ÁØ¾È ´ëºÎºÐÀÌ ÃʾÈ(draft)ÀÏ »ÓÀÌ´Ù. ÀÌÁ¡ ¿°µÎ¿¡ µÎ°í ÀÐÀ¸½Ã±â ¹Ù¶õ´Ù.

1. ¼Ò°³

³ª´Â ÀÌ ¹®¼­¿¡¼­ TCP/IP ³×Æ®¿÷¿¡¼­ ¸ÖƼij½ºÆ®¿¡ ´ëÇØ °¡´ÉÇÑ ÇÑ ±¤¹üÀ§Çϸç ÃÖ½ÅÀÇ ±×¸®°í Á¤È®ÇÑ Á¤º¸¸¦ ´Ù·çµµ·Ï ³ë·ÂÇÒ °ÍÀÌ´Ù. ¿©·¯ºÐÀÇ ¾î¶°ÇÑ ÀÇ°ßÀÌ¶óµµ È¯¿µÇÑ´Ù. ³»¿ë Áß¿¡ ¿À·ù°¡ Àְųª Á¶¾ð ¹× Ãß°¡ÇÒ ³»¿ëÀÌ ÀÖ´Ù¸é ÀúÀÚ¿¡°Ô º¸³»Áֱ⠹ٶõ´Ù.

1.1 ¸ÖƼij½ºÆ®(Multicast)¶õ ¹«¾ùÀΰ¡?

¸ÖƼij½ºÆ®´Â °ð Çʿ伺ÀÌ´Ù. ¸¸ÀÏ ÀÎÅͳݻóÀÇ ¿©·¯-Àüü°¡ ¾Æ´Ñ-È£½ºÆ®¿¡°Ô·Î Àü¼ÛÇؾßÇÒ »ó´çÇÑ·®ÀÇ Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù¸é ¹Ù·Î ¸ÖƼij½ºÆ®°¡ ±× ÇØ´äÀÌ´Ù. ¿¹¸¦ µé¾î, ÀÎÅͳݿ¡ ºÐ»êµÇ¾î È£½ºÆ®µé·Î ¿ø°Ý ȸÀǸ¦ Çϱâ À§ÇØ ½Ç½Ã°£À¸·Î ¿µ»ó°ú À½¼ºÀ» Àü¼ÛÇÏ´Â °æ¿ì, ¸ÖƼij½ºÆ®¸¦ »ç¿ë ÇÒ ¼ö ÀÖ´Ù.

¸ÖƼij½ºÆ®´Â »ç¿ëÀÚ°¡ ÀÚ½ÅÀÇ ¼ö½Å±â¸¦ Á¶Á¤(°ü½É Àִ ä³ÎÀÇ ÁÖÆļö ¼±ÅÃ)ÇÔÀ¸·Î¼­ Á¤º¸¸¦ ¹Þ´Â´Ù´Â Á¡¿¡¼­ TV³ª ¶óµð¿À¿Í À¯»çÇÏ´Ù. ´Ù¸¥ °ÍÀº Á¦Ãĵΰí ÀÚ½ÅÀÌ¿øÇÏ´Â °Í¸¸ ¼ö½ÅÇÑ´Ù.

1.2 À¯´Ïij½ºÆ®(Unicast)ÀÇ ¹®Á¦Á¡

ºê·Îµåij½ºÆ®(Broadcast)µµ ¾Æ´Ï¸ç ¸ÖƼij½ºÆ®µµ ¾Æ´Ñ °ÍÀ» À¯´Ïij½ºÆ®¶ó ÇÑ´Ù. º°·Î ÁÁÁö ¾ÊÀº Á¤ÀÇ °°Àºµ¥...ÆÐŶÀ» Àü¼ÛÇÒ ¶§ ¼Û½Å ÇÁ·Î¼¼½º Çϳª, ¼ö½Å ÇÁ·Î¼¼½º Çϳª°¡ Á¸ÀçÇÒ ¶§ ÀÌ°ÍÀ» À¯´Ïij½ºÆ®¶ó ÇÑ´Ù. TCP´Â ±× ÀÚü°¡ º»ÁúÀûÀ¸·Î À¯´Ïij½ºÆ®¸¦ ÁöÇâÇÑ´Ù. ÇÑÆí, UDP´Â ÈξÀ ´Ù¾çÇÑ Çü½ÄÀ» °¡Áú ¼ö ÀÖÁö¸¸ ¼ö½ÅÇÏ´Â ÇÁ·Î¼¼½º°¡ ´Ü ÇϳªÀÏ ¶§ ÀÌ ¿ª½Ã À¯´Ïij½ºÆ®¶ó ÇÒ ¼ö ÀÖ´Ù.

ÀÎÅÍ³Ý Ãʱ⿡´Â À¯´Ïij½ºÆ®·Î ÃæºÐÇß¾ú´Ù. 1993³â 4.4 BSD¿¡¼­ ÃÖÃÊ·Î ¸ÖƼij½ºÆ®¸¦ ±¸ÇöÇؼ­ ¼¼»ó¿¡ ³»³õ¾ÒÀ» ¶§±îÁö´Â ¾Æ¹«µµ ±×°ÍÀ» ÇÊ¿ä·Î ÇÏ´Â °Í °°Áö ¾Ê¾Ò´Ù. ±×·±µ¥ ¿Ö ¸ÖƼij½ºÆ®¶ó ºÒ¸®´Â °ÍÀÌ ³ª¿À°Ô µÈ °ÍÀϱî?

¸»ÇÒ ÇÊ¿äµµ ¾øÀÌ ÀÎÅͳÝÀº ÃʱâÀÇ ¸ð½ÀÀ¸·ÎºÎÅÍ ¾öû³­ º¯È­¸¦ °Þ¾ú´Ù. ƯÈ÷ À¥ÀÇ µîÀåÀº »óȲÀ» ¿ÏÀüÈ÷ µÚ¹Ù²Ù¾î ³õ¾Ò´Ù. »ç¶÷µéÀº mail, FTP ±× ÀÌ»óÀÇ °ÍÀ», ÀڽŵéÀÇ È¨ÆäÀÌÁö¿¡¼­ ±×¸²À» º¸±â ¿øÇß°í ´õ ³ª¾Æ°¡ À½¼º°ú µ¿¿µ»óÀ» ¿øÇß´Ù.

¿À´Ã³¯ÀÇ ±â¼úÀ̶ó¸é, ´ç½ÅÀÇ À¥À» º¸°íÀÚÇÏ´Â ¸ðµç ÀÌ¿¡°Ô À¯´Ïij½ºÆ® ¿¬°áÀ» ÇÑ´Ù°í Çصµ ÃæºÐÈ÷ ±× "ºñ¿ë(cost)"¸¦ °¨´çÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ À½ÇâÀ̳ª ¿µ»óÀ» º¸³»°íÀÚ ÇÑ´Ù¸é ¾öû³­ ´ë¿ªÆøÀÌ ÇÊ¿äÇÏ´Ù. ¸ÖƼij½ºÆ®¸¦ °í·Á¿¡ ³Ö´Â´Ù¸é µÎ °¡Áö ¼±ÅÃÀÌ ÀÖ´Ù. ¾Æ´Ï, ¸ÖƼij½ºÆ®°¡ µîÀåÇϱâ Àü±îÁö´Â µÎ °¡Áö ¼±ÅÃÀÌ Á¸ÀçÇß¾ú´Ù. À¯´Ïij½ºÆ®¸¦ ÅëÇØ °¢ ¼ö½ÅÀÚº°·Î µ¶¸³µÈ ¿¬°áÀ» ÇÒ °ÍÀΰ¡, ¾Æ´Ï¸é ºê·Îµåij½ºÆ®¸¦ ÇÒ °ÍÀΰ¡.

ÀüÀÚ´Â ºÎÀûÀýÇÏ´Ù. À½¼º/¿µ»óÀÇ ´ÜÀÏ ¿¬°áÁ¶Â÷µµ »ó´çÇÑ ´ë¿ªÆøÀ» Â÷ÁöÇÒ ÅÍÀε¥ ÀÌ·¯ÇÑ ¿¬°áÀÌ ¼ö¹é ¶Ç´Â ¼öõÀ̶ó°í »ó»óÇØ º¸¶ó. ¾Æ¸¶µµ ´ç½ÅÀÇ ÄÄÇ»ÅÍ¿Í ³×Æ®¿÷Àº ºØ±«ÇÏ°í ¸» °ÍÀÌ´Ù.

ºê·Îµåij½ºÆ®°¡ ÇØ´äÀÎ µí ÇÏÁö¸¸ ±×°Íµµ È®½ÅÇÒ ¼ö°¡ ¾ø´Ù. ¿ì¸® LAN¿¡ ÀÖ´Â ¸ðµç È£½ºÆ®°¡ ȸÀÇ¿¡ Âü¼®ÇÑ´Ù¸é ºê·Îµåij½ºÆ®°¡ È®½ÇÈ÷ ÇØ´äÀÌ µÉ ¼ö ÀÖ´Ù. ¸ðµç ÆÐŶÀº Çѹø¾¿¸¸ Àü¼ÛµÇ¸ç ´Ù¸¥ ¸ðµç È£½ºÆ®´Â ºê·Îµåij½ºÆ® ÁÖ¼Ò¸¦ ÅëÇØ ÆÐŶÀ» ¼ö½ÅÇÒ °ÍÀÌ´Ù. ÇÏÁö¸¸, ¹®Á¦´Â ÀϺΠȣ½ºÆ®¸¸ÀÌ ÀÌ ÆÐŶ¿¡ ¼ö½ÅÇÏ·ÁÇÒ °æ¿ì´Ù. °Ô´Ù°¡, Á¤¸»·Î ȸÀÇ¿¡ Âü¿©ÇÏ°íÀÚÇÏ´Â ´Ü ÇϳªÀÇ È£½ºÆ®°¡ ¸î °³ÀÇ ¶ó¿ìÅ͸¦ °ÅÃÄ¾ß µµ´Þ ÇÒ ¼ö ÀÖ´Â ¿ÜºÎ LAN¿¡ Á¸ÀçÇÑ´Ù¸é ¾î·Á¿î ¹®Á¦°¡ µÈ´Ù. ¾Ë´Ù½ÃÇÇ, ºê·Îµåij½ºÆ®´Â ´ÜÀÏ LAN ³»ºÎ¿¡¼­¸¸ °¡´ÉÇѵ¥, ºê·Îµåij½ºÆ® ÆÐŶÀ» ¶ó¿ìÆÃÇÏ¿© ¿ÜºÎ LAN¿¡ Àü´ÞÇÒ ¹æ¹ýÀÌ ¾ø´Ù.

ÃÖ¼±ÀÇ ÇØ°áÃ¥Àº ÆÐŶÀ» -¸¶Ä¡ TV³ª ¶óµð¿À ä³Îó·³-ÀϺΠƯÁ¤ÇÑ Áּҷθ¸ º¸³»´Â °ÍÀÌ´Ù. ±×·¯¸é ȸÀÇ¿¡ Âü¿©ÇÏ°íÀÚÇÏ´Â ¸ðµç È£½ºÆ®´Â ÀÌ ÆÐŶÀÌ ³×Æ®¿÷À» Åë°úÇÒ ¶§, ¸ñÀûÁö ÁÖ¼Ò(destination address)¸¦ °¨ÁöÇÏ¿© ÀоîµéÀÎ ÈÄ ÀÚ½ÅÀÇ IP°èÃþ(layer)À¸·Î º¸³»¾î º¹È£È­(demultiplexing)ÇÑ´Ù. Áï, ¸ÖƼij½ºÆ®´Â ÆÐŶÀÌ ´Ü Çѹø¸¸ ¼Û½ÅµÇ¾î¼­ ³×Æ®¿÷ÀÇ ¸ðµç È£½ºÆ®µéÀÌ ±×°ÍÀ» Àд´ٴ Á¡¿¡¼­´Â ºê·Îµåij½ºÆ®¿Í °°Áö¸¸, ÀÌ ÆÐŶµéÀÌ ¿ÀÁ÷ Ä¿³Î(kernel)¿¡¼­ ¿øÇÒ °æ¿ì¿¡¸¸ Àаí ó¸®ÇÑ´Ù´Â Á¡¿¡¼­ ºê·Îµåij½ºÆ®¿Í ´Ù¸£´Ù.

ÀÌ Æ¯º°ÇÑ ÆÐŶµéÀº IP ÆÐŶÀ̱⠶§¹®¿¡ Ä¿³Î ¼öÁØ(kernel level)¿¡¼­ ¶ó¿ìÆÃÇÑ´Ù. Ä¿³Î¿¡ ¶ó¿ìÆà °æ·Î¸¦ ¾Ë·ÁÁÖ´Â ¶ó¿ìÆà ¾Ë°í¸®Áò¿¡ Â÷ÀÌÁ¡ÀÌ ÀÖÀ» °ÍÀÌ´Ù.

2. ¸ÖƼij½ºÆ®

2.1 Multicast ÁÖ¼Ò

IP ÁÖ¼Ò´Â 32ºñÆ® Áß¿¡¼­ »óÀ§ ºñÆ®µé¿¡ ÀÇÇؼ­ Ŭ·¡½º(class)·Î ºÐ·ùµÈ´Ù.

     Bit -->  0                           31            Address Range:
             +-+----------------------------+
             |0|       Class A Address      |       0.0.0.0 - 127.255.255.255
             +-+----------------------------+
             +-+-+--------------------------+
             |1 0|     Class B Address      |     128.0.0.0 - 191.255.255.255
             +-+-+--------------------------+
             +-+-+-+------------------------+
             |1 1 0|   Class C Address      |     192.0.0.0 - 223.255.255.255
             +-+-+-+------------------------+
             +-+-+-+-+----------------------+
             |1 1 1 0|  MULTICAST Address   |     224.0.0.0 - 239.255.255.255
             +-+-+-+-+----------------------+
             +-+-+-+-+-+--------------------+
             |1 1 1 1 0|     Reserved       |     240.0.0.0 - 247.255.255.255
             +-+-+-+-+-+--------------------+

¿ì¸®°¡ ÁÖÀÇ ±í°Ô ÇÒ °ÍÀº "D Ŭ·¡½º ÁÖ¼Ò"´Ù. ¸ñÀûÁö ÁÖ¼Ò°¡ "1110"À¸·Î ½ÃÀÛÇÏ´Â IP µ¥ÀÌÅͱ׷¥Àº ¸ÖƼij½ºÆ® µ¥ÀÌÅͱ׷¥ÀÌ´Ù.

³ª¸ÓÁö 28ºñÆ®´Â ¼Û½ÅÇÒ µ¥ÀÌÅͱ׷¥ÀÇ ¸ÖƼij½ºÆ®±×·ìÀ» ±¸ºÐÇϴµ¥ ¾²ÀδÙ. ¹æ¼ÛÀ» µè±â À§ÇØ ¶óµð¿À¸¦ ¾î¶² ÁÖÆļö¿¡ ¸ÂÃß´Â °Í°ú À¯»çÇÏ°Ô Æ¯Á¤ÇÑ ¸ÖƼij½ºÆ® ±×·ìÀ¸·Î Àü¼ÛµÇ¾î¿À´Â ÆÐŶÀ» ¼ö½ÅÇϱâ À§Çؼ­ ¿ì¸®ÀÇ Ä¿³ÎÀ» ƯÁ¤ÇÑ ±×·ì¿¡ ¸ÂÃß¾î¾ß ÇÑ´Ù. ÀÌ °úÁ¤ÀÌ ÀÌ·ç¾î Á³À» ¶§, È£½ºÆ®°¡, ÁöÁ¤ÇÑ ÀÎÅÍÆäÀ̽º¸¦ ÅëÇØ ±×·ì¿¡ Âü¿©Çß´Ù°í ÇÒ ¼ö ÀÖ´Ù. ÈÄ¿¡ ´õ ÀÚ¼¼È÷ ´Ù·ê °ÍÀÌ´Ù.

¿¹¾àµÈ ¸ÖƼij½ºÆ® ±×·ì(well known multicast groups)À̶ó ºÒ¸®´Â Ưº°ÇÑ ±×·ìµéÀÌ Àִµ¥ ÀÌ·¯ÇÑ ±×·ìÀº ´ÙÀ½°ú °°Àº Ư¼öÇÑ ¿ëµµ·Î ¾²À̱⠶§¹®¿¡ °³ÀÎÀûÀÎ ÇÁ·Î±×·¥ Á¦ÀÛ ½Ã¿¡ »ç¿ëÇÒ ¼ö ¾ø´Ù.

  • 224.0.0.1 Àº Àüü È£½ºÆ® ±×·ìÀÌ´Ù. ¸ÖƼij½ºÆ® ÀÎÅÍÆäÀ̽º´Â ½Ãµ¿½Ã ÀÌ ±×·ì¿¡ Âü¿©ÇؾßÇϹǷΠÀÌ ÁÖ¼Ò·Î pingÀ» º¸³»¸é ¸ðµç ¸ÖƼij½ºÆ® È£½ºÆ®µéÀÌ ÀÀ´äÇÒ °ÍÀÌ´Ù.
  • 224.0.0.2 Àº Àüü ¶ó¿ìÅÍ ±×·ìÀÌ´Ù.
  • 224.0.0.4 Àº Àüü DVMRP ¶ó¿ìÅÍ ±×·ìÀÌ´Ù.
  • 224.0.0.5 Àº Àüü OSPF ¶ó¿ìÅÍ ±×·ìÀÌ´Ù.
  • 224.0.013 Àº Àüü PIM ¶ó¿ìÅÍ ±×·ìÀÌ´Ù.
  • ...

ÀÌ Æ¯¼ö ±×·ìµéÀº ¸ðµÎ RFC¹®¼­ "Assigned Numbers"¿¡ Á¤±âÀûÀ¸·Î µî·ÏµÈ´Ù.

¾î¶°ÇÑ °æ¿ìµçÁö, 224.0.0.0¿¡¼­ 224.0.0.225ÀÇ ¹üÀ§´Â Áö¿ªÀûÀÎ ¸ñÀû(°ü¸®³ª À¯Áö/º¸¼ö)À» À§ÇØ ¿¹¾àµÇ¾î ÀÖÀ¸¸ç ¸ÖƼij½ºÆ® ¶ó¿ìÅ͵鵵 ÀÌ ¹üÀ§ ³»ÀÇ ÁÖ¼Ò·Î ¸ñÀûÁö·Î ÇÏ´Â µ¥ÀÌÅͱ׷¥Àº Æ÷¿öµùÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. ÀÌ¿Í À¯»çÇÏ°Ô 239.0.0.0¿¡¼­ 239.255.255.255ÀÇ ¹üÀ§´Â"administrative scoping"À» À§ÇÏ¿© ¿¹¾àµÇ¾î ÀÖ´Ù. ("administrative scoping")¿¡ °üÇؼ­´Â 2.3.1À» ÂüÁ¶ÇÒ °Í).

2.2 ÀûÀÀ ´Ü°è(Levels of Conformance)

È£½ºÆ®°¡ ¸¸Á·ÇؾßÇÏ´Â ¸ÖƼij½ºÆ® ±Ô°Ý¿¡´Â ¼¼ °¡Áö ÀûÀÀ ´Ü°è°¡ ÀÖ´Ù.

Level 0 : the no support for IP Multicasting IPv4¿¡¼­´Â ¸ÖƼij½ºÆ®°¡ Àǹ«ÀûÀ¸·Î ±¸ÇöÇؾßÇÏ´Â °ÍÀÌ ¾Æ´Ï±â ¶§¹®¿¡ ÀÎÅͳݿ¡ ÀÖ´Â ¸¹Àº È£½ºÆ®¿Í ¶ó¿ìÅ͵éÀº Level 0 »óÅ¿¡ ÀÖ´Ù. (ÇÏÁö¸¸ IPv6¿¡¼­´Â Àǹ«ÀûÀ¸·Î ¸ÖƼij½ºÆ®¸¦ Áö¿øÇϵµ·Ï ÇÏ°í ÀÖ´Ù.) ´õ ÀÌ»ó ¼³¸íÀº ÇÊ¿ä ¾ø´Ù. ÀÌ »óÅ¿¡ Àִ ȣ½ºÆ®´Â ¸ÖƼij½ºÆ® ÆÐŶÀ» º¸³»°Å³ª ¹ÞÀ» ¼ö ¾øÀ¸¸ç, ¸ÖƼij½ºÆ® ÆÐŶÀ» ¿ÏÀüÈ÷ ¹«½ÃÇÑ´Ù.

Level 1 : the support for sending but not receiving multicast IP datagrams µû¶ó¼­, µ¥ÀÌÅͱ׷¥À» º¸³»±â À§Çؼ­ ¸ÖƼij½ºÆ® ±×·ì¿¡ °¡ÀÔÇÒ ÇÊ¿ä´Â ¾ø´Ù. Level 0 È£½ºÆ®¸¦ Level 1 ȣȯ »óÅ·Π¸¸µé±â À§Çؼ­´Â IP ¸ðµâÀ» ¾à°£ º¯°æÇØ¾ß ÇÑ´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº 2.3¿¡¼­ ´Ù·é´Ù.

Level 2 : the full support for IP multicasting Level 2 È£½ºÆ®´Â ¸ÖƼij½ºÆ® µ¥ÀÌÅͱ׷¥ ¼Û½Å°ú ¼ö½ÅÀÌ °¡´ÉÇØ¾ß ÇÑ´Ù. ¶Ç, ¸ÖƼij½ºÆ® ±×·ì¿¡ Âü°¡ÇÏ°í Å»ÅðÇÒ ¼ö ÀÖ¾î¾ß ÇÏ¸ç »õ·Î °»½ÅµÈ ¸ÖƼij½ºÆ® Á¤º¸¸¦ ¶ó¿ìÅÍ¿¡ ¾Ë ¸± ¼ö ÀÖ¾î¾ß ÇÑ´Ù. µû¶ó¼­, È£½ºÆ®ÀÇ TCP/IP ½ºÅÿ¡ ÀÎÅÍ³Ý ±×·ì°ü¸® ÇÁ·ÎÅäÄÝ Internet Group Management Protocol (IGMP) ÀÌ ±¸ÇöµÇ¾î ÀÖ¾î¾ß ÇÑ´Ù.

2.3 ¸ÖƼij½ºÆ® µ¥ÀÌÅͱ׷¥ Àü¼Û

ÀÌ»óÀ¸·Î ¹Ì·ç¾îº¸¾Æ, ¸ÖƼij½ºÆ® Æ®·¡ÇÈÀº UDP·Î Æ®·£½ºÆ÷Æ® °èÃþ¿¡¼­ ó¸®ÇÏ´Â °ÍÀÌ ºÐ¸íÇÏ´Ù. TCP´Â Á¡´ëÁ¡(point-to-point)¿¬°áÀ» Á¦°øÇÏ´Â °ÍÀ̹ǷΠ¸ÖƼij½ºÆ® Æ®·¡ÇÈ¿¡ ÀûÇÕÇÏÁö ¾Ê´Ù. (»õ·Î¿î ¸ÖƼij½ºÆ® ÁöÇâ Æ®·£½ºÆ÷Æ® ÇÁ·ÎÅäÄÝ ¼³°è¿Í ±¸Çö¿¡ ´ëÇÑ ¿¬±¸°¡ È°¹ßÈ÷ ÁøÇàÁßÀÌ´Ù. 9Àå "¸ÖƼij½ºÆ® Æ®·£½ºÆ÷Æ® ÇÁ·ÎÅäÄÝ"À» ÂüÁ¶ÇÒ °Í)

À̷лó, ÀÀ¿ëÇÁ·Î±×·¥¿¡¼­ ´ÜÁö UDP ¼ÒÄÏÀ» ¿­°í class D ¸ÖƼij½ºÆ® ÁÖ¼Ò¸¦ ¸ñÀûÁö·Î ÇÏ´Â µ¥ÀÌÅͱ׷¥À» ºÎ¾î³Ö±â¸¸ ÇÏ¸é µÈ´Ù. ±×·¸Áö¸¸, ¼Û½Å ÇÁ·Î¼¼½º°¡ ÅëÁ¦±ÇÀ» °¡Áö±â À§Çؼ­ ÇØÁÖ¾î¾ß ÇÒ ÀÛ¾÷ÀÌ ÀÖ´Ù.

TTL.

IP Çì´õÀÇ TTL(Time To Live) Çʵå´Â ¸ÖƼij½ºÆ®¿¡¼­ Áß¿äÇÑ Àǹ̸¦ °¡Áø´Ù. ÀÌ Çʵå´Â ¶ó¿ìÆà ¿¡·¯·Î ÀÎÇÏ¿© µ¥ÀÌÅͱ׷¥ÀÌ ³×Æ®¿÷À» ¿µ¿øÈ÷ ¶°µ¹¾Æ´Ù´Ï´Â °ÍÀ» ¹æÁöÇÑ´Ù. ¶ó¿ìÅÍ´Â ³×Æ®¿÷°£À» À̵¿ÇÏ´Â µ¥ÀÌÅͱ׷¥ÀÇ TTL Çʵ带 °¨¼Ò½ÃÅ°¸ç TTL Çʵ尡 0ÀÌ µÇ´Â µ¥ÀÌÅͱ׷¥Àº ¹ö¸°´Ù(drop). IPv4 ¸ÖƼij½ºÆ®¿¡¼­ TTLÀº ¹®Åΰª(threshold)ÀÇ Àǹ̸¦ Áö´Ñ´Ù. ´ÙÀ½ ¿¹¸¦ º¸¸é ±× ¿ëµµ°¡ ºÐ¸íÇØÁø´Ù.

¿ì¸® ºÎ¼­ÀÇ ¸ðµç È£½ºÆ®°¡ ¼ÓÇÏ´Â ¾ÆÁÖ ±æ°í ´ë¿ªÆøÀ» ¸¹ÀÌ Â÷ÁöÇÏ´Â ¿µ»óȸÀǸ¦ ÇÑ´Ù°í °¡Á¤ÇÏÀÚ. ¿ì¸®ÀÇ LAN¿¡´Â ¾öû³­ ¿ë·®ÀÇ Æ®·¡ÇÈÀÌ ¹ß»ýÇÒ °ÍÀ̸ç, ¾Æ¸¶ ¿ì¸® ºÎ¼­´Â ´Ù¾çÇÑ LANÀÌ Á¸ÀçÇÏ´Â Å« ³×Æ®¿÷ÀÏ °ÍÀÌ´Ù. ÀÌ °æ¿ì ¿ì¸®´Â LANÀ» ÅëÇÏ¿© ȸÀǸ¦ ¿­±â ¿øÇÏÁö¸¸, ¿ì¸®ÀÇ ¸ÖƼij½ºÆ® Æ®·¡ÇÈ ¶§¹®¿¡ ÀÎÅÍ³Ý Àüü°¡ ºØ±«µÇ´Â °ÍÀ» ¿øÄ¡ ¾ÊÀ» °ÍÀÌ´Ù. µû¶ó¼­, ¸ÖƼij½ºÆ® Æ®·¡ÇÈÀÌ ¶ó¿ìÅÍ°£À» ¾ó¸¶³ª ¸Ö¸®À̵¿ÇÒ ¼ö ÀÖµµ·Ï ÇÒ °ÍÀÎÁö Á¦ÇÑÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ÀÌ°ÍÀÌ TTLÀÇ ¿ëµµÀÌ´Ù.

¶ó¿ìÅÍ´Â °¢°¢ÀÇ ÀÎÅÍÆäÀ̽º¿¡ ´ëÇØ TTL ¹®ÅÎÄ¡(threshold)°¡ ÇÒ´çÇÏ°í ÀÖÀ¸¸ç ÀÌ ¹®ÅÎÄ¡º¸´Ù Å« TTL°ªÀ» °¡Áø µ¥ÀÌÅͱ׷¥¸¸ÀÌ Æ÷¿öµùµÈ´Ù. µ¥ÀÌÅͱ׷¥ÀÌ, ¾î¶² ¹®ÅÎÄ¡°¡ ÇÒ´çµÇ¾îÀÖ´Â ¶ó¿ìÅ͸¦ Áö³¯ ¶§, TTL°ªÀÌ ¹®ÅÎÄ¡¸¸Å­ °¨¼ÒµÇ´Â °ÍÀÌ ¾Æ´Ï¶ó´Â Á¡¿¡ ÁÖÀÇÇ϶ó. ¿ÀÁ÷ ºñ±³¸¸ÀÌ ÀÌ·ç¾îÁø´Ù (¾Õ¿¡¼­ ¾ð±ÞÇßµíÀÌ TTLÀº µ¥ÀÌÅͱ׷¥ÀÌ ¶ó¿ìÅ͸¦ Áö³¯ ¶§¸¶´Ù 1¾¿¸¸ °¨¼ÒµÈ´Ù).

´ÙÀ½ ¸®½ºÆ®¿¡ TTL¹®ÅÎÄ¡¿Í ±×¿¡ ÇØ´çµÇ´Â ¹üÀ§°¡ Ç¥½ÃµÇ¾î ÀÖ´Ù.

  ----------------------------------------------------------------------
  TTL     Scope
  ----------------------------------------------------------------------
     0    È£½ºÆ® ³»ºÎ·Î Á¦ÇÑ. ÀÎÅÍÆäÀ̽º·Î Ãâ·ÂµÇÁö ¾ÊÀ½.
     1    µ¿ÀÏ ¼­ºê³ÝÀ¸·Î Á¦ÇÑ. ¶ó¿ìÅÍ´Â Æ÷¿öµùÇÏÁö ¾ÊÀ½.
   <32    µ¿ÀÏ »çÀÌÆ®(site), ´Üü³ª ºÎ¼­·Î Á¦ÇÑ.
   <64    µ¿ÀÏ Áö¿ª(region)À¸·Î Á¦ÇÑ.
  <128    µ¿ÀÏ ´ë·úÀ¸·Î Á¦ÇÑ.
  <255    ¹«Á¦ÇÑ. Àü¼¼°è.
  ----------------------------------------------------------------------

"»çÀÌÆ®(site)" ³ª "Áö¿ª(region)" ¿¡ ´ëÇÑ Á¤È®ÇÑ Á¤ÀÇ´Â ¾ø´Ù. ±×°ÍÀº ÀÌ Á¦ÇÑÀ» °¡ÇÒ °ü¸®ÀÚ¿¡°Ô ´Þ·ÁÀÖ´Ù.

ÀÌ TTL±â¹ýÀº ¸ðµç ¿ä±¸¿¡ ºÎÀÀÇÒ ¸¸Å­ À¯¿¬¼ºÀ» Á¦°øÇÏÁö ¸øÇϸç, ƯÈ÷ °ãÃÄÁö´Â Áö¿ª(overlapping regions)À» ´Ù·ç°Å³ª Áö¸®Àû(geographic)À̰ųª À§»óÀû(topologic)ÀûÀÎ ±×¸®°í ´ë¿ªÆø Á¦ÇÑÀûÀÎ ¿¬°á¿¡´Â ÀûÇÕÇÏÁö ¾Ê´Ù. ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇÏ¿© 1994³â administratively scoped IPv4 multicast regions ÀÌ Á¦Á¤µÇ¾ú´Ù (D. Meyer's "Administratively Scoped IP Multicast" Internet draft ÂüÁ¶). ÀÌ°ÍÀº TTLÀ» ÀÌ¿ëÇÏÁö ¾Ê°í IP ÁÖ¼Ò¸¦ ÀÌ¿ëÇÏ¿© ¹üÀ§Á¦ÇÑ(scoping)À» °¡ÇÑ´Ù. 239.0.0.0 ¿¡¼­ 239.255.255.255±îÁöÀÇ IPÁÖ¼Ò°¡ ÀÌ °ü¸®¿ë ¹üÀ§Á¦ÇÑÀ» À§ÇØ ¿¹¾àµÇ¾î ÀÖ´Ù.

·çÇÁ¹é(Loopback)

Àü¼Û È£½ºÆ®°¡ Level 2 ÀûÀÀ ´Ü°è¿¡ ÀÖÀ¸¸ç µ¥ÀÌÅͱ׷¥À» Àü¼ÛÇÏ´Â ±×·ìÀÇ ¸â¹ö·Î Âü¿©ÇÏ°í ÀÖÀ» ¶§, ÆÐŶ º¹»çº»ÀÌ ·çÇÁ¹é µÈ´Ù. ÀÌ°ÍÀº ³×Æ®¿÷ ÀÎÅÍÆäÀ̽º Ä«µå°¡ ÇØ´ç ³×Æ®¿÷ ÀÎÅÍÆäÀ̽º°¡ ÀÚ½ÅÀÌ ³×Æ®¿÷À¸·Î Àü¼ÛÇÑ ÆÐŶÀ» ³×Æ®¿÷À¸·ÎºÎÅÍ ´Ù½Ã Àоî¿Â´Ù´Â °ÍÀÌ ¾Æ´Ï¶ó, IP °èÃþÀÌ µ¥ÀÌÅͱ׷¥À» ÀνÄÇÏ¿© Àü¼Û Àü¿¡ ÆÐŶÀ» IP ÀԷ ť¿¡ º¹»çÇØ ³Ö´Â °ÍÀ» ÀǹÌÇϸç ÀÌ ±â´ÉÀº ±âº» °ª(default)À¸·Î ¼³Á¤µÇ¾î ÀÖ´Ù.

ÀÌ·¯ÇÑ ±â´ÉÀº ÇÊ¿äÇÑ °æ¿ìµµ ÀÖ°í ±×·¸Áö ¾ÊÀ» °æ¿ìµµ ÀÖ´Ù. µû¶ó¼­ Àü¼Û ÇÁ·Î¼¼½º´Â ÀÌ ±â´ÉÀ» ¿øÇÑ´Ù¸é ÄѰųª ²ø ¼ö ÀÖ´Ù.

ÀÎÅÍÆäÀ̽º ¼±ÅÃ

´Ù¼öÀÇ ³×Æ®¿÷ ÀÎÅÍÆäÀ̽º°¡ ºÎÂøµÇ¾î Àִ ȣ½ºÆ®¿¡¼­´Â ÀÀ¿ë ÇÁ·Î±×·¥À¸·Î ÇÏ¿©±Ý ¾î¶² ÀÎÅÍÆäÀ̽º·Î Àü¼ÛÀ» Ãâ·ÂÇؾßÇÏ´ÂÁö °áÁ¤ÇÒ ¼ö ÀÖµµ·Ï ÇØ ÁÖ¾î¾ßÇÑ´Ù. ¸¸ÀÏ ÁöÁ¤ °ªÀÌ ¾ø´Ù¸é Ä¿³ÎÀÌ °ü¸®ÀÚÀÇ ¼³Á¤¿¡ ±âÃÊÇÏ¿© ±âº» °ªÀ» Á¤ÇÑ´Ù.

2.4 ¸ÖƼij½ºÆ® µ¥ÀÌÅͱ׷¥ ¼ö½Å

¸ÖƼij½ºÆ® ±×·ì Âü¿©(Join)

ºê·Îµåij½ºÆ®´Â ¸ÖƼij½ºÆ®º¸´Ù ºñ±³Àû ±¸ÇöÇϱ⠽±´Ù. ºê·Îµåij½ºÆ®´Â Ä¿³Î¿¡ ÆÐŶ ó¸® ±ÔÄ¢À» Ãß°¡·Î ¾Ë·ÁÁÙ ÇÊ¿ä°¡ ¾ø´Ù. Ä¿³ÎÀº ºê·Îµåij½ºÆ® ÆÐŶÀ» Àаí ÀûÀýÇÑ ÀÀ¿ëÇÁ·Î±×·¥À¸·Î Àü´ÞÇÏ´Â ¹æ¹ýÀ» ¾Ë°í ÀÖ´Ù.

±×·¯³ª ¸ÖƼij½ºÆ®¿¡¼­´Â ¿ì¸®°¡ ¾î¶² ±×·ì¿¡ °ü½ÉÀÌ ÀÖ´ÂÁö Ä¿³Î¿¡ ¾Ë·ÁÁÙ ÇÊ¿ä°¡ ÀÖ´Ù. Áï, Ä¿³Î¿¡ ¾î¶² ±×·ì¿¡ "Âü¿©(join)@quot;Çϵµ·Ï ¿äûÇØ¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù. Çϵå¿þ¾î¿¡ µû¶ó, ¸ÖƼij½ºÆ® µ¥ÀÌÅͱ׷¥À» Çϵå¿þ¾î°¡ Á÷Á¢ ÇÊÅ͸µÇϰųª ¾Æ´Ï¸é IP °èÃþ¿¡¼­ ÇÏ´Â °æ¿ìµµ ÀÖ´Ù. ¾î¶² °æ¿ì¿¡´Â ¾çÂÊ ¸ðµÎ¿¡¼­ ÀÌ·ç¾îÁö±âµµ ÇÑ´Ù. ¿ÀÁ÷ "Âü¿© (join)"¸¦ ÅëÇؼ­ µî·ÏµÈ ±×·ì¸¸ÀÌ ¹Þ¾Æµé¿©Áø´Ù.

º»ÁúÀûÀ¸·Î ¿ì¸®°¡ ±×·ì¿¡ Âü¿©ÇÑ´Ù´Â °ÍÀº Ä¿³Î¿¡°Ô ´ÙÀ½°ú °°Àº À̾߱⸦ ÇÏ´Â °ÍÀ» ÀǹÌÇÑ´Ù. " ±âº» ¼³Á¤À¸·Î ¸ÖƼij½ºÆ® µ¥ÀÌÅͱ׷¥À» ó¸®ÇÏÁö ¾Ê´Â´Ù´Â °ÍÀ» ¾Ë°í ÀÖÁö¸¸, ³»°¡ ÀÌ ¸ÖƼij½ºÆ® ±×·ì¿¡ Âü¿©ÇÏ°íÀÚ ÇÑ´Ù´Â Á¡À» ±â¾ïÇØÁֱ⠹ٶõ´Ù. ±×·¯´Ï ÀÌ ³×Æ®¿÷ ÀÎÅÍÆäÀ̽º¿¡¼­ º¸ÀÌ´Â ÆÐŶ°¡¿îµ¥, ÀÌ ¸ÖƼij½ºÆ® ±×·ì ÁÖ¼Ò¸¦ ¸ñÀûÁö Çʵ忡 Æ÷ÇÔÇÏ°í ÀÖ´Â ¸ÖƼij½ºÆ® µ¥ÀÌÅͱ׷¥À» Àаí (³ª»Ó¸¸ ¾Æ´Ï¶ó ±×°Í¿¡ °ü½ÉÀ» °¡Áö°í ÀÖ´Â ¸ðµç) ÇÁ·Î¼¼½º¿¡°Ô Àü´ÞÇØ Áֱ⠹ٶõ´Ù. ".

°í·ÁÇÒ °Í : ¿ì¼± ±×·ì¿¡ ´ÜÁö Âü¿©¸¸ ÇÏ´Â °ÍÀÌ ¸ðµç°Ô ¾Æ´Ï¶ó´Â Á¡À» ÁÖ¸ñÇ϶ó. ¿ì¸®´Â ƯÁ¤ÇÑ ³×Æ®¿÷ ÀÎÅÍÆäÀ̽º »ó¿¡¼­ ±×·ì¿¡ Âü¿©ÇÑ´Ù. ¹°·Ð, Çϳª ÀÌ»óÀÇ ÀÎÅÍÆäÀ̽º·Î °°Àº ±×·ì¿¡ Âü¿©ÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù. ¸¸ÀÏ ÀÎÅÍÆäÀ̽º¸¦ È®½ÇÈ÷ ÁöÁ¤ÇÏÁö ¾Ê´Â´Ù¸é µ¥ÀÌÅͱ׷¥ÀÌ Àü¼ÛµÉ ¶§ ¶ó¿ìÆà Å×ÀÌºí¿¡ ÀÇ°ÅÇÏ¿© Ä¿³ÎÀÌ ÁöÁ¤ÇÒ °ÍÀÌ´Ù. ¶ÇÇÑ, Çϳª ÀÌ»óÀÇ ÇÁ·Î¼¼½º°¡ µ¿ÀÏÇÑ ÀÎÅÍÆäÀ̽º·Î µ¿ÀÏÇÑ ¸ÖƼij½ºÆ® ±×·ì¿¡ Âü¿©ÇÏ´Â °Íµµ °¡´ÉÇÏ´Ù. ¸ðµç ÇÁ·Î¼¼½ºµéÀº ÇØ´ç ÀÎÅÍÆäÀ̽º·Î º¸³»Áö´Â µ¥ÀÌÅͱ׷¥À» ¼ö½ÅÇÑ´Ù.

Àü¿¡ ¾ð±ÞÇßµíÀÌ, ¸ðµç ¸ÖƼij½ºÆ® È£½ºÆ®µéÀº ½Ãµ¿½Ã¿¡ Àüü È£½ºÆ® ±×·ì¿¡ Âü¿©Çϱ⠶§¹®¿¡ 224.0.0.1 ·Î pingÀ» º¸³»¸é ³×Æ®¿÷ ³»¿¡¼­ ¸ðµç È£½ºÆ®µéÀÌ ÀÀ´äÀ» º¸³¾ °ÍÀÌ´Ù.

³¡À¸·Î, ÇÁ·Î¼¼½º°¡ ¸ÖƼij½ºÆ® µ¥ÀÌÅͱ׷¥À» ¹Þ±â À§Çؼ­´Â , Ä¿³Î¿¡°Ô, ±×·ì¿¡ Âü¿©ÇÑ ÈÄ µ¥ÀÌÅͱ׷¥À» ¼Û½ÅÇÏ´Â Æ÷Æ®¸¦ ¹­µµ·Ï(bind) ¿äûÇØ¾ß ÇÑ´Ù. UDP °èÃþÀº ÆÐŶÀ» Çؼ®(demultiplex)Çϱâ À§ÇØ ¸ñÀûÁö ÁÖ¼Ò¿Í Æ÷Æ®¹øÈ£¸¦ °°ÀÌ »ç¿ëÇÏ¸ç ¾î¶² ¼ÒÄÏÀ¸·Î ȤÀº ¾î¶² ¼ÒÄϵé·Î ÆÐŶÀ» º¸³¾Áö °áÁ¤ÇÑ´Ù.

¸ÖƼij½ºÆ® Group Å»Åð

ÇÁ·Î¼¼½º°¡ ¸ÖƼij½ºÆ® ±×·ìÀ» ¶°³¯ ¶§´Â Ä¿³Î¿¡ ±× ±×·ìÀ» ¶°³ª°íÀÚ ÇÑ´Ù°í ¾Ë¸°´Ù. ÀÌ°ÍÀÌ Ä¿³ÎÀÌ ±× ±×·ìÀ¸·Î ¿À´Â ¸ÖƼij½ºÆ® µ¥ÀÌÅͱ׷¥À» ´õ ÀÌ»ó ¹ÞÁö ¾ÊÀ½À» ÀǹÌÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó´Â Á¡À» ÀÌÇØÇØ¾ß ÇÑ´Ù. ¸¸ÀÏ "multicast join" ½ÅûÀ» Á¦ÃâÇÑ ÇÁ·Î¼¼½º°¡ ´õ ÀÖ°í ±× ±×·ì¿¡ ¿©ÀüÈ÷ °ü½ÉÀ» °¡Áö°í ÀÖ´Â »óŶó¸é Ä¿³ÎÀº ¿©ÀüÈ÷ ÆÐŶÀ» ¼ö½ÅÇÒ °ÍÀÌ´Ù. ÀÌ·¯ÇÑ °æ¿ì È£½ºÆ®´Â ¸ðµç ÇÁ·Î¼¼½º°¡ ±× ±×·ìÀ» ¶°³ª±â·Î °áÁ¤ÇÒ ¶§±îÁö ¿©ÀüÈ÷ ±×·ì¿¡ ³²¾Æ ÀְԵȴÙ.

Ãß°¡ : ±×·ìÀ» ¶°³­´Ù ÇÒÁö¶óµµ, ¼ö½ÅÇÏ´ø Æ÷Æ®¿¡ ¿©ÀüÈ÷ ¿¬°á(bind)µÈ ä·Î ³²¾ÆÀÖÀ» °ÍÀÌ¸ç ¾ÆÁ÷ ¸ÖƼij½ºÆ® ±×·ì¿¡ Âü¿©ÇÏ°í ÀÖ´Â ÇÁ·Î¼¼½º°¡ ´õ ÀÖÀ¸¸é ¸ÖƼij½ºÆ® trafficÀ» °è¼Ó ¼ö½ÅÇÏ°Ô µÉ °ÍÀÌ´Ù.

¸ÖƼij½ºÆ® group ¿¡ Âü¿©ÇÔ¿¡ À־, ¿äÁ¡Àº IP ¿Í data link °èÃþ¿¡ ÇØ´ç ±×·ìÀ¸·Î ÇâÇÏ´Â ¸ÖƼij½ºÆ® µ¥ÀÌÅͱ׷¥À» ¹Þµµ·Ï ÁöÁ¤ÇÏ´Â °ÍÀÌ´Ù. (°æ¿ì¿¡ µû¶ó¼­´Â ¸í½ÃÀûÀ¸·Î Çϵå¿þ¾î¿¡ ÁöÁ¤ÇÏ´Â °æ¿ìµµ ÀÖ´Ù) ÀÌ°ÍÀº ÇÁ·Î¼¼½º ´ÜÀ§(per-process membership)°¡ ¾Æ´Ï¶ó È£½ºÆ® ´ÜÀ§(per-host membership)ÀÌ´Ù.

IP ¸ÖƼij½ºÆ® ÁÖ¼Ò¿¡¼­ Ethernet/FDDI ÁÖ¼Ò·ÎÀÇ »ç»ó (mapping)

Ethernet°ú FDDI ¿¡¼­ ÇÁ·¹ÀÓ(frames)Àº 48 ºñÆ®ÀÇ ¸ñÀûÁö ÁÖ¼Ò°ø°£À» °¡Áø´Ù. ¸ÖƼij½ºÆ® IP ÁÖ¼Ò¸¦ ethernet/FDDI·Î »ç»óÇϱâ À§ÇÑ ¸ÖƼij½ºÆ® ARP °°Àº °ÍÀ» ÇÇÇϱâ À§Çؼ­, IANA´Â ¸ÖƼij½ºÆ®¸¦ À§ÇØ ÁÖ¼Ò°ø°£À» ¿¹¾àÇß´Ù. ¸ñÀûÁö°¡, 01-00-5e-00-00-00 ¿¡¼­ 01-00-5e-ff-ff-ff (16Áø¼ö)»çÀÌÀÇ ¸ðµç ethernet/FDDI ÇÁ·¹ÀÓÀº ¸ÖƼij½ºÆ® ±×·ìÀ» À§ÇÑ µ¥ÀÌÅ͸¦ °¡Áø´Ù. Á¢µÎ¾î(prefix) 01-00-5e ´Â ÇØ´ç ÇÁ·¹ÀÓÀÌ ¸ÖƼij½ºÆ® ÀÓÀ» ³ªÅ¸³»¸ç, ¹Ù·Î ´ÙÀ½ ºñÆ®´Â Ç×»ó 0ÀÌ´Ù. µû¶ó¼­, ³ª¸ÓÁö 23 ºñÆ®¸¸ÀÌ ¸ÖƼij½ºÆ® ÁÖ¼Ò¸¦ À§ÇØ »ç¿ëµÈ´Ù. ±×·±µ¥, ¸ÖƼij½ºÆ® ±×·ìÀÇ IP´Â 28ºñÆ® ±æÀÌÀ̹ǷΠ1´ë1 »ç»óÀº ºÒ°¡´ÉÇÏ´Ù. ¿ÀÁ÷ IP ¸ÖƼij½ºÆ® ±×·ìÀÇ 23°³ ÇÏÀ§ ºñÆ®(Least Significant Bit)¸¸ÀÌ ÇÁ·¹ÀÓ¿¡ À§Ä¡ÇÑ´Ù. ³²´Â 5°³ÀÇ »óÀ§ ºñÆ®´Â ¹«½ÃµÇ¸ç32°³ÀÇ(2^5=32) ¼­·Î ´Ù¸¥ ¸ÖƼij½ºÆ® ±×·ìÀÌ µ¿ÀÏÇÑ ethernet/FDDI address»ç»óµÈ´Ù. ÀÌ°ÍÀº ethernet °èÃþÀÌ ¿ÏÀüÇÑ ÇÊÅÍ·Î ÀÛ¿ëÇÏÁö ¸øÇÔÀ» ÀǹÌÇϸç, IP °èÃþÀÌ data link °èÃþÀ» Åë°úÇØ¿Â µ¥ÀÌÅͱ׷¥À» ¹ÞÀ» °ÍÀÎÁö ¹ö¸± °ÍÀÎÁö¸¦ °áÁ¤ÇØ¾ß ÇÒ °ÍÀÌ´Ù. IP °èÃþÀÌ ÃÖÈÄÀÇ ¿Ïº®ÇÑ ÇÊÅÍÀÌ´Ù.

FDDI»óÀÇ IP ¸ÖƼij½ºÆÿ¡ °üÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº RFC 1390 "Transmission of IP and ARP over FDDI Networks" ¿¡ ³ª¿ÍÀÖ´Ù. IP Multicast ÁÖ¼ÒÀÇ ethernetÀ¸·ÎÀÇ »ç»ó¿¡ °üÇÑ ´õ¿í ÀÚ¼¼ÇÑ ³»¿ëÀº draft-ietf-mboned-intro-multicast-03.txt "Introduction to IP Multicast Routing"À» ÂüÁ¶Ç϶ó.

Token-Ring LAN »ó¿¡¼­ÀÇ IP ¸ÖƼij½ºÆ®¿¡ °ü½ÉÀÌ ÀÖ´Ù¸é RFC 1469¸¦ ÂüÁ¶Ç϶ó.

3. Ä¿³Î ¿ä±¸ »çÇ×°ú ¼³Á¤

Linux´Â ´ç¿¬È÷(¼³¸¶ ÀǽÉÀ»?) ¿ÏÀüÇÑ Level 2 ¸ÖƼij½ºÆ®¸¦ Áö¿øÇÑ´Ù. ¸ðµç ¼Û¼ö½Å ¿ä±¸»çÇ×À» ¸¸Á·ÇÏ¸ç ¸ÖƼij½ºÆ® µ¥ÀÌÅͱ׷¥¿¡ °üÇؼ­ ¶ó¿ìÅÍ(mrouter)ó·³ ÀÛµ¿ÇÑ´Ù.

¸ÖƼij½ºÆ® ¼Û¼ö½ÅÀÌ ÇÏ°í½Í´Ù¸é Ä¿³Î ¼³ Á¤½Ã "IP: multicasting"¿¡ yes¶ó°í ÇØÁֱ⸸ ÇÏ¸é µÈ´Ù. Linux box¸¦ ¸ÖƼij½ºÆ® ¶ó¿ìÅÍ (mrouter)·Î »ç¿ëÇÏ°í ½Í´Ù¸é "IP: forwarding/gatewaying", "IP: multicast routing" ±×¸®°í "IP: tunneling"À» ¼±ÅÃÇØÁÖ¸é µÈ´Ù. ÈÄÀÚ´Â »õ·Î¿î ¹öÀüÀÇ mrouted°¡ ¸ÖƼij½ºÆ® µ¥ÀÌÅͱ׷¥À» À¯´Ïij½ºÆ® µ¥ÀÌÅͱ׷¥¿¡ ĸ½¶È­(encapsulation)Çؼ­ º¸³»±â À§ÇØ IP tunneling ¿¡ ÀÇÁ¸Çϱ⠶§¹®ÀÌ´Ù. ÀÌ°ÍÀº À¯´Ïij½ºÆ® Àü¿ë ³×Æ®¿÷¿¡ ºÐ»êµÇ¾îÀÖ´Â ¸ÖƼij½ºÆ® È£½ºÆ®µé°£ÀÇ ¿¬°á(tunneling)À» À§Çؼ­ ÇÊ¿äÇÏ´Ù. (mrouted´Â ¶ó¿ìÆà ¾Ë°í¸®Áò-¶ó¿ìÆà Á¤Ã¥-À» ±¸ÇöÇÏ°í Ä¿³Î¿¡ ¸ÖƼij½ºÆ® µ¥ÀÌÅͱ׷¥À» ¾î¶»°Ô ¶ó¿ìÆÃÇÒ °ÍÀÎÁö ¾Ë·ÁÁÖ´Â daemonÀÌ´Ù).

¾î¶°ÇÑ ¹öÀüÀÇ Ä¿³ÎµéÀº ¸ÖƼij½ºÆ® ¶ó¿ìÆÃÀ» "EXPERIMENTAL"·Î ºÐ·ùÇÏ°í Àֱ⠶§¹®¿¡, "Code maturity level options"¼½¼Ç¿¡¼­ "Prompt for development and/or incomplete code/drivers"¿É¼ÇÀ» °¡´ÉÇÏ°Ô ÇØ ÁÖ¾î¾ß ÇÑ´Ù. ¸¸ÀÏ mrouted°¡ ½ÇÇàÁßÀÏ ¶§ ¿ì¸®ÀÇ Linux box°¡ ¼ÓÇØÀÖ´Â µ¿ÀÏ ³×Æ®¿÷¿¡¼­ »ý¼ºµÈ trafficÀº Á¤»óÀûÀ¸·Î ´Ù¸¥ ³×Æ®¿÷¿¡ Æ÷¿öµùÇØÁִµ¥, ´Ù¸¥ ³×Æ®¿÷ÀÇ trafficÀ» º¼ ¼ö ¾ø´Ù¸é ICMP ¿¡·¯¸Þ½ÃÁö¸¦ ¹Þ°íÀÖÁö´Â ¾Ê´ÂÁö È®ÀÎÇØ º¸¶ó. °ÅÀÇ ¸ðµç °æ¿ì°¡ IP tunnelingÀ» È°¼ºÈ­ ½ÃÄѳõÁö ¾ÊÀº °æ¿ì ÀÏ °ÍÀÌ´Ù. ÀÏ´Ü ¾Ë°í³ª¸é Á¤¸» °£´ÜÇÑ °ÍÀÌÁö¸¸, Á¤¸»ÀÌÁö, ¸ð¸£´Â °æ¿ì¿¡´Â ½Ã°£ ²Ï³ª °É¸®°í ÀÌÀ¯µµ ½±»ç¸® ¾Ë±â ¾î·Æ´Ù. ÀÌ·± »óȲ¿¡¼­´Â ½º´ÏÆÛ(sniffer)°¡ Á¤¸» À¯¿ëÇÏ´Ù!

(¸ÖƼij½ºÆ® ¶ó¿ìÆÿ¡ ´ëÇؼ­´Â "Routing Policies and Forwarding Techniques" ¼½¼Ç¿¡¼­, mrouted ¿Í tunnel ¿¡ ´ëÇؼ­´Â "The MBone" °ú "Multicast applications"¿¡¼­ Ãß°¡·Î ¼³¸íÇÑ´Ù).

ÀÏ´Ü Ä¿³ÎÀ» ÄÄÆÄÀÏÇÏ°í ¼³Ä¡ÇÑ ÈÄ¿¡´Â ¸ÖƼij½ºÆ® Æ®·¡ÇÈÀ» À§ÇÑ ±âº» ¶ó¿ìÆðæ·Î¸¦ ¼³Á¤ ÇؾßÇÑ´Ù. ¿ì¸®ÀÇ ¸ñÇ¥´Â 224.0.0.0 ³×Æ®¿÷À¸·ÎÀÇ °æ·Î¸¦ Ãß°¡ÇÏ´Â °ÍÀÌ´Ù.

´ëºÎºÐÀÇ »ç¶÷µéÀÌ ÀÌ ´Ü°è¿¡¼­ °Þ´Â ¹«Á¦´Â ¸¶½ºÅ© °ªÀ¸·Î ÀÎÇÑ ¾î·Á¿òÀÌ´Ù. ¸¸ÀÏ Terry DawsonÀÇ À¯¸íÇÑ NET-3-HOWTO¸¦ Àоú´Ù¸é, ¿Ã¹Ù¸¥ °ªÀ» ¾Ë¾Æ ¸ÂÃ߱⠾î·ÆÁö ¾ÊÀ» °ÍÀÌ´Ù. ±× ¹®¼­¿¡¼­ ¼³¸íÇßµíÀÌ, ³Ý¸¶½ºÅ©(subnetmask)´Â ¿ì¸®ÀÇ IP ÁÖ¼ÒÀÇ ³×Æ®¿÷ ºÎºÐÀ» ¸ðµÎ 1·Î ä¿ì°í È£½ºÆ® ºÎºÐÀ» ¸ðµÎ 0À¸·Î ä¿î 32ºñÆ® ¼ýÀÚÀÌ´Ù. ¼½¼Ç 2.1¿¡¼­ º¸¾ÒµíÀÌ Å¬·¡½ºD ¸ÖƼij½ºÆ® ÁÖ¼Ò´Â ³×Æ®¿÷/È£½ºÆ®Çü½ÄÀ¸·Î ±¸ºÐµÇ¾îÀÖÁö ¾Ê´Ù. ´ë½Å 18ºñÆ®ÀÇ ±×·ì ±¸ºÐÀÚ¿Í 4ºñÆ®ÀÇ Å¬·¡½ºD ±¸ºÐÀÚ·Î ÀÌ·ç¾îÁ®ÀÖ´Ù. ÀÌ 4ºñÆ®°¡ ³×Æ®¿÷ ºÎºÐ¿¡ ´ëÀÀµÇ°í 28ºñÆ®°¡ È£½ºÆ® ºÎºÐ¿¡ ´ëÀÀµÈ´Ù. µû¶ó¼­ ¼­ºê³Ý¸¶½ºÅ©´Â 11110000000000000000000000000000 ½±°Ô ÀÐÀÚ¸é, 240.0.0.0ÀÌ µÈ´Ù. ±×·¯¸é ¿ÏÀüÇÑ ¸í·É¾î´Â ´ÙÀ½°ú °°ÀÌ µÉ °ÍÀÌ´Ù.

route add 224.0.0.0 netmask 240.0.0.0 dev eth0

route ÇÁ·Î±×·¥ÀÇ ¹öÀü¿¡ µû¶ó¼­ addµÚ¿¡ -net À» ºÙ¿©¾ß ÇÏ´Â °æ¿ìµµ ÀÖ´Ù.

¿©±â¼­ eth0ÀÌ ¸ÖƼij½ºÆ® °¡´ÉÇÏ´Ù°í °¡Á¤ÇßÀ¸¸ç, ´Þ¸® ÁöÁ¤µÇÁö ¾ÊÀ» °æ¿ì ¸ÖƼij½ºÆ® Æ®·¡ÇÈÀÌ eth0À¸·Î Ãâ·ÂµÉ °ÍÀÌ´Ù. ÀÌ°ÍÀÌ ¿ì¸®¿¡°Ô ÇØ´çµÇÁö ¾Ê´Â´Ù¸é dev º¯¼ö °ªÀ» ´Ù¸¥ °ªÀ¸·Î ¹Ù²Ù¾î ÁÖ¾î¾ßÇÑ´Ù.

¿©±â¼­ ´Ù½Ã Çѹø /proc ÆÄÀϽýºÅÛÀÇ À¯¿ë¼ºÀÌ ÀÔÁõµÈ´Ù. ¿ì¸®´Â ¿ì¸®È£½ºÆ®°¡ Âü¿©ÇÏ°í ÀÖ´Â ±×·ìÀ» /proc/net/igmp¸¦ ÅëÇؼ­ È®ÀÎÇØ º¼ ¼ö ÀÖ´Ù.

4. The MBone.

ÀåÁ¡°ú ÇÔ²² ´ÜÁ¡µµ ÀÖ´Â ±â¼úÀÌ´Ù. ³ªÀÇ »ç°ßÀÌÁö¸¸, ÀåÁ¡Àº ºÐ¸íÇÏ´Ù´Â Á¡ÀÌ´Ù. ÁÖµÈ ´ÜÁ¡Àº ¾ÆÁ÷ ¼ö¹éÀÇ È£½ºÆ®µé, ƯÈ÷ ¶ó¿ìÅ͵éÀÌ ¾ÆÁ÷ Áö¿øÇÏÁö ¾Ê°í ÀÖ´Ù´Â Á¡ÀÌ´Ù. °á°úÀûÀ¸·Î ¸ÖƼij½ºÆ®¸¦ »ç¿ëÇÏ´Â »ç¶÷µéÀº »õ·Î¿î Àåºñ¸¦ ±¸ÀÔÇÏ°í ¿î¿µÃ¼Á¦¸¦ ¼öÁ¤Çϸç ÀÚ½ÅÀÇ Àå¼Ò¿¡ ¸ÖƼij½ºÆ®¶ó´Â ¼¶À» ¸¸µç´Ù. ±×¸®°í ±×µéÀº ´Ù¸¥ °÷¿¡¼­ ÀڽŰú ºñ½ÁÇÑ ÀÏÀ» ÇÏ°í ÀÖ´Â »ç¶÷µé°ú Åë½ÅÇÒ ¼ö¾øÀ½À» ¾Ë°ÔµÈ´Ù. ±×µé »çÀÌÀÇ ¸ÖƼij½ºÆ®¸¦ Áö¿øÇÏÁö ¾Ê´Â ´Ü ÇϳªÀÇ ¶ó¿ìÅÍ ¶§¹®¿¡...

ÇØ´äÀº ºÐ¸íÇÏ´Ù. ±×µéÀº °¡»ó ¸ÖƼij½ºÆ® ³×Æ®¿÷À» ÀÎÅÍ³Ý ÃÖ »ó´Ü¿¡ ¸¸µé±â·Î °áÁ¤ÇÑ´Ù. Áï ¸ÖƼij½ºÆ® ¶ó¿ìÅ͸¦ °¡Áø »çÀÌÆ®µéÀº ±×µé°£¿¡ Á÷Á¢ÀûÀ¸·Î Åë½ÅÇÏ´Â °ÍÀÌ´Ù. ÇÏÁö¸¸ À¯´Ïij½ºÆ® ¶ó¿ìÅ͸¦ ÅëÇؼ­ ¿¬°áµÈ »çÀÌÆ®µéÀº ´Ù¸¥ ¸ÖƼij½ºÆ® ¼¶À¸·Î À¯´Ïij½ºÆ® °¸½¶È­µÈ ¸ÖƼij½ºÆ® Æ®·¡ÇÈÀ» º¸³»¾ß ÇÒ °ÍÀÌ´Ù. Áß°£¿¡ °ÉÃÄÁø ¶ó¿ìÅ͵é-À¯´Ïij½ºÆ®Àü¿ë ¶ó¿ìÅ͵é-Àº À¯´Ïij½ºÆ® Æ®·¡ÇÈÀ» ´Ù·ç´Â °ÍÀÌ µÇ¹Ç·Î ¹®Á¦°¡ µÇÁö ¾Ê´Â´Ù. ³¡À¸·Î ¼ö½Å Ãø¿¡¼­´Â ĸ½¶È­µÈ Æ®·¡ÇÈÀ» ´Ù½Ã ¿ø·¡ÀÇ ¸ÖƼij½ºÆ® Æ®·¡ÇÈÀ¸·Î Çؼ®ÇÒ °ÍÀÌ´Ù. ÀÌ·¸°Ô ¸ÖƼij½ºÆ® Æ®·¡ÇÈÀ» À¯´Ïij½ºÆ® Æ®·¡ÇÈÀ¸·Î ´Ù½Ã ¸ÖƼij½ºÆ® Æ®·¡ÇÈÀ¸·Î º¯È¯ÇÏ´Â °ÍÀ» ¸ÖƼij½ºÆ® Åͳθµ(tunneling)À̶ó ÇÑ´Ù.

Áï, MBone ¶Ç´Â ¸ÖƼij½ºÆ® ¹éº»(Multicast Backbone)Àº ¸ÖƼij½ºÆ® ¼¶µéÀ» ¸ÖƼij½ºÆ® ÅͳηΠÀ̾îÁÖ´Â °¡»ó ¸ÖƼij½ºÆ® ³×Æ®¿÷(virtual multicast network)ÀÌ´Ù.

ÀÌ MBone¿¡ °üÇÑ È°µ¿µéÀÌ È°¹ßÇÏ´Ù. ±×·¯ÇÑ ¹Ý¸é Áö±Ýµµ ÀÎÅͳݿ¡¼­´Â ½Ç½Ã°£ ¿Àµð¿À ¹× ºñµð¿À·Î dzºÎÇÑ ¿ø°ÝȸÀÇ°¡ ÀÌ·ç¾îÁö´Â ÁßÀÌ´Ù. ÃÖ±Ù Linus Torvalds°¡ Silicon Valley Linux Users Group¿¡¼­ ¹ßÇ¥ÇÑ °ÍÀÌ ¶óÀ̺ê·Î ÀÎÅÍ³Ý Àü¼ÛµÈ ÀÏÀÌ ÀÖ´Ù.

MBone¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ ÀÚ·á´Â ´ÙÀ½À» Âü°íÇ϶ó. http://www.mediadesign.co.at/newmedia/more/mbone-faq.html

5. ¸ÖƼij½ºÆ® ÀÀ¿ëÇÁ·Î±×·¥µé

¸ÖƼij½ºÆ®¸¦ ´Ù·ç´Â ´ëºÎºÐÀÇ »ç¶÷µéÀº Á¶¸¸ °£¿¡ MBone¿¡ ¿¬°áÇÒ °ÍÀ̸ç mrouted¸¦ ÇÊ¿ä·Î ÇÒ °ÍÀÌ´Ù. ¿ì¸® ¿ª½Ã ¸ÖƼij½ºÆ®¶ó¿ìÅÍ°¡ ¾ø´Â »óÅ¿¡¼­ ´Ù¸¥ ¼­ºê³ÝÀ¸·Î ¸ÖƼij½ºÆ® Æ®·¡ÇÈÀ» Àü´ÞÇϱ⠿øÇÑ´Ù¸é mrouted°¡ ÇÊ¿äÇÏ´Ù. mrouted´Â ¸ÖƼij½ºÆ® µ¥ÀÌÅͱ׷¥À» À¯´Ïij½ºÆ® Çü½ÄÀ¸·Î ĸ½¶È­ÇÏ¿© (IP¿¡¼­ IP·Î) À¯´Ïij½ºÆ® ¶ó¿ìÅ͸¦ ÅëÇØ ¸ÖƼij½ºÆ® Æ®·¡ÇÈÀ» Àü¼ÛÇÒ ¼ö ÀÖµµ·Ï ÇØÁÖ¸ç, ÀÌ ¿Ü¿¡µµ ¸î °¡Áö ±â´ÉÀÌ ÀÖ´Ù. °¡Àå Áß¿äÇÑ °ÍÀº ¸ÖƼij½ºÆ® µ¥ÀÌÅͱ׷¥ÀÇ ¹ß½ÅÁö¿Í ¸ñÀûÁö¸¦ °¨ÁöÇÏ¿© ¾î¶»°Ô ¶ó¿ìÆÃÀ» ÇÒ °ÍÀÎÁö ¾Æ´Ï¸é ÇÏÁö ¾ÊÀ» °ÍÀÎÁö Ä¿³Î¿¡ ¾Ë·ÁÁشٴ Á¡ÀÌ´Ù. ¸ÖƼij½ºÆ® ¶ó¿ìÅ͸¦ °¡Áö°í ÀÖ´Ù°í ÇÏ´õ¶óµµ mrouted´Â Ä¿³Î¿¡ µ¥ÀÌÅͱ׷¥À¸·Î ¹«¾ùÀ» ÇÒÁö ¾Ë·ÁÁØ´Ù. (¾î¶»°Ô°¡ ¾Æ´Ï¶ó ¹«¾ùÀÌ´Ù. mrouted´Â "ÀÌ°ÍÀ» Àú ÀÎÅÍÆäÀ̽º°¡ ¿¬°áµÈ ³×Æ®¿÷À¸·Î Æ÷¿öµùÇ϶ó."°í ¸»ÇÏÁö¸¸, ½ÇÁ¦·Î Æ÷¿öµùÀº Ä¿³ÎÀÌ ¼öÇàÇÑ´Ù.) ½ÇÁ¦ Æ÷¿öµù ÀÛ¾÷ ºÎºÐ(¾îµð¼­ ÇÒ °ÍÀΰ¡)°ú Æ÷¿öµù ¾Ë°í¸®Áò ºÎºÐ(¾î¶»°Ô ÇÒ °ÍÀΰ¡)À» ±¸ºÐÇϸé Æ÷¿öµù Äڵ带 ¿ÀÁ÷ Çѹø¸¸ ÀÛ¼ºÇؼ­ Ä¿³Î¿¡ ³ÖÀ¸¸é µÇ±â ¶§¹®¿¡ ¾ÆÁÖ À¯¿ëÇÏ´Ù. Æ÷¿öµù ¾Ë°í¸®Áò°ú Á¤Ã¥Àº ÃßÈÄ¿¡ »ç¿ëÀÚ °ø°£ÀÇ µ¥¸ó(user space daemon)¿¡¼­ ±¸ÇöµÇ¸ç, µû¶ó¼­, Ä¿³ÎÀ» Àç ÄÄÆÄÀÏ ÇÒ ÇÊ¿ä ¾øÀÌ ¶ó¿ìÆà Á¤Ã¥À» ½±°Ô ¼öÁ¤ÇÒ ¼ö ÀÖ´Ù.

´ÙÀ½ »çÀÌÆ®¿¡¼­ ¸®´ª½º·Î Æ÷ÆÃµÈ mrouted¸¦ ±¸ÇÒ ¼ö ÀÖ´Ù. ftp://www.video.ja.net/mice/mrouted/Linux/ ÀÌ »çÀÌÆ®ÀÇ ¹Ì·¯´Â ´ÙÀ½À» ÂüÁ¶Ç϶ó. ftp://www.video.ja.net/mice/README.mirrors

´ÙÀ½À¸·Î ¸®´ª½º·Î Æ÷ÆÃµÈ ¸ÖƼij½ºÆ® ÀÀ¿ëÇÁ·Î±×·¥µé °¡¿îµ¥ MBone¿¡ ¿¬°áÇϵµ·Ï ÀÛ¼ºµÈ °Íµé¿¡ ´ëÇØ ¾Ë¾Æº»´Ù. ¿©±â¿¡ ÀÖ´Â ¸®½ºÆ®´Â Michael EslerÀÇ "Linux Multicast Information"¿¡¼­ °¡Á®¿Ô´Ù. http://www.cs.virginia.edu/~mke2e/multicast/. ¸ÖƼij½ºÆ®¿Í ¸®´ª½º¿¡ ´ëÇÑ Á¤º¸°¡ ¾ÆÁÖ ¸¹¾Æ ÃßõÇÒ ¸¸ ÇÏ´Ù.

À½¼º ȸÀÇ(Audio Conference)

¿µ»ó ȸÀÇ(Video Conference)

±âŸ À¯Æ¿¸®Æ¼

ȸÀÇ µµ±¸(Session Tools)

¾à°£ ¼³¸íÇÒ ÇÊ¿ä°¡ À־ À̰͵éÀº µÚ¿¡ ³õ¾Ò´Ù. ȸÀǸ¦ ÇϰԵǸé ȸÀǸ¦ À§ÇÑ ¼­ºñ½ºµé(À½¼º, ¿µ»ó, °øÀ¯ Ä¥ÆÇ, µîµî...)¿¡ ¸ÖƼij½ºÆ® ±×·ì°ú Æ÷Æ®µéÀ» ÇÒ´çÇÑ´Ù. ȸÀǸ¦ ½ÃÀÛÇÏ¸é ¸ÖƼij½ºÆ® ±×·ì°ú Æ÷Æ®, ÇÁ·Î±×·¥(vic, vat, ...)µî¿¡ °üÇÑ Á¤º¸°¡ ÁÖ±âÀûÀ¸·Î MBoneÀ¸·Î Àü¼ÛµÈ´Ù. ȸÀÇ µµ±¸µéÀº ÀÌ·¯ÇÑ Á¤º¸¸¦ "µè°í "¿ì¸®°¡ °ü½É Àִ ȸÀÇ°¡ ¾ðÁ¦ ÀÖ´ÂÁö (ȤÀº ÀÖÀ»Áö) ¾Ë¾Æº¸±â ½±°Ô ¾Ë·ÁÁØ´Ù. ¶ÇÇÑ, ȸÀÇ¿¡ Âü¿©ÇÏ´Â °úÁ¤À» ½±°Ô ÇØÁØ´Ù. ÇÁ·Î±×·¥À» ½ÇÇà½ÃÄѼ­ Âü¿©ÇÒ ±×·ì/Æ÷Æ®¹øÈ£¸¦ ¾Ë·ÁÁÖ´Â ´ë½Å Ŭ¸¯ÇÏ´Â °Í¸¸À¸·Î ¼¼¼Çµµ±¸µéÀÌ ÀûÀýÇÑ ÇÁ·Î±×·¥À» ½ÇÇà½ÃÅ°°í ±× ÇÁ·Î±×·¥¿¡ ÀûÀýÇÑ Á¤º¸¸¦ Á¦°øÇÑ´Ù. ȸÀǵµ±¸µéÀº º¸Åë »ç¿ëÀÚ ÀÚ½ÅÀÇ È¸ÀǸ¦ MBone¿¡ ¾Ë¸®´Â ¿ªÇÒµµ ÇÑ´Ù.

6. ¸ÖƼij½ºÆ® ÇÁ·Î±×·¡¹Ö

¸ÖƼij½ºÆ® ÇÁ·Î±×·¡¹Ö... ȤÀº, ¿ì¸®¸¸ÀÇ ÀÀ¿ëÇÁ·Î±×·¥ ÀÛ¼ºÇϱâ.

¸ÖƼij½ºÆ®¸¦ Áö¿øÇϱâ À§Çؼ­ ¸î °¡Áö È®ÀåµÈ ÀÀ¿ë ÇÁ·Î±×·¡¹Ö ÀÎÅÍÆäÀ̽º(API)°¡ ÇÊ¿äÇÏ´Ù. ±× °¡¿îµ¥ ´ëºÎºÐÀº setsockopt() (Ä¿³Î¿¡ Á¤º¸¸¦ Àü´ÞÇÔ) ¿Í getsockopt() (¸ÖƼij½ºÆ® °ü·Ã Á¤º¸ ±¸ÇÔ) µÎ °¡Áö ½Ã½ºÅÛ È£ÃâÀ» ÅëÇØ Ã³¸®ÇÑ´Ù. »õ·Î¿î ½Ã½ºÅÛ È£Ã⠵ΰ³°¡ ¸ÖƼij½ºÆ®¸¦ Áö¿øÇϱâ À§ÇØ Ãß°¡µÇ¾ú´Ù´Â ¶æÀÌ ¾Æ´Ï´Ù. setsockopt()/getsockopt()´Â 4.2 BSD ½ÃÀýºÎÅÍ ÀÖ¾ú´Ù. ´ÜÁö Ä¿³Î¿¡ Àü´ÞÇØ ÁÖ¾î¾ßÇÏ´Â »õ·Î¿î ¸ÖƼij½ºÆ® ¿É¼ÇÀÌ Ãß°¡µÇ¾úÀ» »ÓÀÌ´Ù.

setsockopt()/getsockopt() ÇÔ¼öÀÇ ¼±¾ðÀÌ´Ù.


      int getsockopt(int s, int level, int optname, void* optval, int* optlen);

       int setsockopt(int s, int level, int optname, const void* optval, int optlen);

ù ¹ø° º¯¼ö s´Â ½Ã½ºÅÛ È£ÃâÀ» Àû¿ëÇÒ ¼ÒÄÏÀÌ´Ù. ¸ÖƼij½ºÆ®¿¡¼­ ÀÌ ¼ÒÄÏÀº AF_INET °è¿­ À̾î¾ßÇϸç, ¼ÒÄÏ Å¸ÀÔÀº SOCK_DGRAM ¶Ç´Â SOCK_RAW¸¦ ¾µ ¼ö ÀÖ´Ù. ´ëºÎºÐÀº SOCK_DGRAMÀ¸·Î ¾²Áö¸¸, ¶ó¿ìÆà µ¥¸óÀ» Á¦ÀÛÇϰųª ¼öÁ¤ÇÒ °èȹÀ̶ó¸é SOCK_RAW ÀÌ ÇÊ¿äÇÒÁö ¸ð¸¥´Ù.

µÎ ¹ø° º¯¼ö levelÀº ¿É¼ÇÀ̳ª, ÁúÀÇ(query), ¸Þ½ÃÁö(message)¸¦ ó¸®ÇÒ ·¹À̾ ÀǹÌÇÑ´Ù. ¼ÒÄÏ ·¹À̾î´Â SOL_SOCKET, IP ·¹À̾î´Â IPPROTO_IP, µîµîÀÌ´Ù. ¸ÖƼij½ºÆ® ÇÁ·Î±×·¡¹Ö¿¡ levelÀº Ç×»ó IPPROTO_IP À̾î¾ß ÇÑ´Ù.

optnameÀº ¿ì¸®°¡ ¼³Á¤ °ªÀ» ÁöÁ¤ÇÏ´Â °ÍÀÎÁö ¾òÀ¸·Á ÇÏ´Â °ÍÀÎÁö¸¦ ÀǹÌÇÑ´Ù. ¼³Á¤ °ª ÀÚü´Â(Ä¿³Î¿¡ ¼³Á¤Çϰųª Ä¿³Î·ÎºÎÅÍ Àоî¿À´Â µÎ °æ¿ì ¸ðµÎ) optvalÀÌ´Ù. ¸ÖƼij½ºÆ® ÇÁ·Î±×·¡¹Ö¿¡¼­ optnames´Â ´ÙÀ½°ú °°´Ù.

      optname              setsockopt()          getsockopt()
  IP_MULTICAST_LOOP           yes                     yes
  IP_MULTICAST_TTL            yes                     yes
  IP_MULTICAST_IF             yes                     yes
  IP_ADD_MEMBERSHIP           yes                      no
  IP_DROP_MEMBERSHIP          yes                      no

optlenÀº optvalÀÌ °¡¸®Å°´Â µ¥ÀÌÅͱ¸Á¶ÀÇ Å©±â¸¦ ÀǹÌÇÑ´Ù. ´Ü, getsockopt()¿¡¼­´Â ¹Ýȯ °ªÀÌ µÈ´Ù. Ä¿³ÎÀº optname °ªÀ» optvalÀÌ °¡¸®Å°´Â ¹öÆÛ¿¡ ½á³ÖÀº ÈÄ optlenÀ» ÅëÇØ ÀÚ·áÀÇ Å©±â¸¦ ¾Ë·ÁÁØ´Ù.

setsockopt()/getsockopt()¸ðµÎ ½ÇÇà °á°ú ¼º°øÇϸé 0, ¿¡·¯°¡ ¹ß»ýÇϸé -1À» ¹ÝȯÇÑ´Ù.

6.1 IP_MULTICAST_LOOP.

ÇÁ·Î±×·¡¸Ó¶ó¸é, µ¥ÀÌÅ͸¦ È£½ºÆ®·Î ·çÇÁ¹é ½Ãų °ÍÀÎÁö °áÁ¤ÇؾßÇÑ´Ù. ¸¸ÀÏ, ÇÁ·Î¼¼½º°¡ ¿©·¯ °³À̰ųª µ¥ÀÌÅ͸¦ ¸®½º´×"listening"ÁßÀÎ »ç¿ëÀÚ°¡ ÀÖ´Ù¸é ·çÇÁ¹éÀ» °¡´ÉÇÏ°Ô ÇؾßÇÑ´Ù. ÇÏÁö¸¸, Ä«¸Þ¶ó À̹ÌÁö¸¦ Àü¼ÛÇϴµ¥ ÀÚ±â È­¸é¿¡¼­ À̹ÌÁö¸¦ º¼ ÇÊ¿ä°¡ ¾ø´Ù¸é, ¾Æ¸¶µµ ·çÇÁ¹éÀÌ ÇÊ¿ä ¾øÀ» °ÍÀÌ´Ù. ÈÄÀÚÀÇ °æ¿ì ÇÁ·Î±×·¥Àº ÄÄÇ»ÅÍ¿¡ ºÎÂøµÈ Ä«¸Þ¶ó·ÎºÎÅÍ ¿µ»óÀڷḦ ÀÌ¹Ì °¡Áö°í ÀÖÀ» °ÍÀ̱⠶§¹®¿¡, ´Ù½Ã ¼ÒÄÏÀ¸·ÎºÎÅÍ ÀڷḦ ¹Þ±â ¿øÇÏ´Â °æ¿ì´Â µå¹° °ÍÀÌ´Ù. ·çÇÁ¹éÀº ±âº» °ªÀ¸·Î È°¼ºÈ­µÇ¾î ÀÖ´Ù.

optvalÀÌ Æ÷ÀÎÅÍÀ̱⠶§¹®¿¡ ´ÙÀ½Ã³·³ Çؼ­´Â ¾È µÈ´Ù.

setsockopt(socket, IPPROTO_IP, IP_MULTICAST_LOOP, 0, 1);

·çÇÁ¹éÀ» Á¤Áö½ÃÅ°·Á¸é ´ÙÀ½°ú °°ÀÌ ÇÏ°í

u_char loop; setsockopt(socket, IPPROTO_IP, IP_MULTICAST_LOOP, &loop, sizeof(loop));

·çÇÁ¹éÀ» È°¼ºÈ­½ÃÅ°·Á¸é loop¸¦ 1·Î, ÁßÁö½ÃÅ°·Á¸é 0À¸·Î ¼³Á¤ÇÑ´Ù.

¼ÒÄÏÀÇ ÇöÀç ·çÇÁ¹é»óŸ¦ È®ÀÎÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.

u_char loop; int size;

getsockopt(socket, IPPROTO_IP, IP_MULTICAST_LOOP, &loop, &size)

6.2 IP_MULTICAST_TTL.

Ưº°È÷ ÁöÁ¤ÇÏÁö ¾Ê´Â´Ù¸é, ¸ÖƼij½ºÆ® µ¥ÀÌÅͱ׷¥Àº Áö¿ª ³×Æ®¿÷ ¿ÜºÎ·Î Àü¼ÛµÇ´Â °ÍÀ» ¹æÁöÇϱâ À§ÇØ TTL 1À» ±âº» °ªÀ¸·Î Àü¼ÛµÈ´Ù. TTLÀ» ¿øÇÏ´Â °ªÀ¸·Î(0¿¡¼­ 255±îÁö) ¹Ù²Ù±â À§Çؼ­ TTL°ªÀ» º¯¼ö¿¡ ³Ö°í ÇÁ·Î±×·¥¿¡¼­ ´ÙÀ½°ú °°ÀÌ ½áÁÖ¸é µÈ´Ù.(¿©±â¼­´Â "ttl"À̶ó°í Çß´Ù.)

u_char ttl; setsockopt(socket, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, sizeof(ttl));

IP_MULTICAST_LOOP¿¡¼­¿Í Èí»çÇÏ´Ù.

6.3 IP_MULTICAST_IF.

ÀϹÝÀûÀ¸·Î ½Ã½ºÅÛ °ü¸®ÀÚ´Â ±âº» ÀÎÅÍÆäÀ̽º¸¦ ÁöÁ¤Çϸç, ¸ÖƼij½ºÆ® µ¥ÀÌÅͱ׷¥Àº ±×ÂÊÀ¸·Î º¸³»Áø´Ù. ÇÁ·Î±×·¡¸Ó´Â ÀÌ ¿É¼ÇÀ» »ç¿ëÇÏ¿© ÁöÁ¤µÈ ±âº» ÀÎÅÍÆäÀ̽º¸¦ ¹«½ÃÇÏ°í Á¤ÇØÁø ¼ÒÄÏ¿¡¼­ »ç¿ëÇÒ ÀÎÅÍÆäÀ̽º¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù.

struct in_addr interface_addr; setsockopt (socket, IPPROTO_IP, IP_MULTICAST_IF, &interface_addr, sizeof(interface_addr));

ÀÌÈĺÎÅÍ ÀÌ ¼ÒÄÏ¿¡¼­ »ý¼ºµÈ ¸ðµç ¸ÖƼij½ºÆ® Æ®·¡ÇÈÀº À§¿¡¼­ ¼±ÅÃÇÑ ÀÎÅÍÆäÀ̽º·Î Ãâ·ÂµÈ´Ù. ¿ø·¡ ¼³Á¤À» ȸº¹ÇÏ¿© °ü¸®ÀÚÀÇ ¼³Á¤À» ¹«½ÃÇÏ°í Ä¿³ÎÀÌ ¿ÜºÎ Ãâ·Â ÀÎÅÍÆäÀ̽º¸¦ ¼±ÅÃÇϵµ·Ï ÇÏ·Á¸é ÀÎÅÍÆäÀ̽º¿¡ INADDR_ANY¸¦ ¼³Á¤ÇÏ°í À§¿Í µ¿ÀÏÇÑ ¿É¼ÇÀ¸·Î setsockopt()¸¦ È£ÃâÇÑ´Ù.

¿ÜºÎ Ãâ·Â ÀÎÅÍÆäÀ̽º¸¦ ¼±ÅÃÇÔ¿¡ À־, ´ÙÀ½ ioctlÀÌ À¯¿ëÇÒ °ÍÀÌ´Ù. SIOCGIFADDR (ÀÎÅÍÆäÀ̽º ÁÖ¼Ò ¾ò±â), SIOCGIFCONF (Àüü ÀÎÅÍÆäÀ̽º ¸ñ·Ï ¾ò±â), SIOCGIFFLAGS (ÀÎÅÍÆäÀ̽º »óÅ Ç÷¡±×(flag)¸¦ ¾ò¾î¼­ ÀÎÅÍÆäÀ̽º°¡ ¸ÖƼij½ºÆ® °¡´ÉÇÑÁö È®ÀÎ - IFF_MULTICAST Ç÷¡±×-).

È£½ºÆ®°¡ ¸ÖƼij½ºÆ® ¶ó¿ìÅÍ·Î ÀÛµ¿ÇÑ´Ù¸é, ¿©·¯ ÀÎÅÍÆäÀ̽º¸¦ °¡Áö°í Àְųª IP_MULTICAST_IF¿É¼ÇÀÌ ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀ» °æ¿ì, ´Ù¸¥ ÀÎÅÍÆäÀ̽º¿¡¼­ ¸ÖƼij½ºÆ® Æ÷¿öµùÀÌ °¡´ÉÇÏ´õ¶óµµ ¸ÖƼij½ºÆ®´Â ±âº» ÀÎÅÍÆäÀ̽º¸¦ ÅëÇØ ÀÌ·ç¾îÁø´Ù.

6.4 IP_ADD_MEMBERSHIP.

Ä¿³Î¿¡ ¿ì¸®°¡ ¾î¶² ±×·ì¿¡ °ü½ÉÀÌ ÀÖ´ÂÁö ¾Ë·ÁÁÖ¾î¾ß ÇÑ´Ù°í Çß´ø °ÍÀ» ´Ù½Ã »ý°¢ÇØ º¸ÀÚ. ±×·ì¿¡ °ü½É ÀÖ´Â ÇÁ·Î¼¼½º°¡ Çϳªµµ ¾ø´Ù¸é, ±× ±×·ìÀ» ÇâÇؼ­ Àü¼ÛµÇ¾î¿À´Â ÆÐŶÀº ¸ðµÎ Æó±âµÈ´Ù. µû¶ó¼­ Ä¿³Î¿¡ ¿ì¸®ÀÇ °ü½É ±×·ìÀ» ¾Ë¸®°í, ±×·ìÀÇ È¸¿ø(member)ÀÌ µÇ±â À§Çؼ­´Â ´ÙÀ½°úÁ¤ÀÌ ÇÊ¿äÇÏ´Ù. ¿ì¼± ip_mreq ±¸Á¶Ã¼ÀÇ ³»¿ëÀ» ä¿î´Ù. ±×¸®°í, optvalÀ» ¼³Á¤ÇÏ¿© setsockopt()¸¦ È£ÃâÇؼ­ Ä¿³Î¿¡ ÀÌ ±¸Á¶Ã¼¸¦ ³Ñ°ÜÁÖ¸é µÈ´Ù.

ip_mreq ±¸Á¶Ã¼´Â (/usr/include/linux/in.h¿¡ ÀÖÀ½) ´ÙÀ½°ú °°´Ù.


struct ip_mreq
{
        struct in_addr imr_multiaddr;   /* IP multicast address of group */
        struct in_addr imr_interface;   /* local IP address of interface */
};

ÁÖÀÇ : ÀÌ ±¸Á¶Ã¼ÀÇ "¹°¸®Àû" Á¤ÀÇ´Â À§ÀÇ ÆÄÀÏ¿¡ ¸í½ÃµÇ¾î ÀÖ´Ù. ÇÏÁö¸¸, ÄÚµåÀÇ À̽ļºÀ» À§Çؼ­ <linux/in.h>À» Æ÷ÇÔ(include)½ÃÄѼ­´Â ¾È µÈ´Ù. ´ë½Å <linux/in.h>¸¦ Æ÷ÇÔÇÏ´Â <netinet/in.h>À» Æ÷ÇÔ½ÃÄѶó.

ù ¹ø° ¸â¹ö, imr_multiaddr´Â ¿ì¸®°¡ Âü¿©ÇÒ ±×·ìÁÖ¼Ò¸¦ ¸»ÇÑ´Ù. ȸ¿ø(membership)Àº ±×·ì»Ó¸¸ ¾Æ´Ï¶ó ÀÎÅÍÆäÀ̽º¿¡µµ °ü·ÃÀÌ ÀÖ´Ù´Â Á¡À» ¸í½ÉÇؾßÇÑ´Ù. µû¶ó¼­, µÎ ¹ø° ¸â¹ö, imr_interface°ªµµ ¾Ë·ÁÁÖ¾î¾ß ÇÑ´Ù. ¿ì¸®°¡ ºÐ»êµÈ È£½ºÆ®¿¡ ÀÖ´õ¶óµµ ÀÌ·¯ÇÑ ¹æ½ÄÀ¸·Î °¢±â ´Ù¸¥ ÀÎÅÍÆäÀ̽º¸¦ ÀÌ¿ëÇÏ¿© °°Àº ±×·ì¿¡ Âü¿©ÇÒ ¼ö ÀÖ´Ù. imr_interface´Â ¿ÍÀϵåÄ«µå ÁÖ¼Ò(INADDR_ANY)¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖÀ¸¸ç ÀÌ °æ¿ì ÀÎÅÍÆäÀ̽º¸¦ ¼±ÅÃÇÏ´Â ÀÏÀº Ä¿³ÎÀÌ ÇÑ´Ù.

ÀÏ´Ü ÀÌ ±¸Á¶Ã¼¸¦ ä¿ì¸é (struct ip_mreq mreq;·Î Á¤ÀÇ Çß´Ù°í Çϸé) ´ÙÀ½ ¹æ¹ýÀ¸·Î setsockopt()¸¦ È£ÃâÇÏ¸é µÈ´Ù.

setsockopt (socket, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq));

µ¿ÀÏ ¼ÒÄÏÀ¸·Î ¿©·¯ ±×·ì¿¡ Âü¿© ÇÒ ¼ö ÀÖ´Ù´Â Á¡¿¡ ÁÖ¸ñÇ϶ó. ±×·ì ¼ö Á¦ÇÑÀº IP_MAX_MEMBERSHIPS¿¡ Á¤ÀǵǾî ÀÖÀ¸¸ç Ä¿³Î¹öÀü 2.0.33¿¡¼­ 20ÀÌ´Ù.

6.5 IP_DROP_MEMBERSHIP.

ÀÌ °úÁ¤Àº ±×·ì¿¡ Âü¿©ÇÏ´Â °Í°ú À¯»çÇÏ´Ù.

struct ip_mreq mreq; setsockopt (socket, IPPROTO_IP, IP_DROP_MEMBERSHIP, &mreq, sizeof(mreq));

¿©±â¼­ mreq´Â ±×·ì¿¡ Âü¿© ÇÒ ¶§ »ç¿ëÇß´ø °Í°ú µ¿ÀÏÇÑ ±¸Á¶Ã¼´Ù. imr_interface¿¡ INADDR_ANY¸¦ »ç¿ëÇÑ´Ù¸é Ä¿³ÎÀÌ ¼±ÅÃÇÑ Ã¹ ¹ø° ÀÎÅÍÆäÀ̽º°¡ Á¦°ÅµÈ´Ù.

°°Àº ¼ÒÄÏÀ¸·Î ¾ÆÁÖ ¸¹Àº ±×·ì¿¡ Âü¿©ÇßÀ» °æ¿ì ¿¬°áÀ» Á¾·áÇϱâ À§ÇØ ¸ðµç ȸ¿ø °ü°è¸¦ »èÁ¦ÇÒ ÇÊ¿ä´Â ¾ø´Ù. ¼ÒÄÏÀ» ´ÝÀ¸¸é ¿¬°áµÈ ¸ðµç ȸ¿ø °ü°è´Â Ä¿³ÎÀÌ ÀÇÇØ »èÁ¦µÈ´Ù. ¼ÒÄÏÀ» ¿¬ ÇÁ·Î¼¼½º¸¦ Á¾·á(kill)½Ãų ¶§µµ µ¿ÀÏÇÏ´Ù.

³¡À¸·Î ±×·ì¿¡¼­ ȸ¿øÀ» Á¦°ÅÇÏ´Â °úÁ¤ÀÌ È£½ºÆ®·Î ÇÏ¿©±Ý ±× ±×·ìÀ¸·Î ¿À´Âµ¥ÀÌÅͱ׷¥À» ¹ÞÁö ¸øÇϵµ·Ï ÇÏ´Â °ÍÀ» ÀǹÌÇÏ´Â °ÍÀº ¾Æ´Ï´Ù. µ¿ÀÏ ÀÎÅÍÆäÀ̽º·Î ±× ±×·ì¿¡ Âü¿©ÇÑ ¼ÒÄÏÀÌ IP_DROP_MEMBERSHIPÀÇ »óÅ°¡ µÇ´õ¶óµµ È£½ºÆ®´Â ±×·ì ¸â¹öÀÇ ¸ñ·ÏÀ» º¸°üÇÑ´Ù.

ADD_MEMBERSHIP °ú DROP_MEMBERSHIP Àº ¼º°ø, ½ÇÆÐ ¿©ºÎ¸¦ Áï½Ã ¹ÝȯÇÑ´Ù. (nonblocking operations)

7. ¸ÖƼij½ºÆ® ³»ºÎ

ÀÌ ÀýÀÇ ¸ñÀûÀº ¸ÖƼij½ºÆ®°¡ ¾î¶»°Ô ÀÛµ¿ÇÏ´ÂÁö¸¦ ÀÌÇØÇϴµ¥ ÇÊ¿äÇÑ Á¤º¸¸¦ Á¦°øÇÏ´Â °Í µµ ¾Æ´Ï°í ¸ÖƼij½ºÆ® ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ Á¤º¸¸¦ Á¦°øÇÏÀÚ´Â °Íµµ ¾Æ´Ï´Ù. ÇÏÁö¸¸ ¸ÖƼij½ºÆ®ÀÇ ±â¹ÝÀ» ÀÌ·ç´Â ÇÁ·ÎÅäÄÝ°ú ±¸ÇöÀ» »ìÆ캽À¸·Î¼­ ½±°Ô ÀúÁö¸£´Â ½Ç¼ö¿Í À߸øµÈ ÀÌÇظ¦ ÇÇÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

7.1 IGMP.

IP_ADD_MEMBERSHIP °ú IP_DROP_MEMBERSHIP¿¡¼­ ÀÌ ¸í·ÉÀ¸·Î Ä¿³Î¿¡ Á¦°øÇÑ Á¤º¸´Â ¾î¶² ¸ÖƼij½ºÆ® µ¥ÀÌÅͱ׷¥À» ¹Þ°í ¾î¶² °ÍÀ» ¹ö¸± °ÍÀÎÁö¸¦ °áÁ¤Çϴµ¥ ¾²Àδٰí Çß´Ù. ¸Â´Â ¸»À̶ó°í ÇÒ ¼ö ÀÖÁö¸¸, ¸ðµÎ ¸Â´Â ¸»Àº ¾Æ´Ï´Ù. ÀÌ·¯ÇÑ ÀϹÝÈ­´Â Àü ¼¼°è ¸ðµç ¸ÖƼij½ºÆ®µ¥ÀÌÅͱ׷¥ÀÌ ¿ì¸®ÀÇ È£½ºÆ®·Î Àü´ÞµÈ ÈÄ, È£½ºÆ®¿¡¼­ ÇÁ·Î¼¼½º°¡ ¹ßÇàÇÑ È¸¿ø°ü°è¸¦ È®ÀÎ ÈÄ µ¥ÀÌÅͱ׷¥ÀÇ Æó±â ¿©ºÎ¸¦ °áÁ¤ÇÑ´Ù´Â ¸»ÀÌ µÈ´Ù. »ý°¢ÇÒ ÇÊ¿äµµ ¾øÀÌ, ÀÌ°ÍÀº ¾öû³­ ´ë¿ªÆø ³¶ºñÀÓÀ» ¾Ë ¼ö ÀÖ´Ù.

½ÇÁ¦·Î´Â È£½ºÆ®°¡ ÀÚ½ÅÀÇ ¶ó¿ìÅÍ¿¡°Ô, ±× ¶ó¿ìÅÍ´Â »óÀ§ ¶ó¿ìÅÍ¿¡°Ô, ±×¸®°í ±× »óÀ§ ¶ó¿ìÅÍ¿¡°Ô....¾î¶² ¸ÖƼij½ºÆ® ±×·ì¿¡ °ü½ÉÀÌ ÀÖ´ÂÁö ¾Ë·ÁÁØ´Ù. ¸ÖƼij½ºÆ® ±×·ì Æ®·¡ÇÈÀ» ¹ÞÀ» °ÍÀÎÁö ¸» °ÍÀÎÁö °áÁ¤ÇÏ´Â ¾Ë°í¸®Áò ÀÚü¿¡´Â »ó´çÈ÷ º¯È­°¡ ½ÉÇѵ¥, ´Ü ÇÑ°¡Áö º¯ÇÏÁö ¾Ê´Â °ÍÀÌ ÀÖ´Ù¸é, ÀÌ Á¤º¸¸¦ Àü´ÞÇÏ´Â ¹æ¹ýÀÌ´Ù. ÀÌ°ÍÀº IGMP(Internet Group Management ProtocolÀ» ÀÌ¿ëÇÑ´Ù. ÇÁ·ÎÅäÄݹøÈ£ 2ÀÎ IGMP´Â ICMP¿Í À¯»çÇÑ »õ·Î¿î ÇÁ·ÎÅäÄÝÀε¥ IP µ¥ÀÌÅͱ׷¥À» ÀÌ¿ëÇÏ¸ç ·¹º§ 2 ÀûÀÀ´Ü°èÀÇ È£½ºÆ®´Â ÀÌ ÇÁ·ÎÅäÄÝÀ» Àǹ«ÀûÀ¸·Î ±¸ÇöÇØ¾ß ÇÑ´Ù. Àü¼úÇÑ ¹Ù¿Í °°ÀÌ ÀÌ°ÍÀº ¶ó¿ìÅÍ¿¡°Ô ȸ¿øÁ¤º¸¸¦ Àü¼ÛÇϴ ȣ½ºÆ®¿Í ¶ó¿ìÅÍ»çÀÌÀÇ Åë½Å ¾çÂÊ ¸ðµÎ »ç¿ëÇÑ´Ù. ´ÙÀ½ ±Û¿¡¼­ È£½ºÆ®-¶ó¿ìÅÍ°£ °ü°è¸¸À» ¼³¸íÇϱâ·Î ÇÑ´Ù. ¿Ö³ÄÇϸé mrouted¼Ò½º Äڵ带 Á¦¿ÜÇÏ°í´Â ¶ó¿ìÅÍ-¶ó¿ìÅÍ°£ Åë½ÅÀ» Çؼ³ÇÏ´Â ÀڷḦ ãÁö ¸øÇÏ¿´±â ¶§¹®ÀÌ´Ù. (RFC 1075-Distance Vector Multicast Routing ProtocolÀº ÀÌÁ¦ »ç¿ëÇÏÁö ¾ÊÀ¸¸ç, mrouted´Â ¾ÆÁ÷ ¹®¼­È­µÇÁö ¾ÊÀº º¯ÇüµÈ DVMRP¸¦ ±¸ÇöÇÏ°í ÀÖ´Ù.)

RFC 988-IGMP ¹öÀü 0Àº ÀÌÁ¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù.

IGMP ¹öÀü 1Àº RFC-1112¿¡ Á¤ÀǵǾî ÀÖ°í, RFC-2236 (IGMP version 2) ¿¡¼­ °³Á¤µÇ¾î ÇöÀç±îÁö ¸¹ÀÌ »ç¿ëÇÏ°í ÀÖ´Ù. ¸®´ª½º Ä¿³Î¿¡¼­´Â IGMP ¹öÀü 1 Àüü¿Í ¹öÀü 2ÀϺΰ¡ ±¸ÇöµÇ¾î ÀÖ´Ù.

Áö±ÝºÎÅÍ ÀÌ ÇÁ·ÎÅäÄÝ¿¡ ´ëÇÑ ¾à½Ä¼³¸íÀ» º¸ÀÚ. RFC-2236À» ÆîÃÄ ³õ°í Á¤È®ÇÑ Á¤½Ä ¼³¸íÀ» º¸´Â °Íµµ ÁÁ´Ù.

¸ðµç IGMP ¸Þ½ÃÁö´Â ´ÙÀ½ ±¸Á¶¸¦ °¡Áø´Ù.

      0                   1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |      Type     | Max Resp Time |           Checksum            |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                         Group Address                         |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

IGMP ¹öÀü 1 (ÀÌÇÏ IGMPv1) ´Â Àü¼Û½Ã "Max Resp Time" À» "Unused",Áï ¸ðµÎ 0 À¸·Î ÇÏ°í ¼ö½Å½Ã¿¡´Â ¹«½ÃÇÑ´Ù. "Type"¶õÀº 4ºñÆ® ÆøÀ¸·Î ³ª´©¾î "Version"°ú "Type"À¸·Î »ç¿ëÇÑ´Ù. IGMPv1 ¿¡¼­´Â "ȸ¿øÁúÀÇ(Membership Query)"¸¦ 0x11 (version 1, type 1)À¸·Î È®ÀÎÇÏ°í, IGMPv2 ¿¡¼­´Â 0x11 ·Î È®ÀÎÇϱ⠶§¹®¿¡ 8ºñÆ®¸¦ »ç½Ç»ó µ¿ÀÏÇÏ°Ô Çؼ® ÇÑ´Ù.

IGMPv2 ´Â ÁÖ·Î Ãß°¡»çÇ×µé·Î ÀÌ·ç¾îÁ® Àֱ⠶§¹®¿¡ IGMPv1 À» ÀÏ´Ü ¼³¸íÇÑ ÈÄ IGMPv2 Ãß°¡»çÇ×À» ¼³¸íÇÏ´Â ÆíÀÌ ÁÁÀ» °Í °°´Ù.

´ÙÀ½ ³íÀÇ¿¡¼­ ¶ó¿ìÅÍ´Â ¸ðµç IP ¸ÖƼij½ºÆ® µ¥ÀÌÅͱ׷¥À» ¹Þ´Â´Ù´Â °ÍÀ» ±â¾ïÇ϶ó.

7.2 IGMP version 1.

¶ó¿ìÅÍ´Â ÁÖ±âÀûÀ¸·Î(1ºÐ¿¡¼­ 2ºÐ¿¡ Çѹø¾¿) TTL°ª 1ÀÇ IGMP È£½ºÆ® ȸ¿ø ÁúÀǸ¦ Àüü È£½ºÆ® ±×·ì(224.0.0.1)À¸·Î º¸³½´Ù. ¸ðµç ¸ÖƼij½ºÆ® È£½ºÆ®µéÀÌ ÀÌ ¸Þ½ÃÁö¸¦¹ÞÁö¸¸ IGMP È£½ºÆ® ȸ¿ø º¸°í(Host Membership Report)°¡ ÆøÁÖ(storm)ÇÏ´Â °ÍÀ» ¹æÁöÇϱâ À§ÇØ Áï½Ã ÀÀ´äÇÏÁö ¾Ê´Â´Ù. ´ë½Å ÁúÀǸ¦ ¼ö½ÅÇÑ ÀÎÅÍÆäÀ̽º¿¡ ¼ÓÇÏ´Â °¢ ±×·ì¿¡ ´ëÇØ, ÀÓÀÇ Áö¿¬ ŸÀ̸Ӹ¦ ½ÃÀÛÇÑ´Ù.

Á¶¸¸ °£¿¡ ŸÀ̸Ӱ¡ ¿Ï·áµÇ¸é È£½ºÆ®´Â ¿ª½Ã TTL 1ÀÇ IGMP ȸ¿ø º¸°í¸¦ ¸ÖƼij½ºÆ® ±×·ì¾îµå·¹½º·Î Àü¼ÛÇÑ´Ù. ÀÌ ¸Þ½ÃÁö´Â ÀÌ¹Ì ±×·ì¿¡ Âü¿©ÇÏ°í ÀÖ´Â ¸ðµç È£½ºÆ®µé°ú ŸÀ̸Ӱ¡ ¿Ï·áµÇ±â¸¦ ±â´Ù¸®°í Àִ ȣ½ºÆ®µé¿¡°Ô Àü´ÞµÈ´Ù. ±×·¯¸é °¢ È£½ºÆ®µéÀº ŸÀ̸Ӹ¦ ÁßÁöÇÏ°í ´õ ÀÌ»ó ¾Æ¹«·± º¸°íµµ ÇÏÁö ¾Ê´Â´Ù. ÇÏÁö¸¸ ÀÌ°ÍÀ¸·Î ¶ó¿ìÅÍ´Â ÀÚ½ÅÀÇ ¼­ºê³Ý¿¡ ±× ¸ÖƼij½ºÆ® ±×·ìÀÇ ¸â¹ö°¡ Á¸ÀçÇÑ´Ù´Â °Í¸¸ ¾Ë¸é µÇ±â ¶§¹®¿¡ ȸ¿øÀÌ ¸îÀ̳ª ÀÖ´ÂÁö ¾Ë±â À§ÇØ ´õ ÀÌ»ó, º¸°í ¹ÞÀ» ÇÊ¿ä°¡ ¾ø´Ù.

¸î ¹ø ÁúÀÇÇÑ ÈÄ¿¡µµ ±× ±×·ì¿¡ ´ëÇØ ¾Æ¹«·± ȸ¿ø º¸°í°¡ ¾øÀ¸¸é ¶ó¿ìÅÍ´Â ¸â¹ö°¡ ¾ø´Â °ÍÀ¸·Î °£ÁÖÇÏ°í ÇØ´ç ±×·ìÀÇ Æ®·¡ÇÈÀ» ¼­ºê³ÝÀ¸·Î Æ÷¿öµùÇÏÁö ¾Ê´Â´Ù. IGMPv1 ¿¡¼­´Â "±×·ì Å»Åð ¸Þ½ÃÁö(Leave Group messages)"°¡ ¾ø´Ù´Â Á¡¿¡ ÁÖ¸ñÇ϶ó.

È£½ºÆ®°¡ »õ ±×·ì¿¡ Âü¿©Çϸé Ä¿³ÎÀº ±×·ìÀ¸·Î º¸°í¸¦ º¸³»±â ¶§¹®¿¡ °¢°¢ÀÇ ÇÁ·Î¼¼½ºµéÀº »õ·Î¿î ȸ¿ø ÁúÀÇ°¡ µµÂøÇÒ µ¿¾È(1,2ºÐ Á¤µµ) ±â´Ù¸± ÇÊ¿ä°¡ ¾ø´Ù. "IP_ADD_MEMBERSHIP" Á¤¿¡¼­ º¸¾Ò°ÚÁö¸¸, ÀÌ IGMP ÆÐŶÀº IP_ADD_MEMBERSHI¸í·É¿¡ ´ëÇÑ ÀÀ´äÀ¸·Î Ä¿³ÎÀÌ »ý¼ºÇÑ´Ù. "»õ ±×·ì"À̶ó´Â ¸»À» ÁÖÀÇ ±íÀÌ º¸ÀÚ. È£½ºÆ®°¡ ÀÌ¹Ì Âü¿©ÁßÀÎ ±×·ì¿¡ ´ëÇØ ÇÁ·Î¼¼½º°¡ IP_ADD_MEMBERSHIP ¸í·ÉÀ» º¸³¾ °æ¿ì ¿ì¸®´Â ÀÌ¹Ì ±× ±×·ìÀÇ Æ®·¡ÇÈÀ» ¹Þ°í Àֱ⠶§¹®¿¡ ¾Æ¹«·± IGMP ÆÐŶµµ ¸¸µé¾îÁöÁö ¾ÊÀ» °ÍÀÌ´Ù. ´ë½Å ±×·ì»ç¿ë Ä«¿îÅÍ°¡ Áõ°¡ÇÑ´Ù. IGMPv1¿¡¼­ IP_DROP_MEMBERSHIP ¸í·ÉÀº µ¥ÀÌÅͱ׷¥À» »ý¼º½ÃÅ°Áö ¾Ê´Â´Ù.

È£½ºÆ® ȸ¿ø ÁúÀǴ ŸÀÔ 0x11, È£½ºÆ® ȸ¿ø º¸°í´Â °¢°¢ ŸÀÔ 0x12·Î ±¸ºÐÇÑ´Ù.

Àüü È£½ºÆ® ±×·ì¿¡´Â º¸°íÇÏÁö ¾Ê´Â´Ù. ÀÌ ±×·ìÀ¸·ÎÀÇ È¸¿øÀº ¿µ±¸ÀûÀÌ´Ù.

7.3 IGMP ¹öÀü 2.

»ó±â ³»¿ë¿¡ ´ëÇÑ Ãß°¡ »çÇ× Áß Áß¿äÇÑ °Í ÇÑ°¡Áö´Â ±×·ì ÀÌÅ» ¸Þ½ÃÁö(ŸÀÔ0x17)°¡ Æ÷ÇԵǾú´Ù´Â »ç½ÇÀÌ´Ù. ÀÌ ¸Þ½ÃÁö´Â ¼­ºê³Ý¿¡¼­ ¸¶Áö¸· È£½ºÆ®°¡ ±×·ìÀ» ÀÌÅ»ÇÏ´Â ½ÃÁ¡°ú ÁúÀÇ ½Ã°£ÀÌ ¸¸·áµÇ¾î ¶ó¿ìÅÍ°¡ ´õ ÀÌ»ó ±×·ì¿¡ ³²¾ÆÀִ ȸ¿øÀÌ ¾ø´Ù°í °áÁ¤ÇÏ´Â ½ÃÁ¡ »çÀÌÀÇ ´ë¿ªÆø ³¶ºñ(ÀÌÅ» Áö¿¬-leave latency)¸¦ ÁÙÀ̱â À§ÇØ Ãß°¡µÇ¾ú´Ù. ±×·ì ÀÌÅ» ¸Þ½ÃÁö´Â ±×·ìÀÇ ´Ù¸¥ ¸â¹öµé¿¡°Ô´Â ºÒÇÊ¿äÇÑ Á¤º¸À̱⠶§¹®¿¡ ³²¾ÆÀÖ´Â ±×·ìº¸´Ù Àüü ¶ó¿ìÅÍ ±×·ì(224.0.0.2)ÂÊÀ¸·Î Àü¼ÛÇØ¾ß ÇÑ´Ù. (Ä¿³Î ¹öÀü 2.0.33 ÀÌÇÏ¿¡¼­´Â ÀÌ ¸Þ½ÃÁö¸¦ ±×·ìÀ¸·Î º¸³Â¾ú´Ù. È£½ºÆ®·Î¼­´Â Çظ¦ ÀÔÀ» ÀÏÀº ¾øÁö¸¸, ¾µµ¥¾ø´Â Á¤º¸À̱⠶§¹®¿¡ ÀÌ Á¤º¸¸¦ ó¸®ÇÏ´Â °ÍÀº ½Ã°£³¶ºñÀÏ »ÓÀÌ´Ù.) ¾ðÁ¦ ÀÌÅ» ¸Þ½ÃÁö¸¦ º¸³¾ °ÍÀΰ¡, ¾ðÁ¦ º¸³»Áö ¾ÊÀ» °ÍÀΰ¡ ÇÏ´Â ¹®Á¦¿¡ ´ëÇؼ­´Â ¸î °¡Áö ¹Ì¹¦ÇÑ ¹®Á¦°¡ ÀÖ´Ù. °ü½ÉÀÌ ÀÖ´Ù¸é RFC¸¦ ÂüÁ¶ÇÒ °Í.

IGMPv2¶ó¿ìÅÍ°¡ ÀÌÅ» ¸Þ½ÃÁö¸¦ ¹ÞÀ¸¸é ¶ó¿ìÅÍ´Â ±×·ìÀ» ÁöÁ¤ÇÏ¿©(group-specific) ³²¾ÆÀÖ´Â ±×·ì¿¡°Ô ÁúÀǸ¦ º¸³½´Ù. À̰͵µ IGMPv2 ¿¡¼­ Ãß°¡µÈ »çÇ×ÀÌ´Ù. IGMPv1¿¡¼­ ±×·ì ÁöÁ¤ ÁúÀÇ´Â ¾ø¾ú´Ù. ¸ðµç ÁúÀÇ°¡ Àüü È£½ºÆ® ±×·ìÀ¸·Î º¸³»´Â ÁúÀÇ¿´´Ù. IGMP Çì´õ¿¡ Á¤ÀÇµÈ Å¸ÀÔ °ªÀº º¯ÇÏÁö ¾Ê¾ÒÁö¸¸(Àü°ú µ¿ÀÏÇÏ°Ô 0x11), "±×·ì ÁÖ¼Ò(Group Address)"Çʵå´Â ³²¾ÆÀÖ´Â ¸ÖƼij½ºÆ® ±×·ì ÁּҷΠä¿öÁø´Ù.

IGMPv1¿¡¼­ Àü¼Û½Ã 0À¸·Î ä¿ì°í ¼ö½Å½Ã ¹«½ÃÇϱâ·Î ÇÏ¿´´ø "Max Resp Time" Çʵå´Â "Membership Query"¿¡¼­¸¸ Àǹ̰¡ ÀÖ´Ù. ÀÌ Çʵå´Â º¸°íÇؾßÇÒ ÇÑ°è ½Ã°£À» ¼³Á¤Çϴµ¥ ¾²ÀδÙ. ¼º´ÉÀ» Á¶ÀýÇÏ´Â ¸ÞÄ¿´ÏÁòÀ¸·Î »ç¿ëÇÑ´Ù°í º¼ ¼ö ÀÖ´Ù.

IGMPv2¿¡¼­ »õ·Î¿î ¸Þ½ÃÁö ŸÀÔ 0x16ÀÌ Ãß°¡µÇ¾ú´Ù. ÀÌ°ÍÀº "Version 2 Membership Report"·Î¼­ IGMPv2 È£½ºÆ®°¡ IGMPv2 ¶ó¿ìÅ͸¦ ¹ß°ßÇßÀ» ¶§ Àü¼ÛÇÑ´Ù. (IGMPv2 È£½ºÆ®´Â "Max Response" Çʵ尡 0 À¸·Î ä¿öÁø ÆÐŶÀ» È®ÀÎÇÏ¿© IGMPv1 ¶ó¿ìÅÍ°¡ Á¸ÀçÇÑ´Ù´Â °ÍÀ» ¾Ë¾Æ³½´Ù).

µ¿½Ã¿¡ ¿©·¯ ¶ó¿ìÅÍ°¡ ÁúÀǸ¦ ÇÒ ¶§, IGMPv2 ´Â "discussions"¸¦ ȸÇÇÇÏ´Â ¸ÞÄ¿´ÏÁòÀ» Á¦°øÇÑ´Ù. ÀÌ °æ¿ì ³·Àº IP ÁÖ¼Ò¸¦ °¡Áø ¶ó¿ìÅÍ°¡ ÁúÀÇÀÚ(querier)°¡ µÇ°í ´Ù¸¥ ¶ó¿ìÅʹ ŸÀ̸Ӹ¦ ¼³Á¤ÇÑ´Ù. ³·Àº ¹øÈ£ÀÇ ¶ó¿ìÅÍ°¡ ¾î¶² ÀÌÀ¯·Î Á¦´ë·Î ÀÛµ¿ÇÏÁö ¸øÇϸé ŸÀ̸Ӱ¡ ¸¸·áµÈ ÈÄ ´Ù½Ã ÁúÀÇÀÚ¸¦ ¼³Á¤ÇÑ´Ù.

7.4 Ä¿³Î °ü·Ã »çÇ×

ÀÌ Àý¿¡¼­´Â ¸®´ª½º Ä¿³Î¿¡¼­ ¸ÖƼij½ºÆ® ±¸ÇöÀ» ÇнÀÇϱâ À§ÇÑ ½Ç¸¶¸®¸¦ º¸¿©ÁÙ °ÍÀÌ´Ù. ±¸Çö ÀÚü¸¦ ¼³¸íÇÏÁö´Â ¾Ê´Â´Ù. ´ÜÁö ¾îµð¼­ ãÀ» °ÍÀÎÁö¸¸ ¾Ë·ÁÁÖ´Ù.

ÀÌ ³»¿ëÀº 2.0.32¿¡¼­ÀÇ ¼³¸íÀ̹ǷΠÀÌ ±ÛÀ» Àд ½ÃÁ¡¿¡¼­ Á» ¿À·¡µÈ ³»¿ëÀÏÁöµµ ¸ð¸¥´Ù. (³×Æ®¿÷ ÄÚµå´Â 2.1.x¿¡¼­ ¸¹ÀÌ º¯°æµÇ¾ú´Ù.

¸®´ª½º Ä¿³Î¿¡¼­ ¸ÖƼij½ºÆ® ÄÚµå´Â Ç×»ó #ifdef CONFIG_IP_MULTICAST / #endif ½ÖÀ¸·Î µÑ·¯½Î¿© Àֱ⠶§¹®¿¡ ÇÊ¿äÇÏ´Ù¸é ¾ðÁ¦µçÁö Ä¿³Î¿¡ Æ÷ÇÔ(inclusion/exclusion)½ÃÅ°°Å³ª ¹èÁ¦½Ãų ¼ö ÀÖ´Ù. (ÀÌ Æ÷ÇÔ/¹èÁ¦´Â ÄÄÆÄÀÏ ½Ã¿¡ ÇàÇØÁö¸ç #ifdef ±¸¹®Àº ¼±Çà󸮱Ⱑ ÇÏ´Â ÀÛ¾÷À̶ó´Â °ÍÀ» ¾Ë°í ÀÖÀ» °ÍÀÌ´Ù. Æ÷ÇÔ¿©ºÎ °áÁ¤Àºmake config, make menuconfig ¶Ç´Â make xconfig¸¦ ½ÇÇà½Ãų ¶§ ÇÒ ¼ö ÀÖ´Ù.)

¸ÖƼij½ºÆ® ¶ó¿ìÅÍ ±â´ÉÀ» »ç¿ëÇÏ°í ½Í´Ù¸é #ifdef CONFIG_IP_MROUTE / #endif½Ö ¼ÓÀÇ ÄÚµåµéÀ» È°¼ºÈ­ ½ÃÄÑ¾ß ÇÑ´Ù.

Ä¿³Î ¼Ò½º´Â º¸Åë /usr/src/linux¿¡ ÀÖ´Ù. ÇÏÁö¸¸ À§Ä¡´Â º¯ÇÒ ¼öµµ ÀÖ´Â °ÍÀ̱⠶§¹®¿¡ Ä¿³Î ¼Ò½ºÀÇ À§Ä¡¸¦ °£´Ü ¸í·áÇÏ°Ô LINUX¶ó°í °¡Á¤ÇÏÀÚ. ÀÌÁ¦ Ä¿³Î¼Ò½º¸¦ /usr/src/linux ¿¡ Ç®¾úÀ» °æ¿ì, LINUX/net/ipv4/udp.c ´Â /usr/src/linux/net/ipv4/udp.c ¸¦ ÀǹÌÇÑ´Ù.

»ç¿ëÀÚ ÇÁ·Î±×·¥¿¡¼­ÀÇ ¸ÖƼij½ºÆ® ÀÎÅÍÆäÀ̽º´Â ¸ÖƼij½ºÆ® ÇÁ·Î±×·¡¹ÖÀ» ¼³¸íÇÑ Àý¿¡¼­ setsockopt()/ getsockopt()¸¦ ÅëÇØ ¸ðµÎ º¸¿© ÁÖ¾ú´Ù. ÀÌ µÎ ÇÔ¼ö´Â Àü´Þ¹ÞÀº º¯¼öÀÇ À¯È¿¼ºÀ» °Ë»çÇÑ ´ÙÀ½, ´Ù¸¥ ¸î °¡Áö ÇÔ¼ö¸¦ È£ÃâÇÏ¿© Ãß°¡ ÀûÀ¸·Î °Ë»çÇÏ°í, ¶Ç ´Ù¸¥ ÇÔ¼ö¸¦ È£ÃâÇÏ´Â ½ÄÀ¸·Î ±¸ÇöµÇ¾ú´Ù. (ÀÌ ¸ðµç ÇÔ¼ö È£Ãâ¿¡ °ü½ÉÀÌ ÀÖ´Ù¸é LINUX/net/socket.c (ÇÔ¼ö sys_socketcall() ¿Í sys_setsockopt()), LINUX/net/ipv4/af_inet.c (ÇÔ¼ö inet_setsockopt()) ±×¸®°í LINUX/net/ipv4/ip_sockglue.c (ÇÔ¼ö ip_setsockopt()) ¸¦ ÂüÁ¶Ç϶ó.)

LINUX/net/ipv4/ip_sockglue.cµµ ÁÖÀÇ ±í°Ô º¸¾Æ¾ß ÇÑ´Ù. ¿©±â¿¡´Â ÇÔ¼ö ip_setsockopt() ¿Í ip_getsockopt() °¡ µé¾î Àִµ¥ ´ëºÎºÐÀº (¾î¶² ¿¡·¯ üũ ÈÄ¿¡) °¡´ÉÇÑ optnameÀ» °Ë»çÇÏ´Â ½ºÀ§Ä¡°°Àº °ÍÀÌ´Ù. À¯´Ïij½ºÆ® ¿É¼Ç°ú ÇÔ²², IP_MULTICAST_TTL, IP_MULTICAST_LOOP, IP_MULTICAST_IF, IP_ADD_MEMBERSHIP, IP_DROP_MEMBERSHIP°°Àº ¸ðµç ¸ÖƼij½ºÆ® ¿É¼ÇÀ» ó¸®ÇÑ´Ù. ÀÌ ½ºÀ§Ä¡ ÀÌÀü¿¡ ¿É¼ÇÀ» °Ë»çÇÏ¿© ±×°ÍÀÌ ¸ÖƼij½ºÆ® ¶ó¿ìÅÍ ÁöÁ¤ ¿É¼ÇÀ̶ó¸é ÇÔ¼ö ip_mroute_setsockopt() ¿Í ip_mroute_getsockopt() ·Î ¶ó¿ìÆà µÈ´Ù. (ÆÄÀÏ LINUX/net/ipv4/ipmr.c ¿¡ ÀÖÀ½).

LINUX/net/ipv4/af_inet.c ¿¡¼­ ÀÌÀü Àý¿¡¼­ ³íÀÇÇß´ø ¼ÒÄÏ »ý¼º ±âº» °ªÀ» º¼ ¼ö ÀÖ´Ù. (loopback enabled, TTL=1, ÇÔ¼ö inet_create() Áß¿¡¼­)


  #ifdef CONFIG_IP_MULTICAST
          sk->ip_mc_loop=1;
          sk->ip_mc_ttl=1;
          *sk->ip_mc_name=0;
          sk->ip_mc_list=NULL;
  #endif

´ÙÀ½ Äڵ尡 "¼ÒÄÏÀ» ´ÝÀ¸¸é Ä¿³ÎÀº ÀÌ ¼ÒÄÏ¿¡ ÀÖ´ø ¸ðµç ȸ¿øÀ» Å»Åð½ÃŲ´Ù"´Â ³»¿ëÀ» ´ÜÁ¤ÀûÀ¸·Î º¸¿©ÁØ´Ù. (À§¿Í µ¿ÀÏ ÆÄÀÏÀÇ ÇÔ¼ö inet_release()¿¡¼­)


  #ifdef CONFIG_IP_MULTICAST
                  /* Applications forget to leave groups before exiting */
                  ip_mc_drop_socket(sk);
  #endif

¸µÅ© °èÃþÀÇ(Link Layer)ÀÇ ÀåÄ¡ µ¶¸³ÀûÀÎ(Device independent) ¿¬»êµéÀº LINUX/net/core/dev_mcast.c ¿¡ ÀÖ´Ù.

¾ÆÁ÷ µÎ °¡Áö Áß¿äÇÑ ÇÔ¼öµéÀ» ¼³¸íÇÏÁö ¾Ê¾Ò´Ù. ÀԷ ó¸® ÇÔ¼ö¿Í ¸ÖƼij½ºÆ® µ¥ÀÌÅͱ׷¥ Ãâ·Â ÇÔ¼öÀÌ´Ù. ´Ù¸¥ µ¥ÀÌÅͱ׷¥µé°ú ¸¶Âù°¡Áö·Î ÀÔ·Â µ¥ÀÌÅͱ׷¥Àº ÀåÄ¡ µå¶óÀ̹ö·ÎºÎÅÍ ip_rcv() ÇÕ¼ö(LINUX/net/ipv4/ip_input.c)·Î Àü´ÞµÈ´Ù. ÀÌ ÇÔ¼ö¿¡¼­ ÇÏÀ§ °èÃþÀ¸·ÎºÎÅÍ ÀüÇØÁø ¸ÖƼij½ºÆ® ÆÐŶÀ» ¿Ïº®ÇÏ°Ô ÇÊÅ͸µÇÑ´Ù(ÇÏÀ§·¹À̾¼­ ÃÖ´ëÇÑ ÇÊÅ͸µÇÏÁö¸¸, IP °èÃþ¿¡¼­ ¿ì¸®°¡ °ü½ÉÀ» °¡Áö°í ÀÖ´Â ±×·ì¿¡ ´ëÇØ 100% ¾Ë°í Àֱ⠶§¹®¿¡ ÆÐŶÀ» ¿ÏÀüÇÏ°Ô ÇÊÅ͸µÇÑ´Ù°í Çß´ø°ÍÀ» ±â¾ïÇÏÀÚ.) È£½ºÆ®°¡ ¸ÖƼij½ºÆ® ¶ó¿ìÅÍ·Î ÀÛµ¿ÁßÀ̶ó¸é ¿ª½Ã ÀÌ ÇÔ¼ö°¡ ÆÐŶ Æ÷¿öµù ¿©ºÎ¸¦ °áÁ¤ÇÏ°í ÀûÀýÇÏ°Ô ipmr_forward()¸¦ È£ÃâÇÑ´Ù. (ipmr_forward() Àº LINUX/net/ipv4/ipmr.c¿¡ ±¸ÇöµÇ¾î ÀÖ´Ù.).

ÆÐŶ Ãâ·Â ÀÓ¹«¸¦ ¸ÃÀº ÄÚµå´Â LINUX/net/ipv4/ip_output.c¿¡ ´ã°ÜÁ® ÀÖ´Ù. ÀÌ°÷¿¡¼­ ÆÐŶÀ» ·çÇÁ¹é ÇÒÁö ¾È ÇÒÁö(¾ÈÇÑ´Ù¸é ip_queue_xmit()È£Ãâ) °Ë»çÇϱ⠶§¹®¿¡IP_MULTICAST_LOOP ¿É¼ÇÀÌ È¿·ÂÀ» ¹ßÈÖÇÏ´Â °÷ÀÌ´Ù. ¶ÇÇÑ, ¿ÜºÎ·Î ÇâÇÏ´Â ÆÐŶÀÌ ¸ÖƼij½ºÆ®ÀÎÁö À¯´Ïij½ºÆ®ÀÎÁö¿¡ ÀÇ°ÅÇÏ¿© TTLÀ» Á¤ÇÏ´Â °÷À̱⵵ ÇÏ´Ù. ÀüÀÚÀÇ °Ü¿ì IP_MULTICAST_TTL ·Î Àü´ÞµÈ º¯¼ö¸¦ »ç¿ëÇÑ´Ù(ÇÔ¼ö ip_build_xmit()).

mrouted(Ä¿³Î¿¡ ¸ÖƼij½ºÆ® µ¥ÀÌÅͱ׷¥ ¶ó¿ìÆà ¹æ¹ýÀ» ¾Ë·ÁÁÖ´Â ÇÁ·Î±×·¥)·Î ÀÛ¾÷ÇÏ´Â µ¿¾È, ¿ì¸®´Â ¸ÖƼij½ºÆ® ¶ó¿ìÅÍ·Î ÀÛµ¿ÇÏ´Â ¿ì¸®ÀÇ ¸®´ª½º ¹Ú½º¿¡¼­ ¸¸µé¾îÁø ÆÐŶÀ» Á¦¿ÜÇÑ, ·ÎÄà ³×Æ®¿÷¿¡¼­ »ý¼ºµÈ ¸ÖƼij½ºÆ® µ¥ÀÌÅͱ׷¥Àº ¸ðµÎ ÀûÀýÇÏ°Ô ¶ó¿ìÆõǴ °ÍÀ» ¹ß°ßÇß´Ù. ip_input.c ´Â Á¦´ë·Î ÀÛµ¿ÇÏ°í ÀÖ´Â°Í °°¾ÒÁö¸¸ ip_output.c ´Â ±×·¸Áö ¾Ê¾Ò´Ù. Ãâ·Â ÇÁ·Î±×·¥ÀÇ ¼Ò½º Äڵ带 Àд µ¿¾È ¿ÜºÎ·Î ³ª°¡´Â µ¥ÀÌÅͱ׷¥µéÀÌ ¶ó¿ìÆà ¿©ºÎ¸¦ °áÁ¤ÇÏ´Â ÇÔ¼ö ipmr_forward()¸¦ °ÅÄ¡Áö ¾Ê´Â °ÍÀ» ¹ß°ßÇß´Ù. ÆÐŶµéÀº ·ÎÄà ³×Æ®¿÷À¸·Î Ãâ·ÂµÇ¾úÁö¸¸ ³×Æ®¿÷ Ä«µå´Â ÀÚ½ÅÀÌ Àü¼ÛÇÏ´Â µ¥ÀÌÅͱ׷¥À» ÀÐÀ» ¼ö ¾ø¾ú°í, ÀÌ·± µ¥ÀÌÅͱ׷¥µéÀº ¶ó¿ìÆõÇÁö ¾Ê¾Ò´Ù. ¿ì¸®°¡ ip_build_xmit() ÇÔ¼ö¿¡ ÀûÀýÇÑ Äڵ带 Ãß°¡ÇÏÀÚ ¸ðµç °ÍÀÌ ¿Ã¹Ù·Î ÀÛµ¿ÇÏ¿´´Ù. (¼Ò½º ¼öÁ¤Àº »çÄ¡¸¦ ¶°´Â °Íµµ À¯½ÄÇÑôÇÏ´Â °Íµµ ¾Æ´Ï´Ù; ÇÊ¿ä´Ù!)

ipmr_forward() ´Â ¼ö Â÷·Ê ¾ð±ÞÇß¾ú´Ù. ipmr_forward() ´Â ¿ì¸®°¡ ÈçÈ÷ À߸ø ÀÌÇØÇÏ°í ÀÖ´Â °ÍÀ» Ç®¾îÁÙ ¼ö Àֱ⠶§¹®¿¡ ¾ÆÁÖ Áß¿äÇÑ ÇÔ¼öÀÌ´Ù. ¸ÖƼij½ºÆ® Æ®·¡ÇÈÀ» ¶ó¿ìÆÃÇÒ ¶§, ÆÐŶ »çº»À» ¸¸µé°í ±×°ÍÀ» ¿Ã¹Ù¸¥ ¼ö½ÅÀÚ¿¡°Ô Àü´ÞÇÏ´Â °ÍÀº mroutedÀÚü°¡ ¾Æ´Ï´Ù. mrouted´Â ¸ðµç ¸ÖƼij½ºÆ® Æ®·¡ÇÈÀ» ¼ö½ÅÇÏ¿©, ±× Á¤º¸¿¡ ±Ù°ÅÇÏ¿© , ¸ÖƼij½ºÆ® ¶ó¿ìÆà Å×À̺íÀ» °è»êÇØ ³»°í Ä¿³Î¿¡ ¶ó¿ìÆà ¹æ¹ýÀ» ¾Ë·ÁÁØ´Ù. "ÀÌ ÀÎÅÍÆäÀ̽º¿¡¼­ µé¾î¿À´Â Àú ±×·ìÀÇ µ¥ÀÌÅͱ׷¥Àº Àú ÀÎÅÍÆäÀ̽º·Î º¸³»¶ó."

ÀÌ ¶ó¿ìÆà Á¤º¸´Â mrouted µ¥¸ó(raw ¼ÒÄÏ »ý¼º½Ã Áö¾îµÈ ÇÁ·ÎÅäÄÝÀº IPPROTO_IGMPÀ̾î¾ß ÇÑ´Ù.)ÀÌ ¸¸µç raw ¼ÒÄÏ¿¡¼­ setsockopt()¸¦ È£ÃâÇÏ¿© Ä¿³Î¿¡ ¼³Á¤ÇÑ´Ù. ÀÌ ¿É¼ÇÀº LINUX/net/ipv4/ipmr.c ÀÇ ip_mroute_setsockopt()ÇÔ¼ö¿¡¼­ ó¸®ÇÑ´Ù. ¼ÒÄÏ¿¡¼­ ¹ßÇàÇÑ Ã¹¹ø° ¿É¼Ç(would be better to call them commands rather than options)Àº MRT_INITÀ̾î¾ß ÇÑ´Ù. ù ¹ø° ¹ßÇàÇÑ ¿É¼ÇÀÌ MRT_INITÀÌ ¾Æ´Ï¶ó¸é ´Ù¸¥ ¸ðµç ¸í·ÉÀº ¹«½ÃÇÑ´Ù. (-EACCES¸¦ ¹Ý³³) ÇÑ È£½ºÆ® »ó¿¡´Â mroutedÀÇ ÀνºÅϽº°¡ ²À Çϳª¸¸ Á¸ÀçÇÒ ¼ö ÀÖ´Ù. ÀÌ°ÍÀ» ÃßÀûÇϱâ À§ÇØ Ã¹ ¹ø° MRT_INIT À» ¹Þ¾ÒÀ» ¶§ ±¸Á¶Ã¼ sock* mroute_socketÀÌ MRT_INIT À» ¼ö½ÅÇÑ ¼ÒÄÏÀ» °¡¸®Å°°Ô µÈ´Ù. ¸¸ÀÏ MRT_INIT À» ¹ßÇàÇßÀ»¶§ mroute_socketÀÌ ³Î(null)°ªÀ» °¡ÁöÁö ¾Ê´Â´Ù¸é ÀÌ¹Ì ´Ù¸¥ mrouted°¡ ÀÛµ¿ÁßÀÓÀ» ÀǹÌÇϹǷΠ-EADDRINUSE À» ¹Ý³³ÇÑ´Ù. ³ª¸ÓÁö ´Ù¸¥ ¸í·Éµé(MRT_DONE, MRT_ADD_VIF, MRT_DEL_VIF, MRT_ADD_MFC, MRT_DEL_MFC and MRT_ASSERT)Àº mroute_socket°ú ´Ù¸¥ ¼ÒÄÏ¿¡¼­ ¿Ã °æ¿ì -EACCES ¸¦ ¹Ý³³ÇÑ´Ù.

¶ó¿ìÆÃµÈ ¸ÖƼij½ºÆ® µ¥ÀÌÅͱ׷¥Àº ¹°¸®Àû ÀÎÅÍÆäÀ̽º ȤÀº (°¡»óÀûÀÎ) ÅͳÎÀ» ÅëÇØ Àü¼ÛÇϱ⠶§¹®¿¡, ÀϹÝÀûÀÎ Ãß»óÈ­(abstraction) ´Ü°è¸¦ VIFs, Áï, °¡»ó ÀÎÅÍÆäÀ̽º (Virtual InterFaces)°í¾ÈÇس´Ù. mrouted´Â ¹°¸® ȤÀº ÅͳΠÀÎÅÍÆäÀ̽º¸¦ °¡¸®Å°´Â vif ±¸Á¶Ã¼¸¦ ¶ó¿ìÆà Å×ÀÌºí¿¡ Ãß°¡Çϱâ À§ÇÏ¿© Ä¿³Î¿¡ ³Ñ°ÜÁÖ°í, µ¥ÀÌÅͱ׷¥À» ¾îµð·Î Æ÷¿öµùÇÒÁö ¾Ë·ÁÁÖ´Â ¸ÖƼij½ºÆ® Æ÷¿öµù ¸ñ·Ï(multicast forwarding entries)¿¡µµ ¾Ë·ÁÁØ´Ù.

VIFs ´Â MRT_ADD_VIF ·Î Ãß°¡ÇÏ°í MRT_DEL_VIF ·Î »èÁ¦ÇÑ´Ù.µÎ ÇÔ¼ö ¸ðµÎ vifctl ±¸Á¶Ã¼¸¦ Ä¿³Î·Î ³Ñ±ä´Ù. ( /usr/include/linux/mroute.h) ¿¡¼­ ´ÙÀ½°ú °°ÀÌ Á¤ÀÇÇÏ°í ÀÖ´Ù.


  struct vifctl {
          vifi_t  vifc_vifi;              /* Index of VIF */
          unsigned char vifc_flags;       /* VIFF_ flags */
          unsigned char vifc_threshold;   /* ttl limit */
          unsigned int vifc_rate_limit;   /* Rate limiter values (NI) */
          struct in_addr vifc_lcl_addr;   /* Our address */
          struct in_addr vifc_rmt_addr;   /* IPIP tunnel addr */
  };

ÀÌ Á¤º¸¸¦ ÅëÇØ vif_device ±¸Á¶Ã¼¸¦ ¸¸µç´Ù.


  struct vif_device
  {
          struct device   *dev;                   /* Device we are using */
          struct route    *rt_cache;              /* Tunnel route cache */
          unsigned long   bytes_in,bytes_out;
          unsigned long   pkt_in,pkt_out;         /* Statistics */
          unsigned long   rate_limit;             /* Traffic shaping (NI) */
          unsigned char   threshold;              /* TTL threshold */
          unsigned short  flags;                  /* Control flags */
          unsigned long   local,remote;           /* Addresses(remote for tunnels)*/
  };

ÀÌ ±¸Á¶Ã¼¿¡¼­ dev Ç׸ñÀ» ÁÖ¸ñÇ϶ó. device ±¸Á¶Ã¼´Â /usr/include/linux/netdevice.h ¿¡¼­ Á¤ÀÇÇÏ°í ÀÖ´Ù. ¾ÆÁÖ Å« ±¸Á¶Ã¼ÀÌÁö¸¸ ¿ì¸®´Â ´ÙÀ½ Çʵ忡¸¸ °ü½ÉÀ» µÎ¸é µÈ´Ù.

struct ip_mc_list* ip_mc_list; /* IP multicast filter chain */

ip_mc_list ±¸Á¶Ã¼´Â /usr/include/linux/igmp.h¿¡¼­ ´ÙÀ½°ú °°ÀÌ Á¤ÀÇÇÏ°í ÀÖ´Ù. :


  struct ip_mc_list
  {
          struct device *interface;
          unsigned long multiaddr;
          struct ip_mc_list *next;
          struct timer_list timer;
          short tm_running;
          short reporter;
          int users;
  };

dev ±¸Á¶Ã¼ÀÇ ip_mc_list ´Â ip_mc_list Çü ±¸Á¶Ã¼ÀÇ ¿¬°á¸®½ºÆ®¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍÀÌ´Ù. ip_mc_list ´Â ÇØ´ç ³×Æ®¿÷ ÀÎÅÍÆäÀ̽º°¡ ¸â¹ö·Î Âü¿©ÇÏ°í ÀÖ´Â ¸ÖƼij½ºÆ® ±×·ìÀ» ´ã°íÀÖ´Ù. ¿©±â¼­ ´Ù½Ã Çѹø, ȸ¿øÀº ÀÎÅÍÆäÀ̽º¿Í °ü°è°¡ ÀÖÀ½À» ¾Ë ¼ö ÀÖ´Ù. LINUX/net/ipv4/ip_input.c ´Â µ¥ÀÌÅͱ׷¥ÀÌ (µ¥ÀÌÅͱ׷¥À» ¼ö½ÅÇÑ ÀÎÅÍÆäÀ̽º°¡ ¼ÓÇÏ´Â ±×·ì °¡¿îµ¥) ¾î¶² ±×·ì¿¡ ¼ÓÇÑ °ÍÀÎÁö °áÁ¤Çϱâ À§ÇØ ÀÌ ¿¬°á¸®½ºÆ®¸¦ ¼øȸÇÑ´Ù.


  #ifdef CONFIG_IP_MULTICAST
                  if(!(dev->flags&IFF_ALLMULTI) && brd==IS_MULTICAfST
                     && iph->daddr!=IGMP_ALL_HOSTS
                     && !(dev->flags&IFF_LOOPBACK))
                  {
                          /*
                           *      Check it is for one of our groups
                           */
                          struct ip_mc_list *ip_mc=dev->ip_mc_list;
                          do
                          {
                                  if(ip_mc==NULL)
                                  {
                                          kfree_skb(skb, FREE_WRITE);
                                          return 0;
                                  }
                                  if(ip_mc->multiaddr==iph->daddr)
                                          break;
                                  ip_mc=ip_mc->next;
                          }
                          while(1);
                  }
  #endif

ip_mc_list±¸Á¶Ã¼¿¡¼­ users Çʵå´Â "IGMP ¹öÀü 1"¿¡¼­ ¼³¸íÇß´ø °ÍÀ» ±¸ÇöÇϱâ À§ÇØ »ç¿ëÇÑ´Ù. ÇÁ·Î¼¼½º°¡ ±×·ì¿¡ Âü¿© ÇÒ¶§, ÀÎÅÍÆäÀ̽º°¡ ÀÌ¹Ì ±× ±×·ìÀÇ È¸¿øÀ̶ó¸é (´Ù½Ã ¸»Çؼ­, µ¿ÀÏ ÀÎÅÍÆäÀ̽º·Î µ¿ÀÏ ±×·ì¿¡ Âü¿©ÇÑ ÇÁ·Î¼¼½º°¡ ÀÌ¹Ì ÀÖÀ¸¸é) ¸â¹ö ¼ö(users)¸¸ Áõ°¡½ÃŲ´Ù. IGMP ¸Þ½ÃÁö¸¦ º¸³»Áö ¾ÊÀ½À», ´ÙÀ½ Äڵ忡¼­ º¼ ¼ö ÀÖ´Ù. (ip_mc_inc_group() ¿¡¼­ °¡Á®¿ÔÀ¸¸ç, ip_mc_join_group() ¿Í LINUX/net/ipv4/igmp.c¿¡¼­ È£ÃâÇÑ´Ù.)


          for(i=dev->ip_mc_list;i!=NULL;i=i->next)
          {
                  if(i->multiaddr==addr)
                  {
                          i->users++;
                          return;
                  }
          }

¸â¹ö°¡ Å»ÅðÇÒ ¶§ Ä«¿îÅ͸¦ °¨¼ÒÇϸç, Ä«¿îÅÍ°¡ 0¿¡ ´Ù´Ù¶úÀ» ¶§¿¡¸¸ ºÎ°¡ÀûÀÎ ÀÛ¾÷À» ¼öÇàÇÑ´Ù. (ip_mc_dec_group()).

MRT_ADD_MFC ¿Í MRT_DEL_MFC ´Â ¸ÖƼij½ºÆ® ¶ó¿ìÆà Å×ÀÌºí¿¡¼­ Æ÷¿öµù Ç׸ñÀ» ¼ºÁ¤Çϰųª »èÁ¦ÇÑ´Ù. µÑ ´Ù mfcctl ±¸Á¶Ã¼¸¦ ´ÙÀ½ Á¤º¸¿Í ÇÔ²² Ä¿³Î·Î ³Ñ±ä´Ù. (/usr/include/linux/mroute.h ¿¡¼­ Á¤ÀÇ)


  struct mfcctl
  {
          struct in_addr mfcc_origin;             /* Origin of mcast      */
          struct in_addr mfcc_mcastgrp;           /* Group in question    */
          vifi_t  mfcc_parent;                    /* Where it arrived     */
          unsigned char mfcc_ttls[MAXVIFS];       /* Where it is going    */
  };

ÀÌ»óÀÇ Á¤º¸¸¦ °¡Áö°í, ipmr_forward() ´Â VIFs¸¦ "µ¹¾Æ´Ù´Ñ´Ù". ±×¸®°í ÀÏÄ¡ÇÏ´Â Æ÷¿öµù Ç׸ñÀ» ¹ß°ßÇÏ¸é µ¥ÀÌÅͱ׷¥À» º¹»çÇÏ¿© ipmr_queue_xmit()À» È£ÃâÇÑ´Ù. ±×·¯¸é, ipmr_queue_xmit() Àº ÆÐŶÀ» ÅͳÎÀ» ÅëÇØ º¸³¾ °æ¿ì ¶ó¿ìÆà Å×ÀÌºí¿¡ ¸í½Ã µÃ Ãâ·ÂÀåÄ¡¿Í ¸ñÀûÁö ÁÖ¼Ò¸¦ ÀÌ¿ëÇØ Àü¼ÛÇÑ´Ù. (Áï, ¹Ý´ëÆí ÅͳΠÁ¾´ÜÀÇ À¯´Ïij½ºÆ® ÁÖ¼Ò) ÇÔ¼ö ip_rt_event() ´Â(Ãâ·Â°ú Á÷Á¢ÀûÀÎ °ü·ÃÀº ¾øÁö¸¸ ip_output.c ¿¡ µé¾î ÀÖ´Ù.) ÀåÄ¡ È°¼ºÈ­ ¸Þ½ÃÁö °°Àº ³×Æ®¿÷ ÀåÄ¡ °ü·ÃµÈ À̺¥Æ®(event)¸¦ ¹Þ´Â´Ù. ÀÌ ÇÔ¼ö´Â ÀåÄ¡°¡ Àüü È£½ºÆ® ±×·ì¿¡ Âü¿©ÇÏ´Â °ÍÀ» º¸ÁõÇÑ´Ù.

IGMP ÇÔ¼öµéÀº LINUX/net/ipv4/igmp.c ¿¡¼­ ±¸ÇöÇÑ´Ù. ÀÌ ÇÔ¼öµé¿¡ °üÇÑ Áß¿äÇÑ Á¤º¸´Â /usr/include/linux/igmp.h ¿Í /usr/include/linux/mroute.h ¿¡ ÀÖ´Ù. /proc/net ÀÇ IGMP °ü·Ã Ç׸ñÀº LINUX/net/ipv4/ip_output.c¿¡ ÀÖ´Â ip_init() ¿¡¼­ ¸¸µç´Ù.

8. ¶ó¿ìÆà Á¤Ã¥°ú Æ÷¿öµù ±â¼ú

º°·Î ÁÁÁö ¾ÊÀº ¾Ë°í¸®ÁòÀº ¸ÖƼij½ºÆ® µ¥ÀÌÅÍ ¼ö½Å ÀÇ»ç¿Í »ó°ü¾øÀÌ Àü ¼¼°è·Î Æ®·¡ÇÈÀ» ³»º¸³½´Ù. ÀÌ·± ÃÖÀûÈ­ µÇÁö ¾ÊÀº ¾Ë°í¸®ÁòÀ» ´ë½ÅÇÒ ¸î °¡Áö Æ÷¿öµù ±â¼ú°ú ¶ó¿ìÆà ¾Ë°í¸®ÁòÀÌ °³¹ßµÇ¾ú´Ù.

°Å¸® º¤ÅÍ ¸ÖƼij½ºÆ® ¶ó¿ìÆà ÇÁ·ÎÅäÄÝ DVMRP (Distance Vector Multicast Routing Protocol) ´Â ¾Æ¸¶µµ ¿À´Ã³¯ ¸ÖƼij½ºÆ® ¶ó¿ìÅÍ ´ëºÎºÐÀÌ »ç¿ëÇÏ°í ÀÖ´Â ¾Ë°í¸®ÁòÀÏ °ÍÀÌ´Ù. ÀÌ°ÍÀº °í¹ÐµµÇü(dense mode) ¶ó¿ìÆà ÇÁ·ÎÅäÄÝ, Áï, ³ôÀº ´ë¿ªÆø¿¡ ¸â¹öµéÀÌ °í¹Ðµµ·Î ºÐ»êµÇ¾îÀÖ´Â Àִ ȯ°æ¿¡¼­ Àß ÀÛµ¿ÇÑ´Ù. ÇÏÁö¸¸, ¸â¹öµéÀÌ ³·Àº ¹Ðµµ·Î Èð¾îÁ®ÀÖ´Â °æ¿ì ¹®Á¦(scalability problem)°¡ ÀÖ´Ù.

DVMRP °°Àº °í¹ÐµµÇü ¶ó¿ìÆà ÇÁ·ÎÅäÄÝ·Î ¸ÖƼij½ºÆ® È®ÀåÇü ÃִܰŸ® ¿ì¼± ÇÁ·ÎÅäÄÝ MOSPF (Multicast Extensions to OSPF -Open Shortest Path First-) , ÇÁ·ÎÅäÄÝ µ¶¸³Çü °íÁýÀû ¸ÖƼij½ºÆ® PIM-DM (Protocol-Independent Multicast Dense Mode) ±×¸®°í Á᫐ ±â¹Ý Æ®¸® CBT (Core Based Trees) °¡ ÀÖ´Ù.

OSPF ¹öÀü 2 ´Â RFC 1583 , MOSPF ´Â RFC 1584 , PIM-SM °ú CBT ´Â °¢°¢ RFC 2117 °ú 2201 ÀÌ ±Ô°ÝÀ» ¸í½ÃÇÏ°í ÀÖ´Ù.

ÀÌ ¸ðµç ¶ó¿ìÆà ÇÁ·ÎÅäÄݵéÀº flooding, Reverse Path Broadcasting (RPB), Truncated Reverse Path Broadcasting (TRPB), Reverse Path Multicasting (RPM) or Shared Trees °°Àº ¸ÖƼij½ºÆ® Æ÷¿öµù ±â¼úÀ» »ç¿ëÇÑ´Ù.

³»¿ëÀÌ ³Ê¹« ±æ¾îÁö¹Ç·Î ÀÌ ¸ðµç °ÍµéÀ» ¿©±â¼­ ¼³¸íÇÏÁö´Â ¾Ê°Ú´Ù. À̰͵鿡 ´ëÇÑ Çؼ³Àº ½±°Ô ã¾Æº¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. draft-ietf-mboned-in.txt ¹®¼­¸¦ ÀÐ¾î º¼ °ÍÀ» ±ÇÇÑ´Ù. À§ÀÇ RFC µéÀÌ ÀÖ´Â °÷¿¡ °°ÀÌ ÀÖÀ» °ÍÀ̸ç, »ó±âÇÑ ±â¼ú°ú Á¤Ã¥µé¿¡ ´ëÇÑ ¾à°£ ÀÚ¼¼ÇÑ ³»¿ëÀ» ´ã°íÀÖ´Ù.

9. ¸ÖƼij½ºÆ® Æ®·£½ºÆ÷Æ® ÇÁ·ÎÅäÄÝ

Áö±Ý±îÁö UDP¸¦ ÀÌ¿ëÇÑ ¸ÖƼij½ºÆ® Àü¼Û¿¡ ´ëÇØ ¾Ë¾Æº¸¾Ò´Ù. TCP¿¡¼­´Â ºÒ°¡´ÉÇϱ⠶§¹®¿¡ ÀÌ»óÀÌ ÀϹÝÀûÀÎ ³»¿ëÀÌ´Ù. ±×·¸Áö¸¸, Á»´õ »õ·Î¿î ¸ÖƼij½ºÆ® Æ®·£½ºÆ÷Æ® ÇÁ·ÎÅäÄÝ (Multicast Transport Protocols) À» ¸¸µé¾î³»±â À§ÇØ Áö³­ ¸î ³â°£ ÁýÁßÀûÀÎ ¿¬±¸°¡ °è¼ÓµÇ°í ÀÖ´Ù.

»õ·Î °³¹ßµÈ ÇÁ·ÎÅäÄÝ °¡¿îµ¥ ¸î °¡Áö´Â ±¸Çö ´Ü°è¸¦ °ÅÃÄ Å×½ºÆ® ´Ü°è±îÁö À̸£°í ÀÖ´Ù. ¸ðµç ÇüÅÂÀÇ ÀÀ¿ë¿¡ ÀûÇÕÇÑ ÀϹÝÀûÀÎ ¸ÖƼij½ºÆ® Æ®·£½ºÆ÷Æ® ÇÁ·ÎÅäÄÝÀº Á¸ÀçÇÏÁö ¾Ê´Â´Ù´Â °ÍÀÌ, ¿¬±¸¸¦ ÅëÇØ ¹àÇôÁö´Â °Í °°´Ù.

¾ÆÁÖ º¹ÀâÇÏ°í Á¶Á¤Çϱ⠾î·Á¿î ÇÁ·ÎÅäÄÝ¿¡¼­ ´ÙÀ½°ú °°Àº ¹®Á¦µéÀ» »ý°¢ÇØ º¸ÀÚ. Áö¿¬(¸ÖƼ¹Ìµð¾î ȸÀÇ¿¡¼­), ÀÚ·á ¼Õ½Ç, ÆÐŶ Á¤·Ä(ordering), ÀçÀü¼Û, È帧 ¹× È¥Àâµµ Á¶Á¤, ±×·ì °ü¸® µî.....°Ô´Ù°¡ ¼ö½ÅÀÚ°¡ Çϳª°¡ ¾Æ´Ï¶ó ¼ö¹é ¼öõ °³ÀÇ Àú¹Ðµµ ºÐ»ê È£½ºÆ®µéÀ̶ó¸é...ÀÌ·± °æ¿ì¿¡ Á¶Á¤¿¡ Å« °ï¶õÀ» °ÞÀ» °ÍÀÌ´Ù. µû¶ó¼­, ¼ö½ÅÇÑ ¸ðµç ÆÐŶ¿¡ ´ëÇØ ¼ö½Å È®ÀÎ(ACKs)À» º¸³»´Â ´ë½Å, ¼ö½ÅÇÏÁö ¸øÇÑ ÆÐŶ¿¡ ´ëÇؼ­¸¸ ¼ö½Å ºÒ·® ½ÅÈ£(NACKs)¸¦ º¸³»´Â ½ÄÀÇ ¾Ë°í¸®ÁòÀ» °³¹ßÇÑ´Ù. RFC 1458 ÀÌ ¸ÖƼij½ºÆ® ÇÁ·ÎÅäÄÝ ¿ä±¸»çÇ×À» Á¦¾ÈÇÏ°í ÀÖ´Ù.

¸ÖƼij½ºÆ® ÇÁ·ÎÅäÄÝ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Çؼ³Àº ¹®¼­ÀÇ ¹üÀ§¸¦ ³Ñ±â ¶§¹®¿¡ ´õ ÀÌ»ó ¼³¸íÇÏÁö ¾ÊÀ» °ÍÀÌÁö¸¸, ´ë½Å, ÇÁ·ÎÅäÄÝ À̸§°ú ÀڷḦ ã¾Æ º¼ ¼ö ÀÖ´Â ¿äÁ¡¸¸ ¤°í ³Ñ¾î°¡µµ·Ï ÇÏ°Ú´Ù. Real-Time Transport Protocol (RTP) Àº ºÐ»êÇü ¸ÖƼ¹Ìµð¾î ȸÀÇ(multi-partite multimedia conferences)¿Í °ü·Ã ÀÖÀ¸¸ç, Scalable Reliable Multicast (SRM) Àº wb (the distributed White-Board tool, see section ``Multicast applications'')°¡ »ç¿ëÇÑ´Ù. Uniform Reliable Group Communication Protocol (URGC) Àº Áß¾Ó ÁýÁᫎ Á¦¾î¿¡¼­ ÀÚ·á ó¸®(transaction) °¡ ½Å·ÚÀûÀ̸ç Á¤¿¬È÷ ÀÌ·ç¾îÁú ¼ö ÀÖµµ·Ï µµ¿ÍÁØ´Ù. Muse ´Â MBone ¿¡¼­ ´º½º¸¦ Àü¼ÛÇÒ ¼ö ÀÖµµ·Ï ƯÁ¤ ÇÁ·Î±×·¥¿ëÀ¸·Î °í¾ÈµÈ °ÍÀ̸ç, Multicast File Transfer Protocol (MFTP) Àº ¹®ÀÚ ±×´ë·Î ÆÄÀÏ Àü¼Û°úÁ¤ ȸÀÇ¿¡ Âü¿©ÇϵíÀÌ Âü¿© ÇÒ¼ö ÀÖµµ·Ï ÇØÁÖ´Â ÇÁ·ÎÅäÄÝÀÌ´Ù. Log-Based Receiver-reliable Multicast (LBRM) Àº ±â·Ï ¼­¹ö(logging server) ·Î º¸³»Áö´Â ¸ðµç ÆÐŶÀ» ÃßÀûÇÏ¿© Àü¼ÛÃø¿¡ µ¥ÀÌÅ͸¦ ´Ù½Ã Àü¼ÛÇؾßÇÏ´ÂÁö ¾Æ´Ï¸é ÀÌ»ó ¾øÀÌ ¼ö½ÅµÇ¾ú´ÂÁö ¾Ë·ÁÁִ ƯÀÌÇÑ ÇÁ·ÎÅäÄÝÀÌ´Ù. ¶Ç ÇÑ°¡Áö, ¸ÖƼij½ºÆ® ÇÁ·ÎÅäÄÝÀ̸鼭 STORM (STructure-Oriented Resilient Multicast)À̶ó´Â Àç¹ÌÀÖ´Â À̸§À» °¡Áø ÇÁ·ÎÅäÄݵµ ÀÖ´Ù. À¥À» ã¾Æº¸¸é ÀÌ ¿Ü¿¡´Ù ¸¹Àº ¸ÖƼij½ºÆ® ÇÁ·ÎÅäÄÝÀÌ ÀÖÀ¸¸ç ¸ÖƼij½ºÆ®¸¦ ÀÌ¿ëÇØ »õ·Î¿î ÀϵéÀ» ¹úÀÌ·Á´Â Àç¹ÌÀÖ´Â ³»¿ëÀÇ ±Ûµéµµ ¸¹´Ù.(¿¹¸¦ µé¾î, ¸ÖƼij½ºÆ®¸¦ ÀÌ¿ëÇÑ À¥ ÆäÀÌÁö ÀÚµ¿ Àü¼Û °°Àº °Í)

¸ÖƼij½ºÆ® ÇÁ·ÎÅäÄÝ°£ÀÇ ½Å·Ú¼ººñ±³´Â http://www.tascnets.com/mist/doc/mcpCompare.htmlÀ» Âü°íÇ϶ó.

¸ÖƼij½ºÆ®¿Í °ü·ÃÇÑ Èï¹Ì·Î¿î ¸µÅ©µé°ú ÃֽŠÁ¤º¸(ÀÎÅÍ³Ý ÃʾÈ, RFC, ³í¹®, ¸µÅ©)°¡ °¡µæÇÑ ¾ÆÁÖ ÁÁÀº »çÀÌÆ®´Ù. http://research.ivv.nasa.gov/RMP/links.html

¿©±âµµ ÁÁÀº Á¤º¸°¡ ¸¹´Ù. http://hill.lut.ac.uk/DS-Archive/MTP.html

Katia ObraczkaÀÇ "Multicast Transport Protocols: A Survey and Taxonomy" ¶ó´Â ±ÛÀº °¢ ÇÁ·ÎÅäÄÝ¿¡ ´ëÇÑ °£´ÜÇÑ ¼³¸íÀ» ÇÏ°í ±â´É»ó Â÷ÀÌÁ¡À¸·Î ºÐ·ùÇÏ°í ÀÖ´Ù. ÀÌ ±ÛÀº IEEE Communications magazine, January 1998, vol. 36, No. 1. ¿¡µµ ½Ç·ÁÀÖ´Ù.

10. Âü°í ÀÚ·á

10.1 RFC ¹®¼­

  • RFC 1112 "Host Extensions for IP Multicasting". Steve Deering. August 1989.
  • RFC 2236 "Internet Group Management Protocol, version 2". W.Fenner. November 1997.
  • RFC 1458 "Requirements for Multicast Protocols". Braudes, R and Zabele, S. May 1993.
  • RFC 1469 "IP Multicast over Token-Ring Local Area Networks". T. Pusateri. June 1993.
  • RFC 1390 "Transmission of IP and ARP over FDDI Networks". D. Katz. January 1993.
  • RFC 1583 "OSPF Version 2". John Moy. March 1994.
  • RFC 1584 "Multicast Extensions to OSPF". John Moy. March 1994.
  • RFC 1585 "MOSPF: Analysis and Experience". John Moy. March 1994.
  • RFC 1812 "Requirements for IP version 4 Routers". Fred Baker, Editor. June 1995
  • RFC 2117 "Protocol Independent Multicast-Sparse Mode (PIM-SM): Protocol Specification". D. Estrin, D. Farinacci, A. Helmy, D. Thaler; S. Deering, M. Handley, V. Jacobson, C. Liu, P. Sharma, and L. Wei. July 1997.
  • RFC 2189 "Core Based Trees (CBT version 2) Multicast Routing". A. Ballardie. September 1997. RFC 2201 "Core Based Trees (CBT) Multicast Routing Architecture". A. Ballardie. September 1997.

10.2 ÀÎÅÍ³Ý ÃʾÈ(draft)

  • "Introduction to IP Multicast Routing". draft-ietf-mboned-intro- multicast- 03.txt. T. Maufer, C. Semeria. July 1997.
  • "Administratively Scoped IP Multicast". draft-ietf-mboned-admin-ip-space-03.txt. D. Meyer. June 10, 1997.

10.3 À¥ ÆäÀÌÁö

10.4 Âü°í ¼­Àû

  • "TCP/IP Illustrated: Volume 1 The Protocols". Stevens, W. Richard. Addison Wesley Publishing Company, Reading MA, 1994
  • "TCP/IP Illustrated: Volume 2, The Implementation". Wright, Gary and W. Richard Stevens. Addison Wesley Publishing Company, Reading MA, 1995
  • "UNIX Network Programming Volume 1. Networking APIs: Sockets and XTI". Stevens, W. Richard. Second Edition, Prentice Hall, Inc. 1998.
  • "Internetworking with TCP/IP Volume 1 Principles, Protocols, and Architecture". Comer, Douglas E. Second Edition, Prentice Hall, Inc. Englewood Cliffs, New Jersey, 1991

11. ÀúÀ۱ǰú Ã¥ÀÓ ÇÑ°è °íÁö

Copyright 1998 Juan-Mariano de Goyeneche.

ÀÌ ÇÏ¿ìÅõ ¹®¼­´Â Free Software Foundation¿¡¼­ ¼±¾ðÇÑ GNU General Public License ¹öÀü 2 ¶Ç´Â, ÃֽŠ¹öÀüÀÇ License¿¡ µû¶ó ÀÚÀ¯·Ó°Ô Àç ¹èÆ÷ÇÒ ¼ö ÀÖÀ¸¸ç ¼öÁ¤ÇÒ ¼ö ÀÖ´Ù.

ÀÌ ¹®¼­°¡ ¿©·¯¹®¿¡°Ô µµ¿òÀÌ µÇ±â¸¦ ¿øÇÏ´Â Àǵµ¿¡¼­ ¹èÆ÷ ÇÏ¿´Áö¸¸. ¾î¶°ÇÑ º¸Áõµµ ÇÏÁö ¾Ê´Â´Ù.ÀÚ¼¼ÇÑ »çÇ×Àº GNU General Public License¸¦ Âü°í Ç϶ó.

GNU General Public License´Â ¾Æ·¡ ÁÖ¼Ò·Î ÆíÁö¸¦ º¸³»¸é ¾òÀ» ¼ö ÀÖ´Ù.

The Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA

ÀÌ ¹®¼­¸¦ CD-ROMÀ̳ª ´Ù¸¥ ¸Åü¿¡ ¼ö·ÏÇÏ¿© ¹èÆ÷ÇÒ °æ¿ì ÀúÀÚ¿¡°Ô »çº»À» º¸³»ÁÖ¸é °í¸¿°Ú´Ù. GNU/Linux ¹®¼­È­¸¦ À§ÇØ Linux Documentation Project ³ª Free Software Foundation¿¡ ¿©·¯ºÐÀÇ µµ¿òÀ» ÁÖ±â¹Ù¶õ´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº Linux HOWTO °ü¸®ÀÚ, Tim Bynum linux-howto@sunsite.unc.edu¿¡°Ô ¹®ÀÇÇÏ¸é µÈ´Ù.

12. °¨»çÀÇ ±Û

ÀÌ°÷Àº ³»°¡ °¨»çµå¸± »ç¶÷À» ¹àÈú ÁÁÀº ±âȸÀÎ°Í °°´Ù. ÀÌ ÀåÀÇ ³»¿ëÀÌ ´Ù¼Ò Ä¿Áú°Í °°´Ù..... ¾î·µç ÀÌ°÷Àº-Àû¾îµµ ³»°ÔÀ־-ÀÌ ¹®¼­¿¡¼­ °¡Àå Áß¿äÇÑ ºÎºÐÀÌ´Ù.

¿ì¼±, Elena Apolinario Fernandez de Sousa (Elena°¡ À̸§,³ª¸ÓÁö°¡ ¼ºÀÌ´Ù ;-) )¿¡°Ô °¨»çµå¸®°í ½Í´Ù. ¿ì¸® ºÎ¼­¸¦ MBone°ú ¿¬°áÇÏ´Â °úÁ¤, ±×¸®°í ¿ì¸®°¡ ¸ÖƼij½ºÆ® ÅͳοëÀ¸·Î Á¦ÀÛÇÑ CSCV ¼ÒÇÁÆ®¿þ¾î¸¦ µð¹ö±ëÇÏ´Â °úÁ¤¿¡¼­ ±×³à¿Í ÇÔ²² ÀÏÇÏ¸ç ¾òÀº ¸ðµç Áö½ÄÀ» ÀÌ ¹®¼­¿¡ ¹Ý¿µÇÏ·Á°í ³ë·ÂÇÏ¿´´Ù. ±×³à´Â ³×Æ®¿÷ ¹®Á¦¸¦ ã¾Æ³» ÇØ°áÇÏ°í Ä¿³ÎÀÇ ¹ö±×¸¦ ¼öÁ¤Çϴµ¥ ¸¹Àº µµ¿òÀ» ÁÖ¾úÀ¸¸ç, °è¼ÓµÇ´Â ¹ö±×¿ÍÀÇ ½Î¿ò¿¡¼­µµ À¯¸Ó°¨°¢À» ÀÒÁö ¾Ê¾Ò´Ù. ¶Ç, ±×³à´Â À̹®¼­ÀÇ ÃʾÈÀ» ÀÐ°í ¼öÁ¤ÇØ ÁÖ¾úÀ¸¸ç Áß¿äÇÑ Á¦¾ÈÀ» ÇØ ÁÖ¾ú´Ù. ÀÌ ¹®¼­°¡ »ç¶÷µé¿¡°Ô µµ¿òÀÌ µÇ¾ú´Ù¸é »ó´çºÎºÐ ±×³à ´öºÐÀÏ °ÍÀÌ´Ù. °í¸¶¿ö, Elena!

¾ó¸¶ ±æÁö ¾ÊÀº ÀλýÀÌÁö¸¸ ³» »ý¾Ö¿¡¼­ Á¤¸» ¿î ÁÁ´Ù°í »ý°¢ÇÏ´Â °ÍÀº, Àڱ⠽ð£À» ÂÉ°³¼­ ÀÌ·± »õ·Î¿î °ÍÀ» ¹è¿ì´Â ³²À» µ½°í ±× ÀÚü¸¦ ÁÁ¾ÆÇÏ´Â »ç¶÷µéÀ» ¸¸³µ´Ù´Â °ÍÀÌ´Ù. ±×ºÐµéÀº ÀÚ½ÅÀÌ ÀÌ¹Ì ¾Æ´Â °ÍÀ» ¼³¸íÇØÁÖ¾úÀ¸¸ç ±× »Ó¸¸ ¾Æ´Ï¶ó Ã¥À» ºô·ÁÁÖ°í ÀÚ·á¿Í ¼³ºñ¸¦ °øÀ¯ÇØ ÁÖ¾ú´Ù. ³ª´Â ÀÌ·± ºÐµéÀ» ¸¹ÀÌ ¾Ë°í ÀÖÀ¸¸ç ±×ºÐµé¿¡°Ô °¨»çÀÇ ¶æÀ» ÀüÇÏ°íÀÚ ÇÑ´Ù.

Pablo Basterrechea´Â ³»°¡ ÀÎÅÍ³Ý Ãʺ¸ÀÚÀ϶§ ¸¹Àº ¹®¼­µéÀ» ºô·ÁÁÖ¾ú´Ù. ±×ÀÇ Ã¥À¸·Î ¾î¼Àºí¸®¸¦ °øºÎÇÏ°í ±¸Á¶Àû ÇÁ·Î±×·¡¹ÖÀ¸·Î ³ª¾Æ °¥ ¼ö ÀÖ¾ú´Ù. °í¸¿³×, Pablo.

³»°¡ ´ëÇÐ ½ÅÀÔ»ý¶§ Pepe Mas¾¾°¡ ¸¹Àº µµ¿òÀ» ÁÖ¾ú´Ù. ±×´Â ÄÄÇ»ÅÍ ÇÁ·Î±×·¡¹ÖÀ» °¡¸£Ä¡´Â ¹®À̾ú´Âµ¥, ³ª´Â °ð ±×ºÐÀÇ ¼­°¡¿¡ Ȧ·Á¹ö·È´Ù. ³»°¡ Ã¥À» Á¦¶§¿¡ Á¦´ë·Î µ¹·ÁÁÙ °ÍÀ̶ó´Â º¸ÁõÀÌ ¾ø¾ú´Âµ¥µµ À̸§Á¶Â÷ ¹°¾îº¸Áö ¾Ê°í Á¶°Ç¾øÀÌ Ã¥À» ºô·ÁÁÖ¾ú´Ù. ±× ºÐÀÇ Ã¥ Áï, ComerÀÇ "Internetworking with TCP/IP, Volume 1"À» ¿©¸§ ³»³» º¸¸ç óÀ½À¸·Î TCP/IP¸¦ Á¢Çß´Ù. ÀÌ Ã¥Àº ³»°Ô ¸¹Àº ¿µÇâÀ» ¹ÌÃÆÀ¸¸ç ±× ¿©¸§ ÀÌÈÄ·Î TCP/IP´Â ÁÖ ºÐ¾ß°¡ µÇ¾ú´Ù.

³»°¡ °¡Àå °¨»çµå·Á¾ß ÇÒ ºÐÀÌ ÀÖ´Ù¸é, ¾ËÆĺª ¼ø¼­·Î ;-), Jos Manuel °ú Paco Moya ÀÌ µÎ¸íÀÌ´Ù. ÀÌ µÎ ¸í¿¡°Ô ³ª´Â ±Ã±ÝÇÑ °ÍÀ» °¡Àå ¸¹ÀÌ ¹°¾ú´Ù.(C, C++, Linux, security, Web, OSs, signals & systems, electronics, ... ±×¿ÜÀÇ °Íµé ¸ðµÎ!) ³ªÀÇ °è¼ÓµÇ´Â Áú¹®¿¡µµ ºÒ±¸ÇÏ°í ¾ðÁ¦³ª Ä£ÀýÇÏ°Ô ¾Ë·ÁÁÖ¾ú´Ù.³»°¡ GNU/Linux¸¦ ¾²´Â °Íµµ ±×µé ´öÀ̸ç Á¤¸»·Î °¨»çµå¸®´Â ºÐµéÀÌ´Ù.

Igo Mascaraque ¿ª½Ã Ãʺ¸ ½ÃÀý ³ª¸¦ µµ¿Í ÁÖ°í Æ÷±âÇÏÁö ¾Êµµ·Ï ¿ë±â¸¦ ºÏµ¸¾Æ ÁÖ¾ú´Ù.

Á¦ÀÏ Áß¿äÇÑ ºÎ¸ð´Ô²² °¨»çµå¸®°í ½Í´Ù. ¾ðÁ¦³ª ³»°Ô ÁÁÀº ±âȸ¸¦ Á̴ּÙ. Á¤¸»·Î °¨»çµå¸°´Ù.

³»°¡ óÀ½ ½Ã½ºÅÛ °ü¸®¸¦ µ¶ÇÐ ÇÒ¶§ root Æнº¿öµå¸¦ ³»°Ô ÁÙ Á¤µµ·Î ³ª¸¦ ¹Ï¾îÁØ Joaqu Seoane¿¡°Ôµµ °¨»çµå¸°´Ù. ¶Ç, ¿ª½Ã ÀÌ°÷ DIT¿¡¼­ ³»°Ô ÁÁÀº ±âȸ¸¦ ¸¸µé¾îÁØ Santiago Pav¿¡°Ôµµ °¨»çµå¸°´Ù.

W. Richard Stevens¾¾ÀÇ Ã¥Àº ³»°Ô Á¤¸» °è½Ã¿Íµµ °°Àº Ã¥À̾ú´Ù.(ºñ½Ñ°Ô ÈìÀ̱ä ÇÏÁö¸¸) ±× ºÐÀÌ È¤½Ã¶óµµ ÀÌ ±ÛÀ» º¸½Å´Ù¸é Á¤¸»·Î °¨»çµå¸®°í ½Í´Ù. ¶Ç, °è¼Ó ÁýÇÊÇØ Áֽñ⸦ ºÎŹµå¸°´Ù. ¿ì¸®¿¡°Ô ¸¹Àº µµ¿òÀÌ µÉ °ÍÀÌ´Ù.

³¡À¸·Î Richard Stallman, Linus Torvalds, Alan Cox, ±× ¿Ü¿¡, ¿ì¸®¿¡°Ô ÀÌ·± ÈǸ¢ÇÑ ¿î¿µÃ¼Á¦¸¦ ¾È°ÜÁØ Linux Ä¿³Î ¹× free software °³¹ßÀڵ鿡°Ô °¨»çµå¸°´Ù.

´©±º°¡ ÀØÀº°Í °°±ä ÇÏÁö¸¸ ..Á˼Û...³»°¡ ±× ºÐµé¿¡°Ô °¨»çÇØÇÏ°í ÀÖ´Ù´Â °ÍÀ» ¾Ë°í °è½Ã¸®¶ó È®½ÅÇÑ´Ù.

13. ¿ªÀÚ ÇѸ¶µð

º¸±âº¸´Ù ¸¸¸¸Ä¡ ¾Ê±º¿ä. ƯÈ÷ ¿ë¾î ¼±ÅÃÀÌ ¾î·Á¿ü½À´Ï´Ù. À߸øµÈ ºÎºÐÀÌ Àְųª ´Ù¸¥ ÇÏ°í ½ÍÀº ¸»¾¸ÀÌ ÀÖ´Ù¸é ¸ÞÀÏ ºÎŹµå¸³´Ï´Ù. Á¶¼ÓÇÑ ½ÃÀÏ ³»¿¡ °³Á¤Çϵµ·Ï ³ë·ÂÇÏ°Ú½À´Ï´Ù. µµ¿òÀÌ µÇ¾ú±â¸¦ ¹Ù¶ó¸é¼­....


ID
Password
Join
Try to value useful qualities in one who loves you.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2003-08-10 11:52:30
Processing time 0.0034 sec