Raw IP Networking FAQ --------------------- ¹öÀü 1.3 ÃÖ±Ù ¼öÁ¤ÀÏ: 1999³â 11¿ù 11ÀÏ 18:18:19 ÀÌ FAQÀÇ ¿øº»Àº ÇöÀç http://www.whitefang.com/rin/ ¿¡ ÀÖ´Ù. ÀÌ À¥ÆäÀÌÁö¿¡´Â ¶ÇÇÑ ÀÌ FAQÀÇ HTML¹öÀüµµ ÇÔ²² ÀÖ´Ù. °ø½ÄÀûÀÎ ¹Ì·¯¸µÀ» ¿øÇÑ´Ù¸é ³»°Ô ¿¬¶ôÀ» Ç϶ó. ¹ø¿ª: ±è¼ºÀ±(kinux@kldp.org, http://kinux.sarang.net) (¿ªÁÖ: ù¹ø° ÇÑ±Û ¹ø¿ªÆÇÀº ¹öÁ¯ 0.6ÀÌ°í ¾Èâ¼±´Ô(http://kldp.org/~kabin)´Ô¿¡ ÀÇÇØ ÀÛ¼ºµÇ¾ú´Ù. ù¹ø° ¹ø¿ªÆÇÀÇ ÀúÀÛ±ÇÀº ¾Èâ¼±´Ô¿¡°Ô ÀÖ´Ù.) ÀúÀÛ±Ç --------- ³ª, Thamer Al-Herbish´Â ÀÌ FAQ¿¡ ¸ð¾Æ Áø °Í¿¡ ´ëÇÑ ÀúÀÛ±ÇÀ» º¸À¯ÇÑ´Ù. ¶ÇÇÑ °³°³ÀÇ ±â°í³»¿ëÀº ±âºÎÀÚÀÇ ÁöÀû Àç»êÀÌ´Ù. ³ª´Â ÀÌ FAQ¿¡ ´ã±ä ¸ðµç Á¤º¸ÀÇ ÇÕ¹ý¼º¿¡ ´ëÇÑ Ã¥ÀÓÀ» Áø´Ù. ÀÌ FAQ¿¡´Â ¿À·ù ¶Ç´Â ºÎÁ¤È®ÇÑ ºÎºÐÀÌ ÀÖÀ» ¼ö ÀÖÀ¸¸ç, ÀÌ°Í¿¡ ´ëÇÑ »ç¿ë¿¡ ÀÇÇØ À§ÇèºÎ´ãÀº ¿©·¯ºÐÀÌ °¡Á®¾ß ÇÑ´Ù. ºñ·Ï ¸¹Àº ³ë·ÂÀ» ±â¿ï¿© Á¤È®¼ºÀ» ±âÇÏ°íÀÚ ÇÏ¿´Áö¸¸, ±â°íÀÚ³ª ÀÌ FAQ¸¦ À¯ÁöÇÏ´Â »ç¶÷Àº FAQÀÇ ºÎÁ¤È®¼º¿¡ ÀÇÇØ ¹ß»ýÇÏ´Â Á÷ °£Á¢ÀûÀÎ ¾î¶°ÇÑ Ã¥ÀÓµµ ÁöÁö ¾Ê´Â´Ù. ÀÌ ¹®¼­¸¦ º¯ÇüÇÏÁö ¾Ê´Â Á¶°Ç¿¡¼­ ÀÌ ¹®¼­ÀÇ ¹èÆ÷´Â ÀÚÀ¯·Î¿ì¸ç, ÀÌ ¹®¼­¸¦ °ø°³ÀûÀÎ ¼­¹ö¿¡ ÀúÀåÇÒ °æ¿ì ¾÷µ¥ÀÌÆ®°¡ Àß µÇµµ·Ï Ç϶ó. ¼Ò°³ ------------ ¾Æ·¡ÀÇ FAQ´Â raw IP ¶Ç´Â raw¼ÒÄÏ, BPF¿Í DLPI¿Í °°Àº ³×Æ®¿÷ ¸ð´ÏÅ͸µ API¸¦ Æ÷ÇÔÇÑ Àú¼öÁØ IP ³×Æ®¿öÅ·¿¡ °üÇÑ Áú¹®¿¡ ´ëÇÑ ´äº¯À» ´ã°í ÀÖ´Ù. Ãß°¡¿Í °øÇå --------------------------- ¼öÁ¤µÉ ºÎºÐÀ̳ª Ãß°¡µÉ ºÎºÐ, ¶Ç´Â »õ·Î ´äº¯µÈ °ü·Ã ³»¿ëÀ» ¹ß°ßÇÏ¸é ´ÙÀ½À¸·Î ¸ÞÀÏÀ» Áֱ⠹ٶõ´Ù. Thamer Al-Herbish ¿©·¯ºÐÀÌ ±â°íÇÏ¿© »õ·Î ¸¸µé¾îÁø FAQ¿¡ ÀÚ½ÅÀÇ EmailÀ» »ðÀÔÇÏ±æ ¿øÇÏ´ÂÁö ±×·¸Áö ¾ÊÀºÁö¸¦ ¾Ë·ÁÁֱ⠹ٶõ´Ù. ¶ÇÇÑ ÀÌ FAQ¿¡¼­ ¹ß°ßÇÏÁö ¸øÇÑ °ü·Ã ³»¿ëÀ» Usenet¿¡ Æ÷½ºÆà ÇÏ¿© ¾ò°Ô µÇ´Â ´äº¯°ú ÇØ´ç Áú¹®À» ³»°Ô ´Ù½Ã ¾Ë·ÁÁÖ¸é ±×°Í¶ÇÇÑ ÀÌ FAQ¿¡ Æ÷ÇÔ Çϵµ·Ï ÇÏ°Ú´Ù. raw socket ¹ö±×¿¡ ´ëÇØ ÇÑ´Þ¿¡ Çѹø emailÀ» È®ÀÎÇÏ°Ô µÇ´Âµ¥, ±×·¡¼­ ÇØ´ç ½Ã½ºÅÛ¿¡ ¹ö±×°¡ Á¸ÀçÇÑ´Ù¸é È®ÀÎÇÒ ¼ö°¡ ¾ø´Ù. ¸ÞÀÏÀ» º¸³»±â Àü¿¡ ³ªÀÇ ¿¹Á¦ ¼Ò½ºÄڵ带 °¡Áö°í üũÇØÁֱ⠹ٶõ´Ù. ±×°ÍÀÌ ¸íÈ®ÇÑ ¹ö±×¶ó¸é ¸ÞÀÏ Áֱ⠹ٶõ´Ù. John W. Temples ÀÇ »ó´çÇÑ ºñÆò°ú ¼öÁ¤ Á¶¾ð¿¡ °¨»ç¸¦ Ç¥ÇÑ´Ù. ÀÌ FAQ¸¦ ¸¸µå´Âµ¥ ´ëÇÑ °øÇåÀÚµéÀº ÀÌ FAQÀÇ ³¡ºÎºÐ¿¡ ±× ¸í´ÜÀ» Ãß°¡ÇÏ¿© ±× °øÀûÀ» ±â·È´Ù. ¸¶Áö¸·À¸·Î, Raw IP Networking ¸ÞÀϸµ ¸®½ºÆ®°¡ ÁøÇàÁßÀÌ´Ù. rawip-subscribe@whitefang.com¿¡ ºó ¸Þ½ÃÁö¸¦ º¸³¿À¸·Î¼­ Âü¿©ÇÒ ¼ö ÀÖ´Ù. ÁÖÀÇ ------ ÀÌ FAQÀÇ ³»¿ëÀº À¯´Ð½º ȯ°æ°ú °ü·ÃµÈ Á¤º¸¸¦ ´Ù·é´Ù. ¸ñÂ÷ ----------------- 1) ÀÏ¹Ý Áú¹®µé: 1.1) ³ªÀÇ ³×Æ®¿÷À» ¸ð´ÏÅ͸µÇÒ ¼ö ÀÖ´Â ÅøÀ̳ª sniffer´Â ¾î¶²°Ô Àִ°¡? 1.2) ÆÐŶÀ» ĸÃçÇÒ ¼ö ÀÖ´Â µµ±¸´Â ¾î¶²°Ô Àִ°¡? 1.3) ÆÐŶÀ» ĸÃçÇϴµ¥ »ç¿ëÇÒ ¼ö ÀÖ´Â portable API°¡ Àִ°¡? 1.4) ÆÐŶ ĸÃç ±â´ÉÀ» °¡Áø ÇÁ·Î±×·¥Àº ¾î¶»°Ô µ¿ÀÛÇϴ°¡? 1.5) ³×Æ®¿÷À» sniffingÇÒ¶§ ÆÐŶ ¼Õ½ÇÀ» ÃÖ¼ÒÈ­ ÇÏ´Â ¹æ¹ýÀº? 1.6) ÆÐŶ ĸÃç µµ±¸´Â ¾î¶²¶§ »ç¿ëµÇ´Â°¡? 1.7) ³×Æ®¿÷°ú °Ý¸®µÇ¾î ĸÃÄµÈ ÆÐŶÀ» ±³Ã¼ÇÒ¼ö Àִ°¡? 1.8) ³×Æ®¿÷¿¡ raw packetÀ» º¸³¾ portable API°¡ Àִ°¡? 1.9) raw IP ¾ï¼¼½º¸¦ À§ÇÑ C °¡ ¾Æ´Ñ °í±Þ ¾ð¾î API °¡ Àִ°¡? 2) RAW socket Áú¹®µé: 2.1) RAW socketÀ̶õ ¹«¾ùÀΰ¡? 2.2) ¾î¶»°Ô raw socketÀ» »ç¿ëÇϴ°¡? 2.2.1) raw socketÀ» ÅëÇØ TCP/IPÆÐŶÀ» º¸³»´Â ¹æ¹ýÀº? 2.2.2) TCP/IP ÆÐŶÀ» ¸¸µå´Â ¹æ¹ýÀº? 2.2.3) raw socketÀ» ÅëÇØ ÆÐŶÀ» ListenÇÏ´Â ¹æ¹ýÀº? 2.3) raw socketÀ» »ç¿ëÇÒ¶§ °æ°èÇؾßÇÒ ¹ö±×´Â ¹«¾ùÀÌ Àִ°¡? 2.3.1) IP Çì´õ ±æÀÌ/¿É¼Â È£½ºÆ®/³×Æ®¿÷ ¹ÙÀÌÆ® ¼ø¼­ (feature/bug?) 2.3.2) Solaris 2.4/2.5 checksum weirdness¿¡¼­ÀÇ Àü¼Û Çì´õ. 2.3.3) Solaris 2.x¿Í Irix 6.x¿¡ ÀÇÇÑ Ãß°¡ÀûÀÎ IP ÆÐŶ ó¸® 2.4) raw socketÀÌ ÀϹÝÀûÀ¸·Î ¹«¾ùÀ» À§ÇØ »ç¿ëµÇ´Â°¡? 3) libpcap (Portable Packet Capturing Library) 3.1) ÆÐŶ ĹÃ縦 À§ÇÑ ¿î¿µÃ¼Á¦ °íÀ¯ÀÇ API´ë½Å ¿Ö libpcapÀ» »ç¿ëÇØ¾ß Çϴ°¡? 3.2) ¾Ë¾Æ¾ßÇÒ libpcapÀÇ ºÒÀÌÀÍ¿¡´Â ¾î¶²°Ô Àִ°¡? 3.3) libpcap ¼Ò½ºÄÚµåÀÇ ¿¹¸¦ ãÀ» ¼ö ÀÖ´Â °÷Àº? 4) °øÇåÀÚ ¸í´Ü 1) ÀÏ¹Ý Áú¹®µé: --------------------- 1.1) ³ªÀÇ ³×Æ®¿÷À» ¸ð´ÏÅ͸µÇÒ ¼ö ÀÖ´Â ÅøÀ̳ª sniffer´Â ¾î¶²°Ô Àִ°¡? ¿î¿µÃ¼Á¦¿¡ µû¶ó ´ÙÀ½°ú °°Àº °¡´ÉÇÑ ÅøµéÀÌ ÀÖ´Ù. tcpdump: ´ëºÎºÐÀÇ BSD ȣȯ ±â°è¿¡¼­ »ç¿ë°¡´ÉÇϸç, ftp://ftp.ee.lbl.gov/tcpdump.tar.Z ¿¡ libpcap(¾Æ·¡¸¦ º¸¶ó)¿Í ´Ù¾çÇÑ ¿©·¯ ÅøµéÀÌ ÀÖ´Ù. ƯÈ÷ ÀÌ·¯ÇÑ ÅøÀº libpcap´öºÐ¿¡ ¿©·¯ Ç÷¿Æû¿¡ Æ÷ÆõǾî ÀÖ´Ù. ipgrab: ¸¹Àº ½Ã½ºÅÛ¿¡ ȣȯµÈ´Ù. ÀÌ°ÍÀº ĸÃÄµÈ ÆÐŶÀÇ link, transport, network ·¹º§ Á¤º¸¸¦ º¸¿©ÁØ´Ù. http://www.xnet.com/~cathmike/MSB/Software/ Ethereal: GTK+¸¦ ÀÌ¿ëÇÑ GUI ³×Æ®¿÷ ÆÐŶ ºÐ¼®±âÀÌ´Ù. ¸¹Àº ½Ã½ºÅÛÀ» Áö¿øÇÏ°í, http://ethereal.zing.org ¿¡¼­ ±¸ÇÒ¼ö ÀÖ´Ù. tcptrace: http://jarok.cs.ohiou.edu/software/tcptrace/tcptrace.html ½ÇÁ¦ sniffer´Â ¾Æ´ÏÁö¸¸, ¾Ë·ÁÁø ¸¹Àº sniffer¿¡ ÀÇÇØ »ý¼ºµÈ ·Î±×ÆÄÀϷκÎÅÍ ÀϹÝÀûÀÎ Æ÷¸ËÀÇ Ãâ·Â¹° ¶Ç´Â »ó¼¼Á¤º¸µéÀ» ¸¸µé¾î ³½´Ù. ÀÌ·¯ÇÑ Á¤º¸¿¡´Â Áø´ÜÁ¤º¸µµ Æ÷ÇÔÇÑ´Ù. tcpflow: http://www.circlemud.org/~jelson/software/tcpflow/ tcpflow´Â TCP ¿¬°áÈ帧ÀÇ ºÎºÐ¿¡¼­ Àü¼ÛµÇ´Â µ¥ÀÌŸ¸¦ ĸÃÄÇÏ°í, ÇÁ·ÎÅäÄÝ ºÐ¼®À̳ª µð¹ö±ëÇϱ⠽±°Ô µ¥ÀÌŸ¸¦ ÀúÀåÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù. snoop: Solaris, IRIX. etherfind: SunOS. Packetman: SunOS, DEC-MIPS, SGI, DEC-Alpha, ±×¸®°í Solaris. ftp://ftp.cs.curtin.edu.au:/pub/netman/ ¿¡¼­ ±¸ÇÒ ¼ö ÀÖ´Ù. SniffIt: Linux, SunOS, Solaris, FreeBSD, ±×¸®°í IRIX. http://reptile.rug.ac.be/~coder/sniffit/sniffit.html ¿¡¼­ ±¸ÇÒ ¼ö ÀÖ´Ù. nettl/ntfmt: HP/UX 1.2) ÆÐŶÀ» ĸÃçÇÒ ¼ö ÀÖ´Â µµ±¸(facility)´Â ¾î¶²°Ô Àִ°¡? ¿î¿µÃ¼Á¦¿¡ µû¶ó ¿©·¯°¡Áö°¡ ÀÖÀ¸¸ç, ´Ù¾çÇÑ ¹öÀüÀÌ ÀÖ´Ù.: BPF: Berkeley Packet Filter. ÀϹÝÀûÀ¸·Î BSD º¯ÇüÁ¦Ç°¿¡¼­ ¹ß°ßµÈ´Ù. DLPI: Data Link Provider Interface. Solaris, HP-UX, SCO Openserver. NIT: Network Interface Tap. SunOS. SNOOP: (???). IRIX. SNIT: STREAMS Network Interface Tap. (??) SOCK_PACKET: Linux. LSF: ¸®´ª½º ¼ÒÄÏ ÇÊÅÍ. ÀÌ°ÍÀº Linux 2.1.75 À̻󿡼­ °¡´ÉÇÏ´Ù. drain: OS¿¡ ÀÇÇØ ¹ö·ÁÁö´Â ÆÐŶÀ» snoopÇϴµ¥ »ç¿ëµÈ´Ù. IRIX. 1.3) ÆÐŶÀ» ĸÃçÇϴµ¥ »ç¿ëÇÒ ¼ö ÀÖ´Â portable API°¡ Àִ°¡? ÀÖ´Ù. ftp://ftp.ee.lbl.gov/libpcap.tar.Z¿¡¼­ OS¿¡ µû¸¥ ÆÐŶ ĸÃç API¸¦ Æ÷ÇÔÇÏ´Â single API¸¦ Á¦°øÇÑ´Ù. ¹°·Ð ±âº» APIµéÀ» ¹è¿ì´Â °ÍÀÌ ÀÌ ¶óÀ̺귯¸®°¡ ¸î¸î Èï¹ÌÀÖ´Â ºÎºÐÀ» °¨Ãß¾î ¹ö¸®°Ô µÇ´Â °æ¿ì°¡ ÀÖ´Ù´Â Á¡¿¡¼­ °¡Àå ÁÁÀº °ÍÀÌ µÉ ¼ö ÀÖ´Ù. »óÀÌÇÑ Libpcap¹öÀüÀ¸·Î ÀÎÇØ ÈÄÀ§(backward) ȣȯÀ» ÇØÄ¡´Â °æ¿ì°¡ ÀÖ´Ù´Â °Í¿¡ ÁÖÀÇÇ϶ó. 1.4) ÆÐŶ ĸÃç ÇÁ·Î±×·¥ÀÌ µ¿ÀÛÇÏ´Â ¹æ¹ýÀº? Á¤È®ÇÑ »ó¼¼»çÇ×Àº ¿î¿µÃ¼Á¦¿¡ µû¶ó ´Ù¸£´Ù. ±×·¯³ª ¿©·¯ ÇÁ·Î±×·¥µé¿¡¼­ ÀϹÝÀûÀ¸·Î µ¿ÀÛÇÏ´Â ¹æ¹ý¿¡ ´ëÇÑ °ÍÀ» ¼³¸íÇÏ°Ú´Ù. »ç¿ëÀÚ ÇÁ·Î¼¼½º´Â ¾î¶² ÀåÄ¡¸¦ ¿­°Å³ª ȸ¼± ¹Û¿¡¼­ ÆÐŶÀ» ÀÐÀ» ¼ö ÀÖ´Â µð½ºÅ©¸³Å͸¦ ÁÖ´Â ½Ã½ºÅÛ È£ÃâÀ» ¸¸µç´Ù. ±×·¯¸é Ä¿³ÎÀº ÆÐŶÀ» ÇÁ·Î¼¼½º¿¡ °ðÀå º¸³»°ÔµÈ´Ù. ±×·¯³ª ÀÌ°ÍÀº ´À¸° ½Ã½ºÅÛÀ̳ª ·Îµå°¡ ¸¹ÀÌ °É·Á ÀÖ´Â ³×Æ®¿÷¿¡¼­´Â Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù. »ç¿ëÀÚ ÇÁ·Î¼¼½º´Â ³×Æ®¿÷¿¡ ÆÐŶÀÌ ³ªÅ¸³ª´Â ºü¸£±â ¸¸Å­ ºü¸£°Ô ±× ÆÐŶÀ» Àоî¾ß ÇÑ´Ù. ±×°ÍÀÌ ¹öÆÛ··°ú ÆÐŶ ÇÊÅ͸µÀÌ ½ÃÀ۵Ǵ ÁöÁ¡ÀÌ´Ù. Ä¿³ÎÀº X ¹ÙÀÌÆ®ÀÇ ÆÐŶ µ¥ÀÌÅͱîÁö ¹öÆÛ¸µ ÇÒ ¼ö ÀÖÀ¸¸ç, ±× ÆÐŶÀ» »ç¿ëÀÚÀÇ ¿äû¿¡ µû¶ó Çϳª¾¿ Àü´ÞÇÑ´Ù. ¸¸¾à ±× ¾çÀÌ ¾î¶² ÇѰ踦 ³Ñ°Ô µÇ¸é(ÀÚ¿øÀº ÇÑÁ¤µÇ¾î ÀÖ´Ù) ÆÐŶÀº ¹ö·ÁÁö°í(drop) ¹öÆÛ¿¡ ³²Áö ¾Ê°Ô µÈ´Ù. ÆÐŶ ÇÊÅÍ´Â ÇÁ·Î¼¼½º°¡ ¿øÇÏ´Â ÆÐŶÀ» Áö½ÃÇÒ ¼ö ÀÖµµ·Ï Çã¿ëÇÑ´Ù. ÀϹÝÀûÀÎ ¹æ¹ýÀº ±× ÆÐŶ¿¡¼­ ¼öÇàµÉ ·çƾÀ» À§ÇÑ opcode ¼ÂÀ» °¡Áö°í ±×°ÍÀ¸·ÎºÎÅÍ °ªÀ» ÀÐ°í ±×°ÍÀÌ ¿øÇÏ´ÂÁö ±×·¸Áö ¾ÊÀºÁö¸¦ °áÁ¤ÇÏ´Â °ÍÀÌ´Ù. À̵é opcode´Â º¸Åë ¸Å¿ì ´Ü¼øÇÑ operationÀ» ¼öÇàÇϸç, °­·ÂÇÑ ÇÊÅ͸µ ±â´ÉÀ» ¼öÇàÇÑ´Ù. BPF ÇÊÅÍ¿Í ±×¸®°í ¹öÆÛµé; ÀÌ°ÍÀº ¹öÆÛ°¡ ¿ÀÁ÷ ±× ÇÁ·Î¼¼½º°¡ °ü½ÉÀÖ´Â ÆÐŶ¸¸ Æ÷ÇÔÇϱ⠶§¹®¿¡ °¡Àå ¹Ù¶÷Á÷ÇÏ´Ù. ±×°ÍÀº ±× ÇÊÅÍ°¡ ÆÐŶÀÇ »ó½ÇÀ» ÀÏÀ¸Å°´Â ¹öÆÛ ¿À¹öÇ÷ÎÀ×À» ¸·±âÀ§ÇØ ¹öÆÛ¸µµÇ´Â ÆÐŶÀÇ ¾çÀ» ÁÙÀ̱⸦ ¹Ù¶õ´Ù. NIT, ºÒÇàÈ÷µµ does not do this; ±×°ÍÀº »ç¿ëÀÚ ÇÁ·Î¼¼½º°¡ ±× ÆÛ·¯¸µµÈ µ¥ÀÌÅͷκÎÅÍ Àб⸦ ½ÃÀÛÇÒ¶§ÀÎ ¹öÆÛ¸µ ÈÄÀÇ ÇÊÅÍ¿¡ Àû¿ëµÈ´Ù. ´Ù¸¥ ÆÐŶ ĸÃç µµ±¸¸¦ ÅëÇÑ ¿©·¯ºÐÀÇ ÀÌ¿ëµµ´Â ¸Å¿ì ±¤¹üÀ§ÇÒ °ÍÀÌ´Ù. 1.5) ³×Æ®¿÷À» sniffingÇÒ¶§ ÆÐŶ »ó½ÇÀ» Á¦ÇÑÇÏ´Â ¹æ¹ýÀº? ¸¸¾à ¿©·¯ºÐÀÌ ÆÐŶ »ó½Ç¿¡ ¸¹Àº °æÇèÀ» °¡Áö°í ÀÖ´Ù¸é, ÇÊÅ͸¦ »ç¿ëÇÑ ÆÐŶÀÌ Àоîµé¿©Áö´Â ¹üÀ§¸¦ Á¦ÇÑÇϱ⸦ ¿øÇÒ ¼ö ÀÖ´Ù. ÀÌ°ÍÀº ÇÊÅ͸µÀÌ ¹öÆÛ¸µ Àü¿¡ ¼öÇàµÉ °æ¿ì¿¡¸¸ Á¦´ë·Î ÀÛµ¿ÇÑ´Ù. ÆÐŶ ĸÃç µµ±¸°¡ NIT¿Í °°ÀÌ ±úÁ®¼­(broken) ¿©ÀüÈ÷ Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾ÊÀ» °æ¿ì, »ç¿ëÀÚ ÇÁ·Î¼¼½º¿¡¼­ ´õ »¡¸® Àоî¾ß ÇÒ °ÍÀ̸ç, ±×µéÀ» ´Ù¸¥ ÇÁ·Î¼¼½º·Î Àü¼ÛÇØ¾ß ÇÑ´Ù. ±âº»ÀûÀ¸·Î »ç¿ëÀÚ °ø°£(user space)¿¡¼­ Ãß°¡ÀûÀÎ ¹öÆÛ¸µÀ» ½ÃµµÇ϶ó. ¼º´ÉÀ» ÁõÁø½ÃÅ°´Â ¶Ç ´Ù¸¥ ¹æ¹ýÀº, Ä¿´Ù¶õ ¹öÆÛ¸¦ »ç¿ëÇÏ´Â °ÍÀÌ´Ù. SNOOP¸¦ »ç¿ëÇÏ´Â Irix¿¡¼­ÀÇ man ÆäÀÌÁö´Â SO_RCVBUF¸¦ »ç¿ëÇÒ °ÍÀ» ±ÇÇÑ´Ù. BPF¸¦ °¡Áø BSD¿¡¼­ BIOCSBLEN ioctl È£ÃâÀ» »ç¿ëÇÏ¿© ¹öÆÛ Å©±â¸¦ Áõ°¡½Ãų ¼ö ÀÖ´Ù. ¼Ö¶ó¸®½º¿¡¼­´Â bufmod¿Í pfmod¸¦ »ç¿ëÇÏ¿© ¹öÆÛÀÇ Å©±â¿Í ÇÊÅ͸¦ °¢°¢ º¯°æÇÒ ¼ö ÀÖ´Ù. ±â¾ïÇÒ °ÍÀº ¿©·¯ºÐÀÇ ÇÁ·Î¼¼½º°¡ ·Îµå°¡ °É·Á¼­ incoming ÆÐŶÀÇ µ¿Çâ¿¡ °ü½ÉÀ» Àû°Ô ¾²¸é ¾µ ¼ö·Ï Ä¿³Î¿¡ ÀÇÇØ ´õ »¡¸® ¹ö·ÁÁø´Ù(drop)´Â °ÍÀÌ´Ù. 1.6) ÆÐŶ ĸÃç°¡ ¾î¶²°÷¿¡ »ç¿ëµÇ´Â°¡? ---------------------------------------------- (Question suggested by Michael T. Stolarchuk along with some suggestions for the answer.) ³×Æ®¿÷ÀÇ ¼Â¾÷ÀÇ verify¿Í °°Àº ³×Æ®¿÷ Áø´Ü°ú °°Àº °÷¿¡ »ç¿ëµÇ´Âµ¥ ±× ¿¹¿¡´Â È£½ºÆ®·ÎºÎÅÍ º¸³»Áø ARP¸Þ½ÃÁöµéÀ» º¸°íÇØ ÁÖ´Â arp¿Í °°Àº Åø µéÀÌ ÀÖ´Ù. end to end ¼¼¼ÇÀÇ Àç ±¸¼º. tcpshow´Â ÀÌ·¯ÇÑ ÀÏÀ» ÇÑ´Ù. ±×·¯³ª ´õ ¶È¶ÈÇÑ ¿¹´Â ³×Æ®¿÷ ¿¬°á¿¡¼­ tabÀ» À¯ÁöÇÏ·Á´Â º¸¾È ÅøÀÇ ¹èÄ¡ÀÌ´Ù. ³×Æ®¿÷ ·Îµå¸¦ ¸ð´ÏÅ͸µÇÑ´Ù. ¾Æ¸¶ ½ÇÁ¦ÀûÀ¸·Î °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â ºÎºÐÀÏ °ÍÀÌ´Ù. ¸¹Àº »ó¿ëÁ¦Ç°µéÀÌ ÀÌ°ÍÀ» ¼öÇàÇϴ Ư¼öÇÑ Çϵå¿þ¾î¸¦ »ç¿ëÇÑ´Ù. 1.7) ³×Æ®¿÷°ú °Ý¸®µÇ¾î ĸÃÄµÈ ÆÐŶÀ» ±³Ã¼ÇÒ¼ö Àִ°¡? ¾ø´Ù. ÆÐŶ ĸÃÄ´Â ÆÐŶÀÇ º¹»çº»À» ¸¸µå´Â °ÍÀÌ´Ù. ±×¸®°í ½Ã½ºÅÛÀÇ TCP/IP ½ºÅØÀ¸·ÎºÎÅÍ ±×°ÍµéÀ» Á¦°ÅÇÏÁö´Â ¾Ê´Â´Ù. ¸¸ÀÏ TCP/IP ½ºÅØ¿¡ µµ´ÞÇÏ´Â ÆÐŶÀ» ¸·±âÀ§Çؼ­´Â ¹æÈ­º® À» »ç¿ëÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. (±×°ÍÀº ÆÐŶ ÇÊÅ͸µÀ» ÇÒ ¼ö°¡ ÀÖ´Ù.) ¹æÈ­º®¿¡ ÀÇÇÑ ÆÐŶ ĸÃÄ¿Í ÆÐŶ ÇÊÅ͸µÀ» È¥µ·ÇÏÁö ¸¶¶ó. ±×°ÍÀº ´Ù¸¥ ¸ñÀûÀ¸·Î Á¦°øµÈ´Ù. 1.8) ³×Æ®¿÷¿¡ raw packetÀ» º¸³¾ portable API°¡ Àִ°¡? ÀÖ´Ù. route °¡ Libnet¿¡ ´ëÇØ ¾ð±ÞÇߴµ¥, ÀÌ°ÍÀº Àú¼öÁØ ÆÐŶ ÀÛ¼º, Çڵ鸵À» À§ÇÑ API¸¦ Á¦°øÇÑ´Ù. ±×°ÍÀº libpcap¿¡ ´ëÇØ Âù»ç¸¦ º¸³»´Âµ¥, ±× ÇÁ·ÎÁ§Æ® À¥ÆäÀÌÁö´Â ¾Æ·¡¿¡¼­ º¼¼ö ÀÖ´Ù. http://www.packetfactory.net/libnet/ 1.9) raw IP ¾ï¼¼½º¸¦ À§ÇÑ C °¡ ¾Æ´Ñ °í±Þ ¾ð¾î API °¡ Àִ°¡? raw socket ¾ï¼¼½º¸¦ À§ÇØ PERL ¸ðµâÀÌ »ç¿ë°¡´ÉÇÏ´Ù. http://quake.skif.net/RawIP/ Python ¶óÀ̺귯¸® "py-libpap" Àº ´ÙÀ½¿¡¼­ ±¸ÇÒ ¼ö ÀÖ´Ù. ftp://ftp.python.org/pub/python/contrib/Network/ 2) RAW socket Áú¹®µé: ------------------------ 2.1) RAW socketÀ̶õ ¹«¾ùÀΰ¡? BSD ¼ÒÄÏ API¸¦ ÅëÇØ ¿ì¸®´Â raw socketÀ» ¿­°í TCP/IP ½ºÅÿ¡¼­ layer¸¦ Åë°úÇÑ´Ù. ÁÖÀÇÇÒ °ÍÀº ¸¸¾à OS°¡ ¿Ã¹Ù¸£°Ô BSD ü°è¸¦ Áö¿øÇÏÁö ¾ÊÀ¸¸ç, ÀÌ°ÍÀÌ ÀÛµ¿µÇµµ·Ï Çϴµ¥ »ó´çÇÑ ¾î·Á¿òÀ» °ÞÀ» °ÍÀÌ´Ù. ¾Æ·¡¿¡ ¸î¸î ¹ö±× ¶Ç´Â ¿©·¯ºÐÀ» ³î¶ó°ÔÇÒ ¸¸ÇÑ °ÍÀ» º¸¿©ÁØ´Ù. °ÅÀÇ ¸ðµç Á¦Á¤½ÅÀÇ ½Ã½ºÅÛ¿¡¼­´Â ¿ÀÁ÷ root »ç¿ëÀÚ¸¸ÀÌ raw ¼ÒÄÏÀ» ¿­ ¼ö ÀÖ´Ù. 2.2) raw socketÀ» »ç¿ëÇÏ´Â ¹æ¹ý? 2.2.1) raw socketÀ» ÅëÇØ TCP/IP ÆÐŶÀ» Àü¼ÛÇÏ´Â ¹æ¹ý? ¹«¾ùÀ» Àü¼ÛÇÒ °ÍÀ̳Ŀ¡ µû¶ó ´Ù¸£Áö¸¸, óÀ½¿¡ socketÀ» ¿­°í ±×°ÍÀÇ typeÀ» ÁöÁ¤ÇÑ´Ù. sockd = socket(AF_INET,SOCK_RAW,); ±×¸®°í IPPROTO_RAWÀ» Æ÷ÇÔÇÑ ¾î¶°ÇÑ ÇÁ·ÎÅäÄݵµ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. ±× ÇÁ·ÎÅäÄÝ ¹øÈ£´Â IP Çì´õ¿¡ ±×´ë·Î µé¾î°£´Ù. IPPROTO_RAW ´Â IP Çì´õ¿¡ 0 À» ³Ö°ÔµÈ´Ù. ´ëºÎºÐÀÇ ½Ã½ºÅÛÀº IP_HDRINCLÀ̶ó´Â ¿©·¯ºÐ ÀÚ½ÅÀÇ IPÀ» ÆÐŶÀ» ³ª¸ÓÁö¿Í ÇÔ²² Æ÷ÇÔÇÒ ¼ö ÀÖµµ·Ï ÇØÁÖ´Â ¼ÒÄÏ ¿É¼ÇÀ» °¡Áö°í ÀÖ´Ù. ¸¸¾à ¿©·¯ºÐÀÇ ½Ã½ºÅÛÀÌ ÀÌ ¿É¼ÇÀ» °¡Áö°í ÀÖÁö ¾Ê´Ù¸é, ¿©·¯ºÐ ÀÚ½ÅÀÇ IP Çì´õ¸¦ Æ÷ÇÔÇÒ ¼ö ¾øÀ» °ÍÀÌ´Ù. ¸¸¾à ±×·¸´Ù¸é ¿©·¯ºÐÀº ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î °¡´ÉÇÏ°Ô ÇÒ ¼ö ÀÖ´Ù. char on = 1; setsockopt(sockd,IPPROTO_IP,IP_HDRINCL,&on,sizeof(on)); ¹°·Ð, ¸¸¾à IP Çì´õ¸¦ Æ÷ÇÔÇÏ±æ ¿øÇÏÁö ¾Ê´Â´Ù¸é, Ç×»ó ±× socketÀ» »ý¼ºÇÒ¶§ ÇÁ·ÎÅäÄÝÀ» ÁöÁ¤ÇÒ ¼ö ÀÖÀ¸¸ç Àü¼Û°èÃþ Çì´õ¸¦ ±×°Í¾È¿¡ Æ÷ÇÔ ½Ãų ¼ö ÀÖ´Ù. ±×·¯°í³ª¼­ ±× ÆÐŶÀ» ¸¸µé°í ÀϹÝÀûÀÎ sendto()°°Àº ÇÔ¼ö¸¦ È£Ãâ ÇÒ ¼ö ÀÖ´Ù. 2.2.2) TCP/IP ÆÐŶÀ» ¸¸µå´Â ¹æ¹ýÀº? http://www.whitefang.com/rin/ ¿¡ °¡¸é ¿¹Á¦°¡ ÀÖ´Ù. ÀÌ ¿¹Á¦´Â °ü·ÃµÈ »ó¼¼ »çÇ×À» ±â¼úÇÏ°í ÀÖµû. ¶ÇÇÑ ¸î¸î ¾Æ·¡¿¡ ¾ð±ÞµÈ ¹ö±×¿¡ °üÇؼ­µµ ±â¼úÇÏ°í ÀÖ´Ù. °£´ÜÇÏ°Ô ¸»Çؼ­, ¿©·¯ºÐÀº ¸Þ¸ð¸® ³»¿¡¼­ ÆÐŶÀ» ÀÛ¼ºÇÏ°í ¼ÒÄÏ¿¡ ³Ñ°ÜÁØ´Ù. ±×·¯¸é ±× ¼ÒÄÏÀ» ±×°ÍÀ» ¹ÛÀ¸·Î ½÷º¸³»°Å³ª ´õ ¸¹Àº ÆÐŶÀ» ±â´Ù¸®´øÁö ÇÒ °ÍÀÌ´Ù. 2.2.3) raw socketÀ» ÅëÇØ ÆÐŶÀ» listenÇÏ´Â ¹æ¹ýÀº? ÀüÅëÀûÀ¸·Î BSD socket API´Â µé¾î¿À´Â ÆÐŶÀ» raw socketÀ» ÅëÇØ listenÇÏ´Â °ÍÀ» Çã¿ëÇÏÁö ¾Ê¾Ò´Ù. ºñ·Ï Linux (2.0.30 ÀÌ ³»°¡º» ÃֽŠ¹öÀüÀÌ´Ù)´Â ÀÌ°ÍÀ» Çã¿ëÇÏÁö¸¸, ±×°ÍÀº Linux ÀÚ½ÅÀÌ ±¸ÇöÇÑ TCP/IP ½ºÅÃÀ» »ç¿ëÇؾ߸¸ °¡´ÉÇÏ´Ù. ÀüÅëÀûÀÎ BSD ü°è´Â ¾î¶² Ä«Å×°í¸®(¾Æ·¡¿¡ ÀÖ´Ù)¿¡ ¸ÅÄ¡µÇ´Â ¸î¸î ÆÐŶÀ» ¿©·¯ºÐÀÌ ½ÀµæÇÏ´Â °ÍÀ» Çã¿ëÇÑ´Ù. ÀÌ·¯ÇÑ ÀÌÀ¯ÀÇ ¹èÈÄ¿¡´Â ³í¸®ÀûÀÎ ÀÌÀ¯°¡ ÀÖ´Ù. ¿¹¸¦ µé¾î TCP ÆÐŶµéÀº Ç×»ó Ä¿³Î¿¡ ÀÇÇØ ´Ù·ç¾îÁø´Ù. ¸¸¾à Æ÷Æ®°¡ ¿­¸®¸é SYN-ACK¸¦ Àü¼ÛÇÏ°í ¿¬°áÀ» ¼³¸³Çϰųª ¶Ç´Â µÚ·Î RST¸¦ º¸³½´Ù. ´Ù¸¥¸»·Î Çϸé, ¸î¸î ŸÀÔÀÇ ICMP(¾Æ·¡¿¡ °ü·Ã ¸®½ºÆ®¸¦ Á» Àû¾ú´Ù.)Àº Ä¿³ÎÀÌ Çڵ鸵 ÇÏÁö ¸øÇÑ´Ù. ICMP echo reply¿Í °°Àº°ÍÀº ¸ÅÄ¡µÇ´Â raw socketÀ¸·Î Àü¼ÛµÈ´Ù. ¿Ö³ÄÇÏ¸é »ç¿ëÀÚ ÇÁ·Î±×·¥ÀÌ ±×°ÍÀ» ¼ö½ÅÇÏ°Ô µÇ´Â °ÍÀ» ÀǹÌÇϱ⠶§¹®ÀÌ´Ù. ÇØ°áÃ¥Àº ¸¸¾à ±×°ÍÀÌ UDP¶Ç´Â TCP ÆÐŶÀÏ °æ¿ì¿¡ ƯÁ¤ Æ÷Æ®¿¡ ¹æÈ­º®À» ¼³Ä¡ÇÏ´Â °ÍÀÌ´Ù. ±×¸®°í ÆÐŶ ĸÃÄ API¸¦(À§¿¡ ³ª¿­µÇ¾î ÀÖ´Â °Íµé) °¡Áö°í ±×°ÍÀ» sniffÇÑ´Ù. ÀÌ°ÍÀº TCP/IP ½ºÅÃÀÌ ÆÐŶÀ» Çڵ鸵 ÇÏ´Â °ÍÀ» ¸·¾ÆÁØ´Ù. ±×·¯¹Ç·Î ±×°ÍÀº ¹«½ÃµÇ°í ¿©·¯ºÐÀº °£¼· ¾øÀÌ ÀÚ½ÅÀ» À§ÇØ ±×°ÍÀ» Çڵ鸵 ÇÒ ¼ö ÀÖ°Ô µÈ´Ù. ¸¸¾à ¹æÈ­º®À» ¸¸µéÁö ¾Ê°í, Àڽſ¡°Ô replyÇÏ¸é ¿©·¯ºÐÀº ¿©·¯ºÐÀÇ ¿î¿µÃ¼Á¦·ÎºÎÅÍ Ãß°¡ÀûÀÎ ÀÀ´äÀ» ¹Þ°Ô µÉ °ÍÀÌ´Ù. ¿©±â¿¡ À¯Áî³ÝÀÇ Richard StevensÀÌ ¾´ raw BSD socketÀÇ Ã¼°è¿¡ °üÇÑ °£´ÜÇÑ ¼³¸íÀÌ ÀÖ´Ù. From (Sun Jul 6 12:07:07 1997) : "BSD raw socketsÀÇ Ã¼°è´Â: - TCP ¿Í UDP: Ä¿³Î¸¸ÀÌ ÀÌ°ÍÀ» ¹Þ´Â´Ù. - ICMP: °¢°¢ÀÇ ICMP´Â Ä¿³ÎÀÌ ±×°Í¿¡ ´ëÇÑ ÀÀ´ä(ICMP °¢°¢ÀÇ ¿äû, timestamp¿äû, mask ¿äû°ú °°Àº °Í¿¡ ´ëÇÑ)À¸·Î replyÇÏ´Â °ÍÀ» Á¦¿ÜÇÑ °¢°¢ÀÇ ¸ÅÄ¡µÇ´Â raw ¼ÒÄÏÀ» Åë°ú ½ÃŲ´Ù. - IGMP: ÀÌµé ¸ðµÎ´Â ¸ðµç ¸ÅÄ¡µÇ´Â raw socketÀ¸·Î Åë°úµÈ´Ù. - Ä¿³ÎÀÌ ´Ù·çÁö ¾Ê´Â ¸ðµå ´Ù¸¥ ÇÁ·ÎÅäÄÝ(OSPF, etc.): ¸ðµÎ ¸ÅÄ¡µÇ´Â raw socketÀ¸·Î Àü´ÞµÈ´Ù. BSD4.4ÀÇ TCP/IP ½ºÅÃÀÇ icmp_input()·çƾÀ» »ìÆ캻 °á°ú ¾Æ·¡ÀÇ ICMP ÇüµéÀº ¸ÅÄ¡µÇ´Â raw socketÀ¸·Î Åë°úµÇ´Â °ÍÀ¸·Î º¸¿©Áø´Ù. Echo Reply: (0) Router Advertisement (9) Time Stamp Reply (13) Mask Reply (18) 2.3) raw socketÀ» »ç¿ëÇÒ¶§ ¾Ë¾ÆµÎ¾î¾ß ÇÒ ¹ö±×´Â ¾î¶²°Ô Àִ°¡? 2.3.1) IP Çì´õ ±æÀÌ/¿É¼Â È£½ºÆ®/³×Æ®¿÷ ¹ÙÀÌÆ® ¼ø¼­ (feature/bug?) 4.4BSD·ÎºÎÅÍ¿Â ½Ã½ºÅÛÀº ip Çì´õÀÇ ¸â¹öÀÎ ip_len°ú ip_offÀÌ network ¹ÙÀÌÆ® ¼ø¼­°¡ ¾Æ´Ñ host ¹ÙÀÌÆ® ¼ø¼­·Î ¼ÂÆõǾî ÀÖ¾î¾ß Çϴµ¥ ±×·¸Áö ¾ÊÀº ¹ö±×¸¦ °¡Áö°í ÀÖ´Ù. ¸î¸î ½Ã½ºÅÛÀº ¹ö±×°¡ °íÃÄÁ³´Ù. ³»°¡ ¹ö±×°¡ °íÃÄÁø °ÍÀ» È®ÀÎÇÑ ½Ã½ºÅÛÀº OpenBSD 2.1ÀÌ´Ù. 2.3.2) Solaris 2.4/2.5 checksum weirdness¿¡¼­ÀÇ Àü¼Û Çì´õ. ÀÌ ¹ö±×¿¡ ´ëÇÑ ÀÌÀü workaound´Â Á¤È®ÇÏÁö ¾Ê¾Ò´Ù. Michael Masino ´Â ÀÌ°Í¿¡ °üÇÑ Á»´õ Á¤È®ÇÑ workaround¸¦ ³»°Ô º¸³»ÁÖ¾ú´Ù. ¾Æ·¡ ³»¿ëÀº ±× ¸ÞÀÏÀ» ¾ÐÃàÇÑ °ÍÀÌ´Ù.(Thu, 19 Feb 1998): "³ª´Â ¼Ö¶ó¸®½º 2.5°¡ µ¥ÀÌÅ͸¦ raw socketÀ» ÅëÇØ Àü¼ÛÇÒ¶§ TCP¶Ç´Â UDP checksumÀ» °è»êÇÏ·Á°í ÇÏ´Â °ÍÀ» ¹ß°ßÇÏ¿´½À´Ï´Ù. ³ª´Â ¶ÇÇÑ ¸¸¾à ³»°¡ ¿Ã¹Ù¸¥ checksumÀ» ±× Çʵ忡 »ðÀÔÇÏ¸é ±× Àü¼ÛµÈ ÆÐŶÀÌ µ¥ÀÌÅÍ checksum°ú °°Àº ±æÀÌÀÇ checksumÀ» °®°í ÀÖ¾ú½À´Ï´Ù. ¸¸¾à ³»°¡ ÇÑ byte¸¦ ±× µ¥ÀÌÅÍ¿¡ µ¡ºÙÀÌ¸é ±× checksumÀº 1¾¿ Áõ°¡µÇ¾ú½À´Ï´Ù. ±×·¯³ª ¸¸¾à ³»°¡ ±× checksumÀ» 0À¸·Î ¼ÂÆÃÇÏ¸é ±× Àü¼ÛµÈ ÆÐŶÀº ¿Ã¹Ù¸¥ checksum + checksum ±æÀÌ¿¡ ÇØ´çÇÏ´Â TCP checksumÀ» °®°Ô µÇ¾ú½À´Ï´Ù. ¿Ã¹Ù¸¥ checksumÀ» Àü¼ÛÇϱâ À§ÇØ ±× ¾Æ·¡ ÁÙÀº ¿©·¯ºÐÀº checksumµÈ µ¥ÀÌÅÍÀÇ ±æÀ̷Πä¿ö¾ß ÇÕ´Ï´Ù. FAQ¿¡¼­ ¾ð±ÞµÈ°ÍÀº ±×°ÍÀ» sizeof(struct tcphdr)·Î ¼³Á¤Çϱâ À§ÇÔÀÌ¸ç ¸¸¾à ¿©·¯ºÐÀÌ ÆÐŶ¾È¿¡ µ¥ÀÌÅ͸¦ °¡Áö°í ÀÖÀ¸¸é Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. ¿©·¯ºÐÀº µû¶ó¼­ TCP Çì´õÀÇ ±æÀÌ(À¯»ç Çì´õ°¡ ¾Æ´Ñ) ¿Í µ¥ÀÌÅÍ ¾çÀÇ ±æÀ̸¦ ä¿ö ³Ö¾î¾ß ÇÕ´Ï´Ù." ³ª´Â ¾ÆÁ÷ SUN¿¡¼­ ÀÌ°ÍÀ» known bug·Î¼­ ¼³¸íÇÑ, ¶ÇÇÑ ±×°ÍÀÌ ¾ðÁ¦ ¼öÁ¤µÇ¾ú´ÂÁö¸¦ ¾Ë¸®´Â official ¹®¼­¸¦ ¹ß°ßÇÏÁö´Â ¸øÇß´Ù. ³ª´Â ±×°ÍÀÌ Solaris 2.6 ¿¡¼­´Â ¹ß»ýÇÏÁö ¾Ê´Â´Ù´Â º¸°í¼­´Â °¡Áö°í ÀÖ´Ù. 2.3.3) Solaris 2.x¿Í Irix 6.x¿¡ ÀÇÇÑ Ãß°¡ÀûÀÎ IP ÆÐŶ ó¸® ---------------------------------------------------------------- (Bug report from Lamont Granquist ) "Irix 6.x¿Í Solaris 2.x(2.5.1 °ú 2.6) ¿¡¼­ÀÇ SOCK_RAW´Â IP ÆÐŶÀÌ Àü¼ÛµÇ±â Àü¿¡ ¸î¸î ¿øÄ¡ ¾Ê´Â 󸮸¦ ÇÑ´Ù. ƯÈ÷, ±×°ÍÀº IP_DF(Á¶°¢³»Áö ¸¶¶ó)Ç÷¹±×¸¦ ÄÑ°Ô ÇÏ°í, ´Ù¸¥ IP id¹øÈ£¿Í ´Ù¸¥ TCP seq¹øÈ£¿Í ack¹øÈ£¸¦ ÇÒ´çÇϸç, ±× checksumÀ» Àç°è»êÇÑ´Ù. ³ª´Â IP_DF Ç÷¡±×¸¦ Æ÷ÇÔÇϱâ À§ÇÑ ÄÚµå ¿¹Á¦¸¦ ÇØÅ·ÇÏ·Á°í Çߴµ¥ ¿©ÀüÀÌ IP/seq/ack¹øÈ£¸¦ ÇÒ´çÇÏ°í checksumÀ» Àç°è»êÇÑ´Ù" 2.4) ÀϹÝÀûÀ¸·Î raw socketÀº ¾îµð¿¡ »ç¿ëµÇ´Â°¡? -------------------------------------------- ´Ù¾çÇÑ À¯´Ð½º À¯Æ¿¸®Æ¼µéÀÌ raw socketÀ» »ç¿ëÇÑ´Ù. °Å±â¿¡´Â traceroute, ping, arp ¹× ¸¹Àº ÀÎÅÍ³Ý º¸¾ÈÅø µéÀÌ raw socketÀ» »ç¿ëÇÑ´Ù. ±×·¯³ª ¿À·§µ¿¾È raw socketÀº ¹ö±×°¡ ÀÖÀ¸¸ç, portableÇÏÁö ¾Ê°í »ç¿ë¿¡ Á¦ÇÑÀÌ ÀÖ´Â °ÍÀ¸·Î ÆǸíµÇ¾î ¿Ô´Ù. 3) libpcap (Portable Packet Capturing Library) ------------------------------------------------ 3.1) ÆÐŶ ĸÃ縦 À§ÇØ ¿î¿µÃ¼Á¦ °íÀ¯ÀÇ API´ë½Å ¿Ö libpcapÀ» »ç¿ëÇØ¾ß Çϴ°¡? libpcapÀº ¾îÇø®ÄÉÀ̼ÇÀÌ ÆÐŶ ĸÃ縦 portableÇÏ°Ô ÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§ÇØ ¸¸µé¾î Á³´Ù. ±×°ÍÀÇ ½Ã½ºÅÛ µ¶¸³¼º°ú ´Ù¾çÇÑ ¿î¿µÃ¼Á¦ Áö¿øÀ¸·Î ÀÎÇØ ¿©·¯ºÐÀº ÆÐŶ ĸÃç ¾îÇø®ÄÉÀ̼ÇÀº ´Ù¾çÇÑ ½Ã½ºÅÛ¿¡¼­ »ç¿ëµÉ ¼ö ÀÖµµ·Ï Á»´õ portableÇÏ°Ô ¸¸µé¾î Áú ¼ö ÀÖ´Ù. 3.2) ¾Ë¾Æ¾ßÇÒ libpcapÀÇ ºÒÀÌÀÍ¿¡´Â ¾î¶²°Ô Àִ°¡? ±×·¸´Ù. libpcapÀº BSD¿¡¼­ ÆÄ»ýµÈ ½Ã½ºÅÛ¿¡¼­ ¹ß°ßµÇ´Â BPF¸¦ »ç¿ëÇÒ¶§ ¿ÀÁ÷ kernel ÆÐŶ ÇÊÅ͸µ ±â´É¸¸À» »ç¿ëÇÑ´Ù. ÀÌ°ÍÀº BPF¸¦ »ç¿ëÇÏÁö ¾Ê´Â ´Ù¸¥ ¿î¿µÃ¼Á¦¿¡¼­ »ç¿ëµÇ´Â ¾î¶°ÇÑ ÆÐŶ ÇÊÅ͵µ »ç¿ëÀÚ °ø°£¿¡¼­ ¼öÇàµÉ °ÍÀ̸ç, µû¶ó¼­ ¼ÓµµÈ­ È¿À²¼º ¸î¿¡¼­ ºÒÀÌÀÍÀÌ ÀÖ´Ù. µû¶ó¼­ ·Îµå°¡ °É·Á ÀÖ´Â ³×Æ®¿÷À» sniffÇÒ¶§ ÆÐŶ ·Î½º°¡ Áõ°¡µÇ±â ¶§¹®¿¡ ÀÌ°ÍÀº ¿©·¯ºÐÀÌ ¿øÇÏ´Â °ÍÀº ¾Æ´Ò °ÍÀÌ´Ù. DECÀÇ OSF/1Àº BPF-½ºÅ¸ÀÏÀÇ ÇÊÅ͸¦ Áö¿øÇϱâ À§ÇØ È®ÀåµÈ API¸¦ °¡Áö°í ÀÖ´Ù. libpcapÀº ÀÌ°ÍÀ» ÀÌ¿ëÇÑ´Ù. ³ªÁß¿¡, LibpcapÀº BPF ½ºÅ¸ÀÏÀÇ ÇÊÅ͵éÀ» ´Ù¸¥ ÆÐŶ ĸÃç µµ±¸·Î translate ÇÒ °ÍÀÌ´Ù. ±×·¯³ª ÀÌ°ÍÀº ¾ÆÁ÷ ¹öÀü 0.3¿¡¼­ ±¸ÇöµÇÁö ¾Ê¾Ò´Ù. Áú¹® 1.4¸¦ Âü°íÇÏ¸é ¾î¶»°Ô ÆÐŶ ÇÊÅ͵éÀÌ ¿©·¯ºÐÀÇ ³×Æ®¿÷À» ½Å·Ú¼ºÀÖ°Ô ¸ð´ÏÅ͸µ ÇÒÁö¿¡ ´ëÇÑ µµ¿òÀ» ¾òÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù. 3.3) libpcap ¼Ò½ºÄÚµåÀÇ ¿¹¸¦ ãÀ» ¼ö ÀÖ´Â °÷Àº? LBNLÀÇ ftp»çÀÌÆ®¿¡ °ü·ÃµÈ ¸¹Àº ¼Ò½ºÄڵ尡 ÀÖ´Ù. ftp://ftp.ee.lbl.gov/ ´Â libpcapÀ» »ç¿ëÇÑ´Ù. Á»´õ ÀÚ¼¼È÷ ¸»Çϸé ftp://ftp.ee.lbl.gov/tcpdump.tar.Z °¡ ¾Æ¸¶ libpcapÀÇ Ä¿´Ù¶õ È®ÀåÀÇ ¿¹½Ã¸¦ º¸¿© ÁÙ °ÍÀÌ´Ù. 4) °øÇåÀÚ ¸®½ºÆ® ------------------------ Thamer Al-Herbish W. Richard Stevens John W. Temples (III) Michael Masino Lamont Granquist Michael T. Stolarchuk Mike Borella route Derrick J Brashear