<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>adioshun&#45784;&#51032; &#45432;&#53944;</title>
    <link>http://adioshun.springnote.com/pages</link>
    <description>adioshun&#45784;&#51032; &#45432;&#53944;</description>
    <language>ko-KR</language>
    <item>
      <title>tcpdump_file</title>
      <description>&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (RFileName != NULL) {&amp;nbsp;&amp;nbsp;&amp;nbsp; // &#51069;&#50612; &#46308;&#51068; dump &#54028;&#51068;&#51060; &#51080;&#45716; &#51648; &#54869;&#51064;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int dlt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; const char *dlt_name;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pd = pcap_open_offline(RFileName, ebuf);&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //open dump file&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /* Open a savefile in the tcpdump/libpcap format to read packets&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;function prototype&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pcap_t* pcap_open_offline(const char* fname, char* errbuf)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (pd == NULL)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; error("%s", ebuf);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dlt = pcap_datalink(pd);&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // pcap &#46356;&#49828;&#53356;&#47549;&#53552;&#51032; &#47553;&#53356;&#47112;&#51060;&#50612; &#53440;&#51077;&#51012; &#48152;&#54872;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dlt_name = pcap_datalink_val_to_name(dlt);&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // pcap &#46356;&#49828;&#53356;&#47549;&#53552;&#51032; &#50612;&#45841;&#53552; &#51060;&#47492; &#48152;&#54872;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /* Translates a data link type name, which is a DLT_ name with the DLT_ removed,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* to the corresponding data link type value&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;function prototype&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int pcap_datalink_val_to_name(const char* name)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;* &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Returns : -1 is returned on failure&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (dlt_name == NULL) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fprintf(stderr, "reading from file %s, link-type %u\n",&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; RFileName, dlt);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fprintf(stderr,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; "reading from file %s, link-type %s (%s)\n",&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; RFileName, dlt_name,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pcap_datalink_val_to_description(dlt));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; localnet = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; netmask = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (fflag != 0)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; error("-f and -r options are incompatible");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }// end_if (RFileName != NULL)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;strong style=""&gt;&lt;span&gt;pcap_t *pcap_open_offline(char *fname, char *ebuf)&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;
&lt;span&gt;[ &lt;/span&gt;&#44592;&#45733;&lt;span&gt; ]&lt;/span&gt;
&lt;/pre&gt;
&lt;pre&gt;
&#44592;&#51316;&#50640; &#51200;&#51109;&#46108; &#54028;&#51068;&#50640;&#49436; &#54056;&#53431;&#51012; &#51069;&#44592; &#50948;&#54644; &#49324;&#50857;&#46108;&#45796;&lt;span&gt;. &lt;/span&gt;
&lt;/pre&gt;
&lt;pre&gt;
&lt;span&gt;stdin&lt;/span&gt;&#50640;&#49436; &#51069;&#44592; &#50948;&#54644;&#49436;&#45716; &#54028;&#51068; &#51060;&#47492;&#51012;&lt;span&gt; "-"&lt;/span&gt;&#51004;&#47196; &#54620;&#45796;&lt;span&gt;. &lt;/span&gt;
&lt;/pre&gt;
&lt;pre&gt;
&lt;span&gt;[ &lt;/span&gt;&#54028;&#46972;&#48120;&#53552;&lt;span&gt; ]&lt;/span&gt;
&lt;/pre&gt;
&lt;pre&gt;
&lt;span&gt;char *fname : &lt;/span&gt;&#50724;&#54536;&#54624; &#54028;&#51068;&#51032; &#51060;&#47492;&lt;span&gt; &lt;/span&gt;
&lt;/pre&gt;
&lt;pre&gt;
&lt;span&gt;char *ebuf : &lt;/span&gt;&#49892;&#54056;&#54624; &#44221;&#50864; &#50640;&#47084; &#47700;&#49884;&#51648;&#44032; &#51200;&#51109;&#46108;&#45796;&lt;span&gt; .&lt;/span&gt;
&lt;/pre&gt;
&lt;pre&gt;
&lt;span&gt;[ &lt;/span&gt;&#47532;&#53556;&lt;span&gt; ]&lt;/span&gt;
&lt;/pre&gt;
&lt;pre&gt;
&#49457;&#44277;&lt;span&gt; : descriptor&lt;/span&gt;
&lt;/pre&gt;
&lt;pre&gt;
&#49892;&#54056;&lt;span&gt; : NULL&lt;/span&gt;
&lt;/pre&gt;
&lt;pre&gt;
&lt;br /&gt;
&lt;strong style=""&gt;&lt;span&gt;5. pcap_dumper_t *pcap_dump_open(pcap_t *p, char *fname) &lt;/span&gt;&lt;/strong&gt;
&lt;/pre&gt;
&lt;pre&gt;
&lt;span&gt;[ &lt;/span&gt;&#44592;&#45733;&lt;span&gt; ]&lt;/span&gt;
&lt;/pre&gt;
&lt;pre&gt;
&#52897;&#52432;&#54620; &#45236;&#50857;&#51012; &#54028;&#51068;&#50640; &#51200;&#51109;&#54616;&#44592; &#50948;&#54644;&#49436; &#54028;&#51068;&#51012; &#50724;&#54536;&#54620;&#45796;&lt;span&gt;. &lt;/span&gt;
&lt;/pre&gt;
&lt;pre&gt;
&lt;span&gt;stdout&lt;/span&gt;&#51012; &#51648;&#49884;&#54616;&#47140;&#47732; &#54028;&#51068;&#51060;&#47492;&#51012;&lt;span&gt; "-"&lt;/span&gt;&#47484; &#51060;&#50857;&#54620;&#45796;&lt;span&gt;.&lt;/span&gt;
&lt;/pre&gt;
&lt;pre&gt;
&lt;span&gt;[ &lt;/span&gt;&#54028;&#46972;&#48120;&#53552;&lt;span&gt; ]&lt;/span&gt;
&lt;/pre&gt;
&lt;pre&gt;
&lt;span&gt;pcap_t *p : pcap_open_offline()&lt;/span&gt;&#51060;&#45208;&lt;span&gt; pcap_open_live()&lt;/span&gt;&#50640;&#49436;&lt;span&gt; return&lt;/span&gt;&#46104;&#45716;&lt;span&gt; descriptor &lt;/span&gt;
&lt;/pre&gt;
&lt;pre&gt;
&lt;span&gt;char *fname : &lt;/span&gt;&#50724;&#54536;&#54624; &#54028;&#51068;&#51032; &#51060;&#47492;
&lt;/pre&gt;
&lt;pre&gt;
&lt;span&gt;[ &lt;/span&gt;&#47532;&#53556;&lt;span&gt; ]&lt;/span&gt;
&lt;/pre&gt;
&lt;pre&gt;
&#49457;&#44277;&lt;span&gt; : pcap_dumper_t&lt;/span&gt;&#47196; &#54056;&#53431; &#45924;&#54532;&#50752; &#44288;&#47144;&#46108; &#44396;&#51312;&#52404;
&lt;/pre&gt;
&lt;pre&gt;
&#49892;&#54056;&lt;span&gt; : NULL&lt;/span&gt;
&lt;/pre&gt;
</description>
      <pubDate>Tue, 30 Oct 2007 00:08:23 +0900</pubDate>
      <link>http://adioshun.springnote.com/pages/520313</link>
      <guid>http://adioshun.springnote.com/pages/520313</guid>
    </item>
    <item>
      <title>[&#44277;&#48512;] Tcpdump &amp; pcap&#48516;&#49437;</title>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h1&gt;&amp;nbsp;Tcpdump&lt;/h1&gt;
&lt;p&gt;&amp;nbsp;&lt;img class="attachment" title="tcpdump_output.jpg" src="/pages/271475/attachments/106621" alt="tcpdump_output.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; S: SYN (Synchronize sequence numbers &#8211; &#50672;&#44208; &#50836;&#52397;)&lt;/p&gt;
&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; F: FIN (&#48372;&#45240; &#51901;&#50640;&#49436; &#50672;&#44208;&#51012; &#51333;&#47308; &#8211; &#51221;&#49345;&#51201;&#51064; &#50672;&#44208; &#51333;&#47308;)&lt;/p&gt;
&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; R: RST (&#48708;&#51221;&#49345;&#51201;&#51004;&#47196; &#51593;&#49884; &#50672;&#44208; &#51333;&#47308;)&lt;/p&gt;
&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; P: PSH (&#45936;&#51060;&#53552;&#47484; &#51593;&#49884; &#50612;&#54540;&#47532;&#52992;&#51060;&#49496;&#51004;&#47196; &#51204;&#45804;)&lt;/p&gt;
&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Urg: (&#44596;&#44553;&#54620; &#45936;&#51060;&#53552;&#50640; &#50864;&#49440;&#49692;&#50948;&#47484; &#45458;&#44172; &#51468;)&lt;/p&gt;
&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#8216;.&#8217;: (SYN, FIN, RESET, PUSH&#44032; &#50500;&#45772; &#44221;&#50864;&#47196; flag&#44032; &#49444;&#51221;&#46104;&#51648; &#50506;&#50520;&#45796;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&amp;nbsp;&#47749;&#47161;&#50612; &#48516;&#49437;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcpdump [ -adeflLnNOpqRStuUvxX ] [ -c count ]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ -C file_size ] [ -F file ]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ -i interface ] [ -m module ] [ -M secret ]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ -W filecount ]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ -E spi@ipaddr algo:secret,...&amp;nbsp; ]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ -y datalinktype ] [ -Z user ]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ expression ]&lt;/p&gt;
&lt;h5&gt;&#50741;&#49496;&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;-h: &#48260;&#51204; &#48143; &#44592;&#48376; &#49324;&#50857;&#48277;&#51012; &#48372;&#50668;&#51456;&#45796;.&lt;/li&gt;
&lt;li&gt;-a : Network &amp;amp; Broadcast &#51452;&#49548;&#46308;&#51012; &#51060;&#47492;&#46308;&#47196; &#48148;&#44988;&#45796;.&lt;/li&gt;
&lt;li&gt;-c Number : &#51228;&#49884;&#46108; &#49688;&#51032; &#54056;&#53431;&#51012; &#48155;&#51008; &#54980; &#51333;&#47308;&#54620;&#45796;.&lt;/li&gt;
&lt;li&gt;-d : compile&#46108; packet-matching code&#47484; &#49324;&#46988;&#51060; &#51069;&#51012; &#49688; &#51080;&#46020;&#47197; &#48148;&#44984;&#50612; &#54364;&#51456; &#52636;&#47141;&#51004;&#47196; &#52636;&#47141;&#54616;&#44256;, &#51333;&#47308;&#54620;&#45796;.&lt;/li&gt;
&lt;li&gt;-dd : packet-matching code&#47484; C program&#51032; &#51068;&#48512;&#47196; &#52636;&#47141;&#54620;&#45796;.&lt;/li&gt;
&lt;li&gt;-ddd : packet-matching code&#47484; &#49707;&#51088;&#47196; &#52636;&#47141;&#54620;&#45796;.&lt;/li&gt;
&lt;li&gt;-e : &#52636;&#47141;&#46104;&#45716; &#44033;&#44033;&#51032; &#54665;&#50640; &#45824;&#54644;&#49436; link-level &#54756;&#45908;&#47484; &#52636;&#47141;&#54620;&#45796;.&lt;/li&gt;
&lt;li&gt;-f : &#50808;&#48512;&#51032; internet address&#47484; &#44032;&#44553;&#51201; &#49900;&#48380;&#51060; &#50500;&#45772; &#49707;&#51088;&#47196; &#52636;&#47141;&#54620;&#45796;.(Sun&#51032; yp server&#50752;&#51032; &#49324;&#50857;&#51008; &#44032;&#44553;&#51201; &#54588;&#54620;&#45796;.)&lt;/li&gt;
&lt;li&gt;-F file : filter &#54364;&#54788;&#51032; &#51077;&#47141;&#51004;&#47196; &#54028;&#51068;&#51012; &#48155;&#50500;&#46308;&#51064;&#45796;. &#52964;&#47592;&#46300;&#46972;&#51064;&#50640; &#51452;&#50612;&#51652; &#52628;&#44032;&#51032; &#54364;&#54788;&#46308;&#51008; &#47784;&#46160;&#47924;&#49884;&#46108;&#45796;.&lt;/li&gt;
&lt;li&gt;-i device : &#50612;&#45712; &#51064;&#53552;&#54168;&#51060;&#49828;&#47484; &#44221;&#50976;&#54616;&#45716; &#54056;&#53431;&#46308;&#51012; &#51105;&#51012;&#51648; &#51648;&#51221;&#54620;&#45796;. &#51648;&#51221;&#46104;&#51648; &#50506;&#51004;&#47732;&#51064;&#53552;&#54168;&#51060;&#49828; &#47532;&#49828;&#53944;&#47484; &#44160;&#49353;&#54616;&#50668; &#44032;&#51109; &#45230;&#51008; &#48264;&#54840;&#47484; &#44032;&#51652; &#51064;&#53552;&#54168;&#51060;&#49828;&#47484; &#49440;&#53469;&lt;/li&gt;
&lt;li&gt;-l : &#54364;&#51456; &#52636;&#47141;&#51004;&#47196; &#45208;&#44032;&#45716; &#45936;&#51060;&#53552;&#46308;&#51012; line buffering&#54620;&#45796;. &#45796;&#47480; &#54532;&#47196;&#44536;&#47016;&#50640;&#49436; tcpdump&#47196;&#48512;&#53552; &#45936;&#51060; &#53552;&#47484; &#48155;&#44256;&#51088; &#54624; &#46412; &#50976;&#50857;&#54616;&#45796;.
&lt;ul&gt;
&lt;li&gt;&#48372;&#53685; 'tcpdump -l | tee dat' &#45208; 'tcpdump -l &amp;lt; dat &amp;amp; tail -f dat' &#47749;&#47161;&#51004;&#47196; &#50672;&#44228;&#54644;&#49436; &#49324;&#50857;&#54616;&#47732; &#54200;&#47532;&#54616;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;-n : &#47784;&#46304; &#51452;&#49548;&#46308;&#51012; &#48264;&#50669;&#54616;&#51648; &#50506;&#45716;&#45796;(port,host address &#46321;&#46321;)&lt;/li&gt;
&lt;li&gt;-N : &#54840;&#49828;&#53944; &#51060;&#47492;&#51012; &#52636;&#47141;&#54624; &#46412;, &#46020;&#47700;&#51064;&#51012; &#52237;&#51648; &#50506;&#45716;&#45796;.&lt;/li&gt;
&lt;li&gt;-O : packet-matching code optimizer&#47484; &#49892;&#54665;&#54616;&#51648; &#50506;&#45716;&#45796;. &#51060; &#50741;&#49496;&#51008; optimizer&#50640; &#51080;&#45716; &#48260;&#44536;&#47484; &#52286;&#51012;&#46412;&#45208; &#50416;&#51064;&#45796;.&lt;/li&gt;
&lt;li&gt;-p : &#51064;&#53552;&#54168;&#51060;&#49828;&#47484; promiscuous mode&#47196; &#46160;&#51648; &#50506;&#45716;&#45796;.&lt;/li&gt;
&lt;li&gt;-q : &#54532;&#47196;&#53664;&#53084;&#50640; &#45824;&#54620; &#51221;&#48372;&#47484; &#45916; &#52636;&#47141;&#54620;&#45796;. &#46384;&#46972;&#49436; &#52636;&#47141;&#46104;&#45716; &#46972;&#51064;&#51060; &#51328; &#45908; &#51687;&#50500;&#51652;&#45796;.&lt;/li&gt;
&lt;li&gt;-r file : &#54056;&#53431;&#46308;&#51012; '-w'&#50741;&#49496;&#51004;&#47196; &#47564;&#46308;&#50612;&#51652; &#54028;&#51068;&#47196; &#48512;&#53552; &#51069;&#50612; &#46308;&#51064;&#45796;. &#54028;&#51068;&#50640; "-" &#44032; &#49324;&#50857;&#46104;&#47732; &#54364;&#51456;&#51077;&#47141;&#51012; &#53685;&#54644;&#49436; &#48155;&#50500;&#46308;&#51064;&#45796;.&lt;/li&gt;
&lt;li&gt;-s length: &#54056;&#53431;&#46308;&#47196;&#48512;&#53552; &#52628;&#52636;&#54616;&#45716; &#49368;&#54540;&#51012; default&#44050;&#51064; 68Byte&#50808;&#51032; &#44050;&#51004;&#47196; &#49444;&#51221;&#54624; &#46412; &#49324;&#50857;&#54620;&#45796;.&lt;/li&gt;
&lt;li&gt;-T type : &#51312;&#44148;&#49885;&#50640; &#51032;&#54644; &#49440;&#53469;&#46108; &#54056;&#53431;&#46308;&#51012; &#47749;&#49884;&#46108; &#54805;&#49885;&#51004;&#47196; &#54364;&#49884;&#54620;&#45796;.
&lt;ul&gt;
&lt;li&gt;type&#50640;&#45716; &#45796;&#51020;&#44284; &#44057;&#51008; &#44163;&#46308;&#51060; &#50732; &#49688; &#51080;&#45796;.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;rpc(Remote Procedure Call), rtp(Real-Time Applications protocol), rtcp(Real-Time Application control protocal), vat(Visual Audio Tool), wb(distributed&amp;nbsp; White Board)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;-S : TCP sequence&#48264;&#54840;&#47484; &#49345;&#45824;&#51201;&#51064; &#48264;&#54840;&#44032; &#50500;&#45772; &#51208;&#45824;&#51201;&#51064; &#48264;&#54840;&#47196; &#52636;&#47141;&#54620;&#45796;.&lt;/li&gt;
&lt;li&gt;&amp;nbsp;-t : &#52636;&#47141;&#46104;&#45716; &#44033;&#44033;&#51032; &#46972;&#51064;&#50640; &#49884;&#44036;&#51012; &#52636;&#47141;&#54616;&#51648; &#50506;&#45716;&#45796;.&lt;/li&gt;
&lt;li&gt;&amp;nbsp;-tt : &#52636;&#47141;&#46104;&#45716; &#44033;&#44033;&#51032; &#46972;&#51064;&#50640; &#54805;&#49885;&#51060; &#50630;&#45716; &#49884;&#44036;&#46308;&#51012; &#52636;&#47141;&#54620;&#45796;.&lt;/li&gt;
&lt;li&gt;&amp;nbsp;-v : &#51328; &#45908; &#47566;&#51008; &#51221;&#48372;&#46308;&#51012; &#52636;&#47141;&#54620;&#45796;.&lt;/li&gt;
&lt;li&gt;&amp;nbsp;-vv : '-v'&#48372;&#45796; &#51328; &#45908; &#47566;&#51008; &#51221;&#48372;&#46308;&#51012; &#52636;&#47141;&#54620;&#45796;.&lt;/li&gt;
&lt;li&gt;&amp;nbsp;-vvv : 16&#51652;&#49688;&#44050; &#54805;&#53468;&#47196; &#51221;&#48372;&#47484; &#48372;&#50668;&#51456;&#45796;. &#48372;&#53685; -X&#50741;&#49496;&#44284; &#49324;&#50857;&#46104;&#50612;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;-w : &#52897;&#52656;&#54620; &#54056;&#53431;&#46308;&#51012; &#48516;&#49437;&#54644;&#49436; &#52636;&#47141;&#54616;&#45716; &#45824;&#49888;&#50640; &#44536;&#45824;&#47196; &#54028;&#51068;&#50640; &#51200;&#51109;&#54620;&#45796;.&lt;/li&gt;
&lt;li&gt;&amp;nbsp;-x : &#44033;&#44033;&#51032; &#54056;&#53431;&#51012; &#54757;&#49324;&#53076;&#46300;&#47196; &#52636;&#47141;&#54620;&#45796;.&lt;/li&gt;
&lt;li&gt;&amp;nbsp;-X : &#54757;&#49324;&#53076;&#46300;&#50752; ascii&#54805;&#53468; &#47784;&#46160; &#52636;&#47141;&#54644;&#51456;&#45796;. &#48372;&#53685; -x &#50741;&#49496;&#44284; &#44057;&#51060; &#49324;&#50857;&#46108;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;&#51312;&#44148;&#49885;(expression)&lt;/h5&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;nbsp; &#50741;&#49496;&#51032; &#51228;&#51068; &#47560;&#51648;&#47561;&#51064; &#51312;&#44148;&#49885;&#51008; &#50612;&#46500; &#54056;&#53431;&#46308;&#51012; &#52636;&#47141;&#54624; &#51648;&#47484; &#49440;&#53469;&#54616;&#45716; &#45936; &#50416;&#51064;&#45796;. &#51312;&#44148;&#49885;&#51060; &#51452;&#50612;&#51648;&#51648; &#50506;&#45716;&#45796;&#47732; &#47784;&#46304; &#54056;&#53431;&#46308;&#51060; &#45824;&#49345;&#51060; &#46108;&#45796;. &#51312;&#44148;&#49885;&#46308;&#51008; &#54616;&#45208; &#46608;&#45716; &#50668;&#47084; &#44060;&#51032; primitive&#46308;&#47196; &#44396;&#49457;&#46104;&#50612; &#51080;&#44256; primitive&#46308;&#51008; &#45796;&#49884; &#54616;&#45208; &#46608;&#45716; &#50668;&#47084; &#44060;&#51032; qualifier&#46308; &#45796;&#51020;&#50640; &#50724;&#45716; &#54616;&#45208;&#51032; &#44050;&#51004;&#47196; &#51060;&#47336;&#50612;&#51652;&#45796;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h6 style="margin-left: 1em;"&gt;qualifier&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;type : &#51452;&#50612;&#51652; &#44050;&#51032; &#51333;&#47448;&#44032; &#47924;&#50631;&#51064;&#51648;&#47484; &#45208;&#53440;&#45240;&#45796;.
&lt;ul&gt;
&lt;li&gt;&#44032;&#45733;&#54620; type&#46308;&#51008; 'host', 'net', 'port'&#44032; &#51080;&#45796;.type&#51060; &#50630;&#45716; &#44050;&#46308;&#51008; type&#51012; host&#46972; &#44032;&#51221;&#54620;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;dir : id&#47196; &#48512;&#53552;&#51032; &#50612;&#46500; &#53945;&#51221;&#54620; &#51204;&#49569; &#48169;&#54693;&#51012; &#45208;&#53440;&#45240;&#45796;.
&lt;ul&gt;
&lt;li&gt;&#44032;&#45733;&#54620; &#48169;&#54693;&#51008; 'src', 'dst', 'src or&amp;nbsp; dst', 'src and dst'&#51060;&#45796;. &#47564;&#50557; &#48169;&#54693;&#51060; &#51221;&#54644;&#51648;&#51648; &#50506;&#50520;&#45796;&#47732;, src or dst&#46972; &#44032;&#51221;&#54620;&#45796;. "For `null' link layers (i.e. point to point protocols such as slip) the inb ound and out&amp;nbsp; bound qualifiers can be used to specify a desired direction."&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;proto : &#47588;&#52845;&#51012; &#53945;&#51221; &#54532;&#47196;&#53664;&#53084;&#50640; &#54620;&#54644;&#49436; &#49688;&#54665;&#54620;&#45796;. &#44032;&#45733;&#54620; &#54532;&#47196;&#53664;&#53084;&#46308;&#51008; ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp, udp&#51060;&#45796;. &#47564;&#50557; &#54532;&#47196;&#53664;&#53084;&#51060; &#47749;&#49884;&#46104;&#51648; &#50506;&#50520;&#45796;&#47732;, &#54644;&#45817;&#54616;&#45716; &#44050;&#51032; type&#50640; &#44288;&#47144;&#46108; &#47784;&#46304; &#54532;&#47196;&#53664;&#53084;&#46308;&#51060; &#44536; &#45824;&#49345;&#51060; &#46108;&#45796;&lt;/li&gt;
&lt;li&gt;&#50948;&#51032; &#54056;&#53556;&#51012; &#46384;&#47476;&#51648; &#50506;&#45716; primitive : gateway, broadcast, less, greater, &#49328;&#49696;&#49885;&#51060; &#51080;&#51004;&#47728; &#52280;&#44256;&#47196; &#45908; &#51221;&#44368;&#54620; &#51312;&#44148;&#49885;&#51012; &#49324;&#50857;&#54616;&#47140;&#47732; 'and(&amp;amp;&amp;amp;)','or(||)','not(!)'&#51012; &#49324;&#50857;&#54624; &#49688; &#51080;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h6 style="margin-left: 1em;"&gt;&#49324;&#50857;&#44032;&#45733;&#54620; primitive&#46308;&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;dst host HOST&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; packet&#51032; IP destination &#54637;&#47785;&#51060; HOST&#51068;&#46412; &#52280;&#51060; &#46108;&#45796;.&lt;/li&gt;
&lt;li&gt;src host HOST&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; packet&#51032; IP source &#54637;&#47785;&#51060; HOST&#51068;&#46412; &#52280;&#51060; &#46108;&#45796;.&lt;/li&gt;
&lt;li&gt;host HOST&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; IP source, IP destination &#54637;&#47785; &#51473; &#50612;&#45712; &#54616;&#45208;&#46972;&#46020; HOST&#51060;&#47732; &#52280;&#51060;&#45796;.&lt;/li&gt;
&lt;li&gt;ether dst ehost&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; ethernet destination &#51452;&#49548;&#44032; ehost&#51068; &#46412; &#52280;&#51060;&#45796;.&lt;/li&gt;
&lt;li&gt;ether src ehost&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; ethernet source &#51452;&#49548;&#44032; ehost&#51068; &#46412; &#52280;&#51060;&#45796;.&lt;/li&gt;
&lt;li&gt;ether host ehost&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; ethernet source, destination &#54637;&#47785;&#46308; &#51473; &#50612;&#45712; &#54616;&#45208;&#46972;&#46020; ehost&#51060;&#47732; &#52280;&#51060;&#45796;.&lt;/li&gt;
&lt;li&gt;gateway host&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; &#54056;&#53431;&#51060; host&#47484; &#44172;&#51060;&#53944;&#50920;&#51060;&#47196; &#49324;&#50857;&#54616;&#47732; &#52280;&#51060;&#45796;.
&lt;ul&gt;
&lt;li&gt;&#51060; &#47568;&#51032; &#51032;&#48120;&#45716; ethernet sour ce&#45208; destination &#54637;&#47785;&#51008; host&#51060;&#51648;&#47564;, IP source&#50752; destination&#51008; host&#44032; &#50500;&#45776; &#46412;&#47484; &#47568;&#54620;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;dst net NET&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; &#54056;&#53431;&#51032; IP destination &#51452;&#49548;&#44032; NET&#51032; network number&#47484; &#44032;&#51648;&#44256; &#51080;&#51012; &#46412; &#52280;&#51060;&#45796;.&lt;/li&gt;
&lt;li&gt;src net NET&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; &#54056;&#53431;&#51032; IP source &#51452;&#49548;&#44032; NET&#51032; network number&#47484; &#44032;&#51648;&#44256; &#51080;&#51012; &#46412; &#52280;&#51060;&#45796;.&lt;/li&gt;
&lt;li&gt;net NET&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; &#54056;&#53431;&#51032; IP source &#51452;&#49548; &#54841;&#51008; destination &#51452;&#49548;&#44032; NET&#51032; network number&#47484; &#44032; &#51648;&#44256; &#51080;&#51012; &#46412; &#52280;&#51060;&#45796;.&lt;/li&gt;
&lt;li&gt;net netmask mask&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; IP &#50612;&#46300;&#47112;&#49828;&#44032; &#51648;&#51221;&#46108; netmask&#47484; &#53685;&#54644;&#49436; net&#44284; &#47588;&#52845;&#46104;&#47732; &#52280;&#51060;&#45796;.&lt;/li&gt;
&lt;li&gt;net net/len&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; IP &#50612;&#46300;&#47112;&#49828;&#44032; netmask&#50752; len &#48708;&#53944;&#47564;&#53372; &#47588;&#52824;&#46104;&#47732; &#52280;&#51060;&#45796;.&lt;/li&gt;
&lt;li&gt;dst port PORT&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; &#54056;&#53431;&#51060; ip/tcp, ip/udp &#54532;&#47196;&#53664;&#53084;&#51032; &#54056;&#53431;&#51060;&#44256; destination port&#51032; &#44050;&#51060; PORT&#51068; &#46412; &#52280;&#51060;&#45796;.&lt;/li&gt;
&lt;li&gt;src port PORT&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; &#54056;&#53431;&#51032; source port&#51032; &#44050;&#51004;&#47196; PORT&#47484; &#44032;&#51648;&#47732; &#52280;&#51060;&#45796;.&lt;/li&gt;
&lt;li&gt;port PORT&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; &#54056;&#53431;&#51032; source, destination port &#51473;&#50640; &#54616;&#45208;&#46972;&#46020; PORT&#51060;&#47732; &#52280;&#51060;&#45796;.&lt;/li&gt;
&lt;li&gt;less length =&amp;gt; &#54056;&#53431;&#51060; length&#48372;&#45796; &#51687;&#44144;&#45208; &#44057;&#51004;&#47732; &#52280;&#51060;&#45796;.(len &amp;lt;= length)&lt;/li&gt;
&lt;li&gt;greater length =&amp;gt; &#54056;&#53431;&#51060; length&#48372;&#45796; &#51687;&#44144;&#45208; &#44057;&#51004;&#47732; &#52280;&#51060;&#45796;.(len &amp;gt;= length)&lt;/li&gt;
&lt;li&gt;ip proto protocol =&amp;gt; &#54056;&#53431;&#51060; &#51648;&#51221;&#46108; &#51333;&#47448;&#51032; &#54532;&#47196;&#53664;&#53084;&#51032; ip&#54056;&#53431;&#51060;&#47732; &#52280;&#51060;&#45796;.
&lt;ul&gt;
&lt;li&gt;Protocol&#51008; icmp, igrp, udp, nd, tcp &#51473;&#51032; &#54616;&#45208; &#54841;&#51008; &#47751; &#44060;&#44032; &#46112; &#49688; &#51080;&#45796;. &#51452;&#51032;&#54624; &#51216;&#51008; tcp, udp, icmp&#46308;&#51008; '\'&#47196; escape&#46104;&#50612;&#50556; &#54620;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ehter broadcast =&amp;gt; &#54056;&#53431;&#51060; ethernet broadcast &#54056;&#53431;&#51060;&#46972;&#47732; &#52280;&#51060;&#45796;. ehter&#45716; &#49373;&#47029; &#44032;&#45733;&#54616;&#45796;.&lt;/li&gt;
&lt;li&gt;ip broadcast =&amp;gt; &#54056;&#53431;&#51060; IP broadcast &#54056;&#53431;&#51060;&#46972;&#47732; &#52280;&#51060;&#45796;.&lt;/li&gt;
&lt;li&gt;ether multicast =&amp;gt; &#54056;&#53431;&#51060; IP multicast &#54056;&#53431;&#51060;&#46972;&#47732; &#52280;&#51060;&#45796;.&lt;/li&gt;
&lt;li&gt;ether proto protocol =&amp;gt; &#54056;&#53431; &#51060; ether type&#51032; protocol&#51060;&#46972;&#47732; &#52280;&#51060;&#45796;.
&lt;ul&gt;
&lt;li&gt;protocol&#51008; ip, arp, rarp &#51473;&#50640; &#54616;&#45208; &#54841;&#51008; &#47751;&#44060;&#44032; &#46112; &#49688; &#51080;&#45796;. ip proto protocol&#50640;&#49436;&#50752; &#47560;&#52268;&#44032;&#51648;&#47196; ip, arp, rarp&#45716; escape &#46104;&#50612;&#50556; &#54620;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;decnet src host =&amp;gt; &#47564;&#50557; DECNET&#51032; source address&#44032; host&#51060;&#47732; &#52280;&#51060;&#45796;.&lt;/li&gt;
&lt;li&gt;&#51060; &#50612;&#46300;&#47112;&#49828;&#45716; '10.123'&#51060; &#45208; DECNET&#51032; host name&#51068; &#49688; &#51080;&#45796;. DECNET host name&#51008; DECNET&#50640;&#49436; &#46028;&#50500;&#44032;&#46020;&#47197; &#49444;&#51221;&#46108; Ultrix &#49884;&#49828;&#53596;&#50640;&#49436;&#47564; &#49324;&#50857; &#44032;&#45733;&#54616;&#45796;.&lt;/li&gt;
&lt;li&gt;decnet dst host =&amp;gt; DECNET destination address&#44032; host&#51060;&#47732; &#52280;&#51060;&#45796;.&lt;/li&gt;
&lt;li&gt;decnet host HOST =&amp;gt; DECNET source, destination address&#51473;&#51032; &#54616;&#45208;&#46972;&#46020; HOST&#51060;&#47732; &#52280;&#51060;&#45796;.&lt;/li&gt;
&lt;li&gt;ip, arp, rarp, decnet =&amp;gt; ether proto [ip|arp|rarp|decnet]&#51032; &#50557;&#50612;&lt;/li&gt;
&lt;li&gt;lat, moprc, mopdl =&amp;gt; ether proto [lat|moprc|mopdl]&#51032; &#50557;&#50612;&lt;/li&gt;
&lt;li&gt;tcp, udp, icmp =&amp;gt; ip proto [tcp|udp|icmp]&#51032; &#50557;&#50612;&lt;/li&gt;
&lt;li&gt;expr relop expr
&lt;ul&gt;
&lt;li&gt;EXPR&lt;/li&gt;
&lt;li&gt;proto [expr:size]&#51032; &#54805;&#49885;&#51012; &#46948;&#45796;. proto, expr, size&#50640; &#50732; &#49688; &#51080;&#45716; &#44163;&#46308;&#51008; &#45796;&#51020;&#44284; &#44057;&#45796;.
&lt;ul&gt;
&lt;li&gt;&amp;nbsp; proto : ether, fddi, ip, arp, rarp, tcp, udp, icmp&lt;/li&gt;
&lt;li&gt;&amp;nbsp; expr : indicate Byte offset of packet of proto&lt;/li&gt;
&lt;li&gt;&amp;nbsp; size : optional. indicate the size of bytes in field of interest&lt;/li&gt;
&lt;li&gt;&amp;nbsp; default is one, and can be two or four&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;nbsp; RELOP
&lt;ul&gt;
&lt;li&gt;!=, =, &amp;lt;=, &amp;gt;=, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&#51060; &#51312;&#44148;&#49885;&#51012; &#49324;&#50857;&#54616;&#44592; &#50948;&#54644;&#49436;&#45716; &#47676;&#51200; &#54644;&#45817;&#54616;&#45716; Protocol(proto)&#51032; &#54756;&#45908;&#50640; &#44288;&#47144;&#46108; &#44163;&#46308;&#51012; &#51088;&#49464;&#55176; &#50508;&#50500;&#50556;&#47564; &#54620;&#45796;. proto&#50640;&#45716; &#45824;&#49345;&#51060; &#46112; &#54532;&#47196;&#53664;&#53084;&#51012; &#51648;&#51221;&#54620;&#45796;. expr&#50640;&#45716; &#54532;&#47196;&#53664;&#53084; &#54756;&#45908;&#51032; &#52376;&#51020;&#48512;&#53552;&#51032; Byte Offset&#51012; &#51648;&#51221;&#54616;&#45716; &#49885;&#51060; &#46308;&#50612;&#44032;&#44172; &#46108;&#45796;. Size&#45716; Option&#51060;&#47728; &#51648;&#51221;&#51060; &#50504; &#46104;&#50612; &#51080;&#51012; &#44221;&#50864;&#50640;&#45716; &#51088;&#46041;&#51004;&#47196; 1byte&#47484; &#51648;&#52845;&#54620;&#45796;. &#46384;&#46972;&#49436; &#51060; &#51312;&#44148;&#49885;&#51012; &#49324;&#50857;&#54616;&#44172; &#46104;&#47732; &#54756;&#45908;&#50640; &#54252;&#54632;&#46108; &#51221;&#48372;&#47484; Bitmask&#47484; &#49324;&#50857;&#54616;&#50668; &#51649; &#51217; &#50896;&#54616;&#45716; &#54056;&#53431;&#51064;&#51648;&#47484; &#44032;&#47140;&#45244; &#49688; &#51080;&#44592; &#46412;&#47928;&#50640;, &#48372;&#45796; &#51221;&#48128;&#54620; &#49324;&#50857;&#51060; &#44032;&#45733;&#54616;&#44172; &#46108;&#45796;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;TCPDUMP &#49324;&#50857; &#50696;&#51228;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;security&#46972;&#45716; &#54840;&#49828;&#53944;&#47196;&#48512;&#53552; &#45216;&#50500;&#50724;&#44256;, &#45216;&#50500;&#44032;&#45716; &#54056;&#53431;&#46308;&#51012; &#52636;&#47141;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # tcpdump host security&lt;/li&gt;
&lt;li&gt;security&#50752; mazinga, getarobo &#49324;&#51060;&#50640; &#45216;&#50500;&#45796;&#45768;&#44256; &#51080;&#45716; &#54056;&#53431;&#46308;&#51012; &#52636;&#47141;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # tcpdump host security and \( mazinga or getarobo \)&lt;/li&gt;
&lt;li&gt;security&#50640;&#49436; elgaim&#51012; &#51228;&#50808;&#54620; &#47784;&#46304; &#54840;&#49828;&#53944;&#47196; &#45216;&#50500;&#45796;&#45768;&#45716; IP &#54056;&#53431;&#46308;&#51012; &#52636;&#47141;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # tcpdump ip host security and not elgaim&lt;/li&gt;
&lt;li&gt;gateway amurorei&#47484; &#44144;&#52824;&#45716; ftp&#50640; &#44288;&#47144;&#46108; &#54056;&#53431;&#46308;&#51012; &#52636;&#47141;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # tcpdump 'gateway amurorei and ( port ftp or ftp-data )'&lt;/li&gt;
&lt;li&gt;local&#54840;&#49828;&#53944;&#44032; &#50500;&#45772; &#54840;&#49828;&#53944;&#50752; &#47196;&#52972;&#54840;&#49828;&#53944;&#44032; &#47610;&#45716; TCP &#52964;&#45349;&#49496;&#51032; &#49884;&#51089;&#44284; &#47560;&#51648;&#47561; &#54056; &#53431;&#46308;&#51012; &#52636;&#47141;&#54620;&#45796;(SYN, FIN &#54056;&#53431;).&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # tcpdump 'tcp[13] &amp;amp; 3 != 0 and not src and dst net non-local'&lt;/li&gt;
&lt;li&gt;gateway amurorei&#47484; &#51648;&#45208;&#45716; 576Byte&#48372;&#45796; &#53360; &#54056;&#53431;&#46308;&#51012; &#52636;&#47141;&#54620;&#45796;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # tcpdump 'gateway amurorei and ip[2:2] &amp;gt; 576'&lt;/li&gt;
&lt;li&gt;Ethernet boradcast &#54841;&#51008; multicast&#47484; &#53685;&#54644;&#49436; &#48372;&#45236;&#51652; &#44163;&#51060; &#50500;&#45772;, IP broadcast &#54841; &#51008; multicast &#54056;&#53431;&#46308;&#51012; &#52636;&#47141;&#54620;&#45796;.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # tcpdump 'ehter[0] &amp;amp; 1 = 0 and ip[16] &amp;gt;= 224'&lt;/li&gt;
&lt;li&gt;Echo request/reply&#44032; &#50500;&#45772; ICMP &#54056;&#53431;&#46308;&#51012; &#47784;&#46160; &#52636;&#47141;&#54620;&#45796;.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # tcpdump 'icmp[0] != 8 and icmp[0] != 0'&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;mytcpdump &#50696;&#51228;&lt;br /&gt;&lt;/h3&gt;
&lt;p&gt;&#52636;&#52376; : &lt;strong&gt;http://www.awarenetwork.org/home/iqlord/exploits/collection/knu.c&lt;/strong&gt;&amp;nbsp; &lt;a href="/pages/505646" class="wiki" title="[mytcpdump]"&gt;[mytcpdump]&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Pcap &#46972;&#51060;&#48652;&#47084;&#47532;&lt;/h1&gt;
&lt;h3&gt;pacp_open_live() : &#45348;&#53944;&#50892;&#53356; &#46356;&#48148;&#51060;&#49828; &#50676;&#44592;&lt;/h3&gt;
&lt;div&gt;
&lt;p&gt;&lt;strong&gt;pcap_t *pcap_open_live(char *device, int snaplen, int promisc, int to_ms, char *ebuf)&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;device : &#46356;&#48148;&#51060;&#49828; &#51060;&#47492; (eth0, hme0)&lt;/li&gt;
&lt;li&gt;snplen : &#54620;&#48264;&#50640; &#52897;&#52432;&#54624; &#53356;&#44592; &#51648;&#51221;&lt;/li&gt;
&lt;li&gt;promisc : &#52897;&#52432;&#54624; &#45824;&#49345;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;0 : &#47785;&#51201;&#51648;&#44032; &#51088;&#49888;, &#48652;&#47196;&#46300; &#52880;&#49828;&#53944;, &#51088;&#49888;&#54252;&#54632;&#54620; &#47680;&#54000; &#52880;&#49828;&#53944;&lt;/li&gt;
&lt;li&gt;1 : &#47784;&#46304; &#54056;&#53431;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;to_ms : &#48260;&#54140;&#47553; &#49884;&#44036;, &#54056;&#53431; &#46020;&#52265;&#54980; OS&#44032; &#52376;&#47532; &#45824;&#44592; &#49884;&#44036;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;0 : &#52649;&#48516;&#55176; &#54056;&#53431; &#46020;&#52265; &#54624;&#46468; &#44620;&#51648; &#45824;&#44592;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ebuf : &#50640;&#47084; &#48156;&#49373;&#49884; &#50896;&#51064; &#51200;&#51109;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&#49457;&#44277;&#49884; pcap_t &#53440;&#51077;&#51032; &#46356;&#48148;&#51060;&#49828; &#46356;&#49828;&#53356;&#47549;&#53552;, &#49892;&#54056;&#49884; null&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;pcap_lookupdev() : &#54056;&#53431; &#52897;&#52432; &#54624;&#49688; &#51080;&#45716; &#46356;&#48148;&#51060;&#49828; &#52286;&#44592;&lt;/h3&gt;
&lt;div&gt;
&lt;p&gt;&lt;strong&gt;char *pcap_lookupdev (char *ebuf);&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ebuf : &#50640;&#47084; &#48156;&#49373;&#49884; &#50896;&#51064; &#51200;&#51109;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&#49457;&#44277;&#49884; &#46356;&#48148;&#51060;&#49828; &#51060;&#47492; &#48152;&#54872;&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;pcap_loop() : &#54056;&#53431; &#52897;&#52432; &#54632;&#49688; &amp;nbsp; (pcap_dispatch&#50752; &#48708;&#49847;)&lt;/h3&gt;
&lt;div&gt;
&lt;p&gt;&lt;strong&gt;int pcap_loop(pcap_t *p, int maxcnt, pcap_handler callback, u_char *args);&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;*p : pcap &#46356;&#49828;&#53356;&#47549;&#53552;&lt;/li&gt;
&lt;li&gt;maxcnt : &#52897;&#52432;&#54624; &#52572;&#45824; &#49688;&lt;/li&gt;
&lt;li&gt;callback : &#54056;&#53431; &#51069;&#50612; &#46300;&#47536;&#54980; &#52376;&#47532; &#54616;&#44592; &#50948;&#54644; &#45236;&#48512;&#51201;&#51004;&#47196; &#54840;&#52636;&#54616;&#45716; &#53084;&#48177; &#54632;&#49688;&lt;/li&gt;
&lt;li&gt;args : callback &#54632;&#49688;&#51032; &#51064;&#51088;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h5&gt;&amp;nbsp;callback &#54632;&#49688;&#51032; &#49324;&#50857; &#47928;&#48277;&lt;/h5&gt;
&lt;div&gt;
&lt;p&gt;&lt;strong&gt;void (*pcap_handler)(u_char *args, const struct pcap_pkthdr *, const u_char *packet);&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;args : pcap_loop()&#50640;&#49436; &#45336;&#44200; &#48155;&#51008; &#51064;&#51088;&lt;/li&gt;
&lt;li&gt;pcap_pkthdr : &#52897;&#52432;&#54620; &#54056;&#53431;&#51032; &#44600;&#51060;&#45208; &#49884;&#44036; &#44288;&#47144; &#51221;&#48372;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="margin-left: 5em;"&gt;&lt;strong&gt;&lt;span style="color: rgb(155, 24, 193);"&gt;&amp;nbsp; &amp;nbsp; struct pcap_pkthdr {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct timeval ts;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* time stamp */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bpf_u_int32 caplen;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* length of portion present */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bpf_u_int32 len;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* length this packet (off wire) */&lt;br /&gt;
&amp;nbsp;};&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;packet : &#52897;&#52432;&#46108; &#45936;&#51060;&#53552;&#51032; &#52395; &#48512;&#48516;&#51012; &#44032;&#47476;&#53412;&#45716; &#54252;&#51064;&#53552;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&amp;nbsp;&#44288;&#47144; &#49324;&#51060;&#53944;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Programming with pcap : &lt;a href="http://blog.naver.com/oz9th?Redirect=Log&amp;amp;amp;amp;amp;logNo=30009332560" title="http://blog.naver.com/oz9th?Redirect=Log&amp;amp;amp;amp;amp;logNo=30009332560" class="external"&gt;http://blog.naver.com/oz9th?Redirect=Log&amp;amp;logNo=30009332560&lt;/a&gt;&amp;nbsp;&amp;nbsp; http://blog.naver.com/wja30/100030218871 http://www.tcpdump.org/pcap.htm&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&#47532;&#45573;&#49828;&#50640;&#49436; pcap library&#47484; &#49324;&#50857;&#54616;&#50668; &#54056;&#53431;&#51012; &#51105;&#50500;&#48372;&#44592; v0.3&amp;nbsp; &lt;a href="http://kldp.org/KoreanDoc/Libpcap-KLDP" title="http://kldp.org/KoreanDoc/Libpcap-KLDP" class="external"&gt;http://kldp.org/KoreanDoc/Libpcap-KLDP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="pcol1 itemSubjectBoldfont"&gt;PCD(Packet Capture Descriptor) :&lt;/span&gt; &lt;a href="http://blog.naver.com/linuxint/100007507207" title="http://blog.naver.com/linuxint/100007507207" class="external"&gt;http://blog.naver.com/linuxint/100007507207&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.naver.com/linuxint/100007507207" title="http://blog.naver.com/linuxint/100007507207" class="external"&gt;http://blog.naver.com/linuxint/100007507207&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Pcap &#51012; &#51060;&#50857;&#54620; &#54056;&#53431;&#52897;&#52432;&#51025;&#50857; :&amp;nbsp;&lt;a href="http://www.joinc.co.kr/modules/moniwiki/wiki.php/article/Pcap_%C6%D0%C5%B6%C4%B8%C3%C4%C0%C0%BF%EB" class="external" title="joinc"&gt;joinc&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&#47532;&#45573;&#49828;&#50640;&#49436; pcap library&#47484; &#49324;&#50857;&#54616;&#50668; &#54056;&#53431;&#51012; &#51105;&#50500;&#48372;&#44592; v0.3&amp;nbsp; http://www.usinglinux.org/docu/translations/ko/koreanDoc/Libpcap-KLDP&lt;/li&gt;
&lt;li&gt;&#54056;&#53431;&#51012; &#52897;&#52432;&#54616;&#44592; &#50948;&#54620; libpcap&#51032; fuction http://kldp.org/KoreanDoc/html/Libpcap-KLDP/function.html&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3&gt;&#52280;&#44256; : &#50741;&#49496; &#52376;&#47532; &#54632;&#49688; getopt&amp;nbsp;&lt;br /&gt;&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;getopt&lt;/code&gt; and &lt;code&gt;getopt_long&lt;/code&gt; functions automate some of the chore involved in parsing typical unix command line options.&lt;/p&gt;
&lt;ul class="menu"&gt;
&lt;li&gt;&lt;a href="http://www.gnu.org/software/libc/manual/html_node/Using-Getopt.html#Using-Getopt"&gt;Using Getopt&lt;/a&gt;: Using the &lt;code&gt;getopt&lt;/code&gt; function.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.gnu.org/software/libc/manual/html_node/Example-of-Getopt.html#Example-of-Getopt"&gt;Example of Getopt&lt;/a&gt;: An example of parsing options with &lt;code&gt;getopt&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.gnu.org/software/libc/manual/html_node/Getopt-Long-Options.html#Getopt-Long-Options"&gt;Getopt Long Options&lt;/a&gt;: GNU suggests utilities accept long-named options; here is one way to do.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.gnu.org/software/libc/manual/html_node/Getopt-Long-Option-Example.html#Getopt-Long-Option-Example"&gt;Getopt Long Option Example&lt;/a&gt;: An example of using &lt;code&gt;getopt_long&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&#54620;&#44544; &#49444;&#47749; : http://man.kldp.org/wiki/ManPage/getopt.3&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
      <pubDate>Sat, 06 Oct 2007 03:53:46 +0900</pubDate>
      <link>http://adioshun.springnote.com/pages/271475</link>
      <guid>http://adioshun.springnote.com/pages/271475</guid>
    </item>
    <item>
      <title>[mytcpdump]</title>
      <description>&lt;pre&gt;
/* konewka network utility.&lt;br /&gt;
* mytcpdump engine. home use only.&lt;br /&gt;
* tested against Linux 2.4.&lt;br /&gt;
*/&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/socket.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
#include &amp;lt;netinet/ip.h&amp;gt;&lt;br /&gt;
#include &amp;lt;netinet/tcp.h&amp;gt;&lt;br /&gt;
#include &amp;lt;netinet/in.h&amp;gt;&lt;br /&gt;
#include &amp;lt;netinet/ip.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/ioctl.h&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/if.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
#include &amp;lt;time.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;arpa/inet.h&amp;gt;&lt;br /&gt;
#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
#include &amp;lt;netdb.h&amp;gt;&lt;br /&gt;
#include &amp;lt;signal.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define VER "0.3"&lt;br /&gt;
#define BUF_SIZE 4096&lt;br /&gt;
&lt;br /&gt;
#define IPHDRSIZE (sizeof(struct iphdr))&lt;br /&gt;
#define TCPHDRSIZE (sizeof(struct tcphdr))&lt;br /&gt;
&lt;br /&gt;
void usage(u_char *prog);&lt;br /&gt;
void packetdump(u_char* pkt, u_int plen);&lt;br /&gt;
char *nat_detect(ulong src, ushort ttl);&lt;br /&gt;
char *ip2host(ulong ip);&lt;br /&gt;
int promisc(u_char *ifname, ushort set);&lt;br /&gt;
int printhdr(u_char* packet);&lt;br /&gt;
void printdate(void);&lt;br /&gt;
void die();&lt;br /&gt;
&lt;br /&gt;
struct nat {&lt;br /&gt;
    ulong ip[100];&lt;br /&gt;
    ushort ttl[100];&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct in_addr ia;&lt;br /&gt;
struct nat masq;&lt;br /&gt;
u_char *dev = "lo";&lt;br /&gt;
u_int sd = 0,&lt;br /&gt;
    count = 0,&lt;br /&gt;
    pdump = 0, &lt;br /&gt;
    resolve = 0,&lt;br /&gt;
    cpos = 0,&lt;br /&gt;
    syn_mode = 0;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[]) {&lt;br /&gt;
    u_int opt, i;&lt;br /&gt;
    u_char packet[BUF_SIZE], prompt[] = "konewka network utility";&lt;br /&gt;
&lt;br /&gt;
    signal(SIGINT, die);&lt;br /&gt;
    signal(SIGTERM, die);&lt;br /&gt;
    signal(SIGKILL, die);&lt;br /&gt;
    signal(SIGQUIT, die);&lt;br /&gt;
    signal(SIGSEGV, die);&lt;br /&gt;
    signal(SIGHUP, SIG_IGN);&lt;br /&gt;
    &lt;br /&gt;
    fprintf(stdout, "%s ver. %s -- http://www.olek.org/\n", prompt, VER);&lt;br /&gt;
    for (i=0;i&amp;lt;(strlen(prompt)+30+strlen(VER));i++) putchar('-');&lt;br /&gt;
    putchar('\n');&lt;br /&gt;
 &lt;br /&gt;
    while ((opt = getopt(argc, argv, "i:rhSX")) != EOF) {&lt;br /&gt;
    switch (opt) {&lt;br /&gt;
 case 'r':&lt;br /&gt;
     resolve = 1;&lt;br /&gt;
      break;&lt;br /&gt;
        case 'i':&lt;br /&gt;
     dev = optarg;&lt;br /&gt;
     break;&lt;br /&gt;
        case 'X':&lt;br /&gt;
     pdump = 1;&lt;br /&gt;
        break;&lt;br /&gt;
        case 'S':&lt;br /&gt;
     syn_mode = 1;&lt;br /&gt;
     break;&lt;br /&gt;
        case 'h':&lt;br /&gt;
     usage(argv[0]);&lt;br /&gt;
           break;&lt;br /&gt;
        default:&lt;br /&gt;
      usage(argv[0]);&lt;br /&gt;
           break;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (getuid()) {&lt;br /&gt;
       fprintf(stdout, "knu: need euid=0, got %d\n", geteuid());&lt;br /&gt;
 return -1; }&lt;br /&gt;
&lt;br /&gt;
    if ((sd = socket(PF_INET, SOCK_RAW, IPPROTO_TCP)) &amp;lt; 0) {&lt;br /&gt;
   fprintf(stderr, "knu: can't create raw socket.\n");&lt;br /&gt;
       return -1; }&lt;br /&gt;
    &lt;br /&gt;
    if (promisc(dev, 1) &amp;lt; 0) {&lt;br /&gt;
     fprintf(stderr, "knu: can't set promicuous mode.\n");&lt;br /&gt;
     return -1; }&lt;br /&gt;
&lt;br /&gt;
    fprintf(stdout, "knu: %s entered promiscuous mode.\n", dev);&lt;br /&gt;
&lt;br /&gt;
    while (1) {&lt;br /&gt;
       memset(packet, '\0', sizeof(packet));&lt;br /&gt;
     recvfrom(sd, packet, sizeof(packet), 0, NULL, 0);&lt;br /&gt;
 printhdr(packet);&lt;br /&gt;
    }&lt;br /&gt;
return 0; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void usage(u_char *prog) {&lt;br /&gt;
    fprintf(stdout, "usage: %s [ -rhpSX ] [ -i device ]\n", prog);&lt;br /&gt;
    fprintf(stdout, "  -r\tresolve host names (not recommended)\n");&lt;br /&gt;
    fprintf(stdout, "  -X\tfull packet dump\n");&lt;br /&gt;
    fprintf(stdout, "  -S\tgo into SYN mode\n");&lt;br /&gt;
    fprintf(stdout, "  -h\tthis message\n");&lt;br /&gt;
    exit(0); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void packetdump(u_char* pkt, u_int plen) {&lt;br /&gt;
    u_int i;&lt;br /&gt;
    u_char buff[17];&lt;br /&gt;
    u_char *ptr = buff;&lt;br /&gt;
    &lt;br /&gt;
    for (i=0;i&amp;lt;plen;i++) {&lt;br /&gt;
   u_char ppkt = *pkt++;&lt;br /&gt;
     if (!(i%16))&lt;br /&gt;
          printf(" (0x%02x) ", i); /* calosc */&lt;br /&gt;
 printf("%02x ", ppkt); /* hex */&lt;br /&gt;
&lt;br /&gt;
    *ptr++ = isprint(ppkt) ? ppkt : '.';&lt;br /&gt;
      if (!((i+1)%16)) {&lt;br /&gt;
            *ptr = 0;&lt;br /&gt;
         printf(" %s\n", (ptr=buff));&lt;br /&gt;
  }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    if (plen%16) {&lt;br /&gt;
    *ptr = 0;&lt;br /&gt;
 while(plen++%16)&lt;br /&gt;
      printf("   ");&lt;br /&gt;
        printf(" %s\n", buff);&lt;br /&gt;
    }&lt;br /&gt;
    putchar('\n');&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
char *ip2host(ulong ip) {&lt;br /&gt;
    static struct hostent *hp;&lt;br /&gt;
    static char blah[1024];&lt;br /&gt;
 &lt;br /&gt;
    ia.s_addr = ip;&lt;br /&gt;
    hp = gethostbyaddr((char *)&amp;amp;ia, sizeof(struct in_addr), AF_INET);&lt;br /&gt;
    if (!hp) strcpy(blah, inet_ntoa(ia));&lt;br /&gt;
    else strcpy(blah, hp-&amp;gt;h_name);&lt;br /&gt;
 &lt;br /&gt;
    return (blah);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int promisc(u_char *ifname, ushort set) {&lt;br /&gt;
    struct ifreq ifr;&lt;br /&gt;
&lt;br /&gt;
    memset(&amp;amp;ifr, 0, sizeof(ifr));&lt;br /&gt;
    strcpy(ifr.ifr_name, ifname);&lt;br /&gt;
    if (ioctl(sd, SIOCGIFFLAGS, &amp;amp;ifr) &amp;lt; 0)&lt;br /&gt;
  return -1;&lt;br /&gt;
    &lt;br /&gt;
    if (set) {&lt;br /&gt;
  ifr.ifr_flags |= IFF_PROMISC;&lt;br /&gt;
     if (ioctl(sd, SIOCSIFFLAGS, &amp;amp;ifr) &amp;lt; 0)&lt;br /&gt;
         return -1;&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
 ifr.ifr_flags &amp;amp;= ~IFF_PROMISC;&lt;br /&gt;
        if (ioctl(sd, SIOCSIFFLAGS, &amp;amp;ifr) &amp;lt; 0)&lt;br /&gt;
         return -1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void die() {&lt;br /&gt;
    fprintf(stdout, "(%d packets read)\n", count);&lt;br /&gt;
    if (promisc(dev, 0) &amp;lt; 0)&lt;br /&gt;
    fprintf(stderr, "knu: error, can't left promisc mode.\n");&lt;br /&gt;
    else&lt;br /&gt;
  fprintf(stderr, "knu: %s left promiscuous mode.\n", dev);&lt;br /&gt;
    close(sd);&lt;br /&gt;
    exit(0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
char *nat_detect(ulong src, ushort ttl) {&lt;br /&gt;
    u_int i, tmp;&lt;br /&gt;
    &lt;br /&gt;
    for (i=0;i&amp;lt;=cpos;i++) {&lt;br /&gt;
  if (masq.ip[i] == src) {&lt;br /&gt;
      tmp = masq.ttl[i] - ttl;&lt;br /&gt;
          if (tmp &amp;lt; 0)&lt;br /&gt;
               tmp = ttl - masq.ttl[i];&lt;br /&gt;
      if (tmp &amp;gt; 0 &amp;amp;&amp;amp; tmp &amp;lt;= 3)&lt;br /&gt;
                return " (NAT)";&lt;br /&gt;
      else if (!tmp)&lt;br /&gt;
                return "";&lt;br /&gt;
            else if (tmp &amp;gt;= 4)&lt;br /&gt;
         return "";&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    if ((cpos++) == 100)&lt;br /&gt;
      cpos = 0;&lt;br /&gt;
&lt;br /&gt;
    masq.ttl[cpos] = ttl;&lt;br /&gt;
    masq.ip[cpos] = src;&lt;br /&gt;
    return "";&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int printhdr(u_char* packet) {&lt;br /&gt;
    struct iphdr *ip;&lt;br /&gt;
    struct tcphdr *tcp;&lt;br /&gt;
    u_int hops;&lt;br /&gt;
    &lt;br /&gt;
    ip = (struct iphdr *)packet;&lt;br /&gt;
    tcp = (struct tcphdr *)(packet + IPHDRSIZE);&lt;br /&gt;
    &lt;br /&gt;
    if (syn_mode &amp;amp;&amp;amp; !tcp-&amp;gt;syn)&lt;br /&gt;
     return 0;&lt;br /&gt;
    &lt;br /&gt;
    printdate();&lt;br /&gt;
    &lt;br /&gt;
    ia.s_addr = ip-&amp;gt;saddr;&lt;br /&gt;
    fprintf(stdout, " %s:%d -&amp;gt; ", (resolve == 1) ? &lt;br /&gt;
    ip2host(ip-&amp;gt;saddr) : inet_ntoa(ia), ntohs(tcp-&amp;gt;source));&lt;br /&gt;
    &lt;br /&gt;
    ia.s_addr = ip-&amp;gt;daddr;&lt;br /&gt;
    fprintf(stdout, "%s:%d", (resolve == 1) ?&lt;br /&gt;
    ip2host(ip-&amp;gt;daddr) : inet_ntoa(ia), ntohs(tcp-&amp;gt;dest));&lt;br /&gt;
    &lt;br /&gt;
    if (ip-&amp;gt;ttl &amp;lt;= 32)&lt;br /&gt;
      hops = 32 - ip-&amp;gt;ttl;&lt;br /&gt;
    else if (ip-&amp;gt;ttl &amp;gt; 32 &amp;amp;&amp;amp; ip-&amp;gt;ttl &amp;lt;= 64)&lt;br /&gt;
      hops = 64 - ip-&amp;gt;ttl;&lt;br /&gt;
    else if (ip-&amp;gt;ttl &amp;gt; 64 &amp;amp;&amp;amp; ip-&amp;gt;ttl &amp;lt;= 128)&lt;br /&gt;
     hops = 128 - ip-&amp;gt;ttl;&lt;br /&gt;
    else if (ip-&amp;gt;ttl &amp;gt; 128 &amp;amp;&amp;amp; ip-&amp;gt;ttl &amp;lt;= 255)&lt;br /&gt;
   hops = 255 - ip-&amp;gt;ttl;&lt;br /&gt;
        &lt;br /&gt;
    /* NAT */&lt;br /&gt;
    if (ip-&amp;gt;saddr != ip-&amp;gt;daddr || !tcp-&amp;gt;window)&lt;br /&gt;
   printf("%s", nat_detect(htonl(ip-&amp;gt;saddr), hops));&lt;br /&gt;
    &lt;br /&gt;
    /* XMAS, NULL scanning detect */&lt;br /&gt;
    if (tcp-&amp;gt;urg &amp;amp;&amp;amp; tcp-&amp;gt;psh &amp;amp;&amp;amp; tcp-&amp;gt;fin)&lt;br /&gt;
  fprintf(stdout, " (XMAS scan)\n");&lt;br /&gt;
    else if (!tcp-&amp;gt;ack &amp;amp;&amp;amp; !tcp-&amp;gt;urg &amp;amp;&amp;amp; !tcp-&amp;gt;psh &amp;amp;&amp;amp; !tcp-&amp;gt;fin &amp;amp;&amp;amp; !tcp-&amp;gt;syn &amp;amp;&amp;amp; !tcp-&amp;gt;rst)&lt;br /&gt;
        fprintf(stdout, " (NULL scan)\n");&lt;br /&gt;
    else&lt;br /&gt;
  putchar('\n');&lt;br /&gt;
    &lt;br /&gt;
    /* tcp flags */&lt;br /&gt;
    fprintf(stdout, "\t%c%c%c%c%c%c",&lt;br /&gt;
    (tcp-&amp;gt;urg == 1) ? 'U' : '.',&lt;br /&gt;
    (tcp-&amp;gt;fin == 1) ? 'F' : '.', &lt;br /&gt;
    (tcp-&amp;gt;ack == 1) ? 'A' : '.', &lt;br /&gt;
    (tcp-&amp;gt;psh == 1) ? 'P' : '.', &lt;br /&gt;
    (tcp-&amp;gt;rst == 1) ? 'R' : '.', &lt;br /&gt;
    (tcp-&amp;gt;syn == 1) ? 'S' : '.');&lt;br /&gt;
    &lt;br /&gt;
    /* ttl, win, id .. */&lt;br /&gt;
    fprintf(stdout, " (ttl %d, id %d, win %d, len %d)", ip-&amp;gt;ttl, ntohs(ip-&amp;gt;id), &lt;br /&gt;
    ntohs(tcp-&amp;gt;window), ntohs(ip-&amp;gt;tot_len));&lt;br /&gt;
    &lt;br /&gt;
    /* fragment bit */&lt;br /&gt;
    if (htons(ip-&amp;gt;frag_off) == IP_DF)&lt;br /&gt;
  fprintf(stdout, " (DF)");&lt;br /&gt;
    &lt;br /&gt;
    /* show the distance betwen dst and src host */&lt;br /&gt;
    fprintf(stdout, " distance: %d hops", hops);&lt;br /&gt;
&lt;br /&gt;
    putchar('\n');&lt;br /&gt;
        &lt;br /&gt;
    /* packet dump ? */&lt;br /&gt;
    if (pdump)&lt;br /&gt;
   packetdump(packet, htons(ip-&amp;gt;tot_len));&lt;br /&gt;
    &lt;br /&gt;
    ++count;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void printdate(void) {&lt;br /&gt;
    u_char *buff;&lt;br /&gt;
    time_t now = time(NULL);&lt;br /&gt;
    &lt;br /&gt;
    buff = ctime((const time_t *)&amp;amp;now);&lt;br /&gt;
    buff[strlen(buff)-1] = '\0';&lt;br /&gt;
    fprintf(stdout, "&amp;lt;%s&amp;gt;", buff);&lt;br /&gt;
}&lt;br /&gt;
&lt;/pre&gt;
</description>
      <pubDate>Mon, 01 Oct 2007 18:43:28 +0900</pubDate>
      <link>http://adioshun.springnote.com/pages/505646</link>
      <guid>http://adioshun.springnote.com/pages/505646</guid>
    </item>
    <item>
      <title>[&#49464;&#48120;&#45208;] KIDS</title>
      <description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&#44060;&#50836;&lt;sup class="tocAnchorContainer"&gt;&lt;a  href="#toc_2" class="anchor" title="toc_2" id="toc_2"&gt;#&lt;/a&gt;&lt;/sup&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;p&gt;&lt;strong&gt;&#47532;&#45573;&#49828; &#45348;&#53944;&#50892;&#53356; &#50500;&#53412;&#53581;&#52432;&#45208; &#47532;&#45573;&#49828; &#52964;&#45328;&#51032; &#46041;&#51201;&#51004;&#47196; &#54869;&#51109; &#44032;&#45733;&#54620; &#44592;&#45733;&#46308;&#51012; &#49332;&#54196; &#48372;&#44192;&#45796; .&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&#46041;&#51201; &#54869;&#51109; &#44032;&#45733;&#54620; &#44592;&#45733;&#50640; &#45824;&#54620; &#51068;&#48152;&#51201; &#51217;&#44540;&lt;/li&gt;
&lt;li&gt;KIDS&#47484;&amp;nbsp; &#49324;&#50857;&#54616;&#50668; &#50612;&#46523;&#44172; &#54869;&#51109; &#44032;&#45733; &#44592;&#45733;&#46308;&#51012; &#44288;&#47532; &#54616;&#45716;&#51648; &#50616;&#44553;&lt;/li&gt;
&lt;li&gt;KIDS &#44396;&#49457; &#50836;&#49548;&#46308;&#51060; embedded&#46104;&#50632;&#45716;&#51648; &#50616;&#44553;&lt;/li&gt;
&lt;li&gt;&#52880;&#47533;&#53552; &#44592;&#48152; &#51109;&#48708;&#46308;&#51012; &#49324;&#50857;&#54616;&#50857;&#54616;&#50668; KIDS &#49884;&#49828;&#53596;&#51012; &#49444;&#51221;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;1. Managing Dynamically extendable function&lt;sup class="tocAnchorContainer"&gt;&lt;a  href="#toc_3" class="anchor" title="toc_3" id="toc_3"&gt;#&lt;/a&gt;&lt;/sup&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&#47532;&#45573;&#49828; &#45348;&#53944;&#50892;&#53356; &#50500;&#53412;&#53581;&#52432;&#45716; &#47588;&#49692;&#44036; &#48320;&#54868; &amp;amp; &#48156;&#51204; &#51473;&#51060;&#45796;.&lt;/li&gt;
&lt;li&gt;&#45824;&#48512;&#48516; &#44221;&#50864; &#51060;&#47088; &#54869;&#51109;&#51008; &#46041;&#51201;(Runtime)&#51004;&#47196;&#46020; &#48156;&#49373;&#54620;&#45796;.&lt;/li&gt;
&lt;li&gt;ex)&amp;nbsp; &#45348;&#53944;&#50892;&#53356;&amp;nbsp; &#47112;&#51060;&#50612;, &#51204;&#49569; &#47112;&#51060;&#50612;, &#54056;&#53431; &#54596;&#53552;&lt;/li&gt;
&lt;li&gt;&#51060;&#47088; &#54869;&#51109;&#51012; &#44288;&#47532; &#54616;&#44592; &#50948;&#54644;&#49436; &#50864;&#47532;&#50640;&#44172; &#54596;&#50836;&#54620;&#44163;&#51008; &#51201;&#50857;&#46108; &#44592;&#45733;&#46308;&#51012; &#44048;&#49884;&#54624; &#51201;&#51208;&#54620; &#51064;&#53552;&#54168;&#51060;&#49828;&#50752; &#44396;&#51312;&#52404;&#51060;&#45796;.&lt;/li&gt;
&lt;li&gt;&#50500;&#47000;&#51032; &#54632;&#49688;&#46308;&#51008; &#49352; &#44592;&#45733;&#46308;&#51012; &#52964;&#45328;&#50640; &#46321;&#47197;&#54624;&#46412; &#46041;&#51089;&#51473;&#51064; &#44592;&#45733;&#46308;&#51012; &#51228;&#44144; &#54624;&#46412; &#49324;&#50857;&#46108;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style="margin-left: 1em;"&gt;
&lt;li&gt;register_functionality() : &#49352; &#44592;&#45733;&#51012; &#52628;&#44032;&lt;/li&gt;
&lt;li&gt;unregister functionlity() : &#44592;&#51316; &#44592;&#45733; &#48764;&#44592;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="margin-left: 4em;"&gt;&#50948; &#54632;&#49688; &#49892;&#54665;&#49884; &#52488;&#44592;&#54868; &#44284;&#51221;&#48143; clean up&#45800;&#44228; &#54596;&#50836;&lt;/p&gt;
&lt;p style="margin-left: 4em;"&gt;ex) &#54644;&#45817; &#44592;&#45733;&#51012; &#45796;&#47480; &#44275;&#50640;&#49436; &#49324;&#50857;&#51473;&#51064;&#51648; &#54869;&#51064;(Reference count == 0)&#54980; unregistering&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=""&gt;&lt;strong&gt;&#46321;&#47197; &#51089;&#50629; &#49692;&#49436;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;&#52628;&#44032;&#54624; &#49352;&#47196;&#50868; &#44592;&#45733;&#51032; &#44288;&#47532; &#44396;&#51312;&#52404;&#47484; &#47532;&#49828;&#53944;, &#54644;&#49772;&#53580;&#51060;&#48660; &#46608;&#45716; &#45796;&#47480; &#44288;&#47532; &#44396;&#51312;&#52404;&#50640; &#51200;&#51109;&#54616;&#44592;&lt;/li&gt;
&lt;li&gt;&#51060;&#47088; &#44288;&#47532; &#44396;&#51312;&#52404; &#51200;&#51109;&#50640; &#54596;&#50836;&#47196; &#54616;&#45716; &#47700;&#47784;&#47532; &#44277;&#44036; &#50696;&#50557; &#54616;&#44144;&#45208; &#54596;&#50836;&#54620; &#45796;&#47480; &#51088;&#50896;&#51012; &#54840;&#52636;&#54620;&#45796;.&lt;/li&gt;
&lt;li&gt;Reference Counter&#44050;&#51012; &#51613;&#44032; &#49884;&#53416;&#45796;.&lt;/li&gt;
&lt;li&gt;Proc &#46356;&#47113;&#53664;&#47532;&#50640; &#50644;&#53944;&#47532;&#47484; &#49373;&#49457;&#54620;&#45796;&lt;/li&gt;
&lt;li&gt;&#49345;&#53468; &#47700;&#49884;&#51648;&#47484; &#52636;&#47141;&#54616;&#44592; &#50948;&#54616;&#50668; printk()&#47484; &#49324;&#50857;&#54620;&#45796;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=""&gt;&lt;/p&gt;
&lt;p style="margin-left: 1em;"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&#49352; &#44592;&#45733; &#52628;&#44032;&#49884; &#47566;&#51008; &#49444;&#51221; &#51221;&#48372;&#44032; &#54596;&#50836;&#54616;&#45796;..&#51060;&#46308;&#51012; &#47784;&#46160;&#47484; &#54028;&#46972;&#48120;&#53552;&#47196; &#45336;&#44592;&#44592;&#50640;&#45716; &#47924;&#47532;&#44032; &#51080;&#51004;&#48064;&#47196; [&#44288;&#47532; &#44396;&#51312;&#52404;]&#47484; &#49373;&#49457;&#54980; &#49324;&#50857;&#54620;&#45796;.
&lt;ul&gt;
&lt;li&gt;&#51060;&#47084;&#54620; &#44288;&#47532; &#44396;&#51312;&#52404;&#47484; &#51060;&#50857;&#54620; &#51221;&#48372; &#45336;&#44592;&#44592; &#48169;&#49885;&#51012; &#49324;&#50857;&#54616;&#47732; &#46321;&#47197;&#54980;&#50640; &#54644;&#45817; &#44592;&#45733;&#44284; &#54028;&#46972;&#48120;&#53552;&#50640; &#51217;&#44540;&#54624;&#49688; &#51080;&#45796;.&lt;/li&gt;
&lt;li&gt;&#44288;&#47532; &#44396;&#51312;&#52404; : &#47112;&#51648;&#49828;&#53552;&#47553;&#49884; &#54596;&#50836;&#54620; &#54028;&#46972;&#48120;&#53552; &#51200;&#51109; (ex: net_device, packet_type)&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&#51200;&#51109;&#54980; &#54252;&#51064;&#53552;&#47484; registeration &#54632;&#49688;&#50640;&#44172; &#51204;&#45804;&lt;/li&gt;
&lt;li&gt;&#44288;&#47532; &#44396;&#51312;&#52404;&#51032; &#50836;&#49548;&#46308;&#51008; &#51089;&#50629;&#50640; &#46384;&#46972; &#53356;&#44172; 2&#44060;&#47196; &#44396;&#48516;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&#49444;&#51221; &#45936;&#51060;&#53552; : &#44592;&#45733; &#52628;&#44032; &#51204;&#50640; &#51221;&#54644; &#51648;&#44256; &#45212;&#54980; &#44288;&#47532; &#44396;&#51312;&#52404;&#47196; &#51204;&#45804;&lt;/li&gt;
&lt;li&gt;Runtime variables : &#44592;&#45733; &#52628;&#44032; &#51204;&#50640;&#45716; &#51221;&#54644;&#51648;&#51648; &#50506;&#51020; , &#44592;&#45733; &#49324;&#50857;&#51473;&#50640; &#50836;&#52397;&#54632;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;2. Structure of the KIDS construction system&lt;sup class="tocAnchorContainer"&gt;&lt;a  href="#toc_5" class="anchor" title="toc_5" id="toc_5"&gt;#&lt;/a&gt;&lt;/sup&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&#51060;&#51109;&#50640;&#49436;&#45716; KIDS&#54532;&#47112;&#51076; &#50892;&#53356;&#44032; &#50612;&#46523;&#44172; &#47532;&#45573;&#49828;&#50640; &#44396;&#54788;&#46104;&#45716;&#51648; &#49332;&#54196; &#48372;&#44192;&#45796;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;KIDS &#45716; &lt;span class="docEmphasis"&gt;Karlsruhe Implementation architecture of Differentiated Services&lt;/span&gt;&#51032; &#50557;&#50612;&#51060;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&#44396;&#49457; &#50836;&#49548;&#46308;&#51008; Object-Oriented Concept&#51032; &#53945;&#49457;&#51012; &#44032;&#51652;&#45796;&lt;/li&gt;
&lt;li&gt;QoS &#47700;&#52964;&#45768;&#51608;&#51012; &#45348;&#53944;&#50892;&#53356; &#49345;&#50640;&#49436; &#46356;&#51088;&#51064;, &#54217;&#44032;, &#49324;&#50857;&#51012; &#47785;&#51201;&#51004;&#47196; &#44228;&#48156;&lt;/li&gt;
&lt;li&gt;KIDS&#45716; QoS &#47700;&#52964;&#45768;&#51608;&#51032; &#44396;&#51312;&#48143; &#49345;&#54840; &#50672;&#46041;&#49457;&#51012; &#49444;&#47749;&#54620; &#52629;&#50557; &#47784;&#45944;&#51060;&#45796;.&lt;/li&gt;
&lt;li&gt;&#46608;&#54620; &#50668;&#47084; QoS &#51221;&#52293;(Behavior)&#51012; &#46021;&#47549;&#51201;&#51004;&#47196; &#51221;&#51032; &#54624;&#49688;&#46020; &#51080;&#44172; &#54620;&#45796;.&lt;/li&gt;
&lt;li&gt;&#50668;&#47084; &#54540;&#47019;&#54268;&#50640; &#51201;&#50857; &#44032;&#45733; (Unix, OMNET++ &#49884;&#48044;&#47112;&#51060;&#49496; &#53812;)&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;q&gt;&#50948;&#51032; &#53945;&#51669;&#46308;&#47196; &#51064;&#54616;&#50668; &#51060;&#48120; &#44060;&#48156;&#46108; &#47566;&#51008; QoS &#44592;&#49696;&#46308;&#44284;&#51032; &#52264;&#51060;&#51216;&#51012; &#51648;&#45772;&#45796;.&lt;/q&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h6&gt;2.1 Elementary QoS Components&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;KIDS&#45716; &#44060;&#48324;&#51201;&#51064; QoS&#47700;&#52964;&#45768;&#51608;&#50640; &#44396;&#54788; &#44032;&#45733;&#54620; &#54532;&#47112;&#51076; &#50892;&#53356; &#49373;&#49457;&#49884; &#50976;&#50672;&#49457;, &#54869;&#51109;&#49457;, &#47784;&#46280;&#54868; &#44032;&#45733;&#54616;&#46020;&#47197; &#46356;&#51088;&#51064; &#46104;&#50632;&#45796;.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&#51060;&#45716; QoS &#47700;&#52964;&#45768;&#51608;&#50640; &#51201;&#50857;&#46104;&#45716; &#52968;&#54252;&#47676;&#53944;&#46308;&#51032; &#49324;&#50857;&#50640; &#45804;&#47140; &#51080;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&#52968;&#54252;&#45324;&#53944;&#46308;&#51032; &#49552;&#49772;&#50868; &#51312;&#54633;&#44284; ensuring all potential degrees of freedom &#51060; KIDS&#51032; KIDS &#46356;&#51088;&#51064;&#51032; &#44032;&#51109; &#51473;&#50836;&#54620; &#50836;&#49548;&#51060;&#45796;.&lt;/li&gt;
&lt;li&gt;KIDS&#45716; &#51068;&#51333;&#51032; &#47112;&#44256; &#51109;&#45224;&#44048;&#44284; &#48708;&#49847;&#54616;&#45796;.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&#51060;&#46412; &#51109;&#45212;&#44048; &#48660;&#47197;&#51008; &#49436;&#47196; &#45796;&#47480; &#51064;&#53552;&#54168;&#51060;&#49828;&#47484; &#44032;&#51652; &#52968;&#54252;&#45324;&#53944;&#46972;&#44256; &#48380;&#49688; &#51080;&#45796;.&lt;/li&gt;
&lt;li&gt;&#44057;&#51008; &#51064;&#53552;&#54168;&#51060;&#49828;&#47484; &#44032;&#51652; &#52968;&#54252;&#45324;&#53944;&#46308;&#51008; &#49436;&#47196; &#50672;&#44208;&#46104;&#50612; QoS&#47700;&#53552;&#45768;&#51608;&#51012; &#49373;&#49457; &#54624;&#49688; &#51080;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;&lt;strong&gt;&#46160; &#51333;&#47448;&#51032; &#52968;&#54252;&#45324;&#53944;&#46308; (&#51064;&#53552;&#54168;&#51060;&#49828;&#44592;&#51456; )&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Packet interface (&#45348;&#47784;): &#52980;&#54252;&#45324;&#53944;&#45716; &#54056;&#53431; &#50500;&#50883;&#54411; X(&#51064;&#53552;&#54168;&#51060;&#49828;)&#47484;&amp;nbsp;&#48155;&#51008; &#47700;&#49884;&#51648;&#47484; &#45796;&#47480; &#52968;&#54252;&#45324;&#53944;&#50640;&#44172; &#51204;&#45804;&#49884; &#49324;&#50857;&#46108;&#45796;. &#54200;&#51032;&#49345; KIDS &#52968;&#54252;&#45324;&#53944;&#45716; &#54616;&#45208;&#51032; &#51064;&#54411;&#47564;&#51012; &#44032;&#51648;&#44256; &#51080;&#45796;.&lt;/p&gt;
&lt;p&gt;message interface (&#46041;&#44544;):&amp;nbsp; &#52980;&#54252;&#45324;&#53944;&#45716; &#47700;&#49884;&#51648; &#50500;&#50883;&#54411; X(&#51064;&#53552;&#54168;&#51060;&#49828;)&#47484; &lt;span style="color: rgb(142, 142, 142);"&gt;&#45208;&#51473;&#51032; &#54056;&#53431;&#51012; &#50836;&#52397;&#49884;&lt;/span&gt; &#47700;&#49884;&#51648;&#47484; &#45796;&#47480; &#52968;&#54252;&#45324;&#53944;&#50640;&#44172; &#51204;&#45804;&#49884; &#49324;&#50857;&#54616;&#45796;.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&#50948; &#51473; &#51333;&#47448;&#51032; &#51064;&#53552;&#54168;&#51060;&#49828; &#53440;&#51077;&#51012; &#51060;&#50857;&#54616;&#50668;&#49436; 5&#44060;&#51032; &#52968;&#54252;&#45324;&#53944; &#53364;&#47000;&#49828;&#47484; &#45208;&#45580;&#49688; &#51080;&#45796;. (QoS &#47700;&#52964;&#45768;&#51608;&#51008; &#51060;&#47088; &#53364;&#47000;&#49828;&#51032; &#51312;&#54633;&#51004;&#47196; &#51060;&#47336;&#50612; &#51652;&#45796;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Operative components(BHVR) : &#54056;&#53431; &#49345;&#50640;&#49436; &#46041;&#51089; &#54620;&#45796;. &#54056;&#53431; &#49688;&#49888;&#54980; &#51221;&#54644;&#51652; &#50508;&#44256;&#47532;&#51608;&#51012; &#54056;&#53431;&#50640; &#51201;&#50857;&#49884;&#53416;&#45796;.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class="docEmphasis"&gt;Examples:&lt;/span&gt; Token Bucket, Shaper, Marker, Dropper, Classifier, Random Early Detection (RED)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Queue Components(QUEUE) : &#52980;&#54252;&#45324;&#53944;&#44032; &#54056;&#53431;&#51012; &#53328;&#50640; &#45347;&#44144;&#45208; &#48772;&#46412; &#49324;&#50857;&#46104;&#45716; &#45936;&#51060;&#53552; &#44396;&#51312;&#52404;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class="docEmphasis"&gt;Examples:&lt;/span&gt; FIFO Queue, Earliest-Deadline-First-Queue&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enqueuing Components (ENQ_BHVR) : &#51452;&#50612;&#51652; &#48169;&#48277;&#50640; &#46384;&#46972; &#54056;&#53431;&#51012; &#53328;&#50640; &#45347;&#45716;&#45796;.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class="docEmphasis"&gt;Examples:&lt;/span&gt; Head-Enqueue, Tail-Enqueue, EDF-Enqueue.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class="docEmphasis"&gt;Dequeuing components&lt;/span&gt; (DEQ_BHVR) : &#51452;&#50612;&#51652; &#48169;&#48277;&#50640; &#46384;&#46972; &#54056;&#53431;&#51012; &#53328;&#50640;&#49436; &#48764;&#45240;&#45796;. &#51060;&#46412; dequeue &#50836;&#52397;&#51008; &#47700;&#49884;&#51648; input&#51012; &#53685;&#54644; &#49688;&#49888;&#54980;, &#50836;&#52397;&#51060; &#51201;&#51208;&#54616;&#45796;&#47732; &#54056;&#53431;&#51008; &#54056;&#53431; output&#51012; &#53685;&#54644; &#51060;&#46041;&#54616;&#45208;.
&lt;ul&gt;
&lt;li&gt;&lt;span class="docEmphasis"&gt;Examples:&lt;/span&gt; Head-Dequeue, Tail-Dequeue&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class="docEmphasis"&gt;Strategic components&lt;/span&gt; (DEQ_DISC) : &#53328;&#50752; &#50976;&#50672;&#54616;&#44172; &#50672;&#46041;&#46112;&#49688; &#51080;&#45716; &#51221;&#52293;(Strategic)&#51012; &#44396;&#54788;&#54616;&#45796;.
&lt;ul&gt;
&lt;li&gt;&lt;span class="docEmphasis"&gt;Examples:&lt;/span&gt; Priority Queuing, Weighted Fair Queuing, Round Robin.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img class="attachment" title="22fig02.gif" src="/pages/395698/attachments/169954" alt="22fig02.gif" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;lt;Figure 22-2. Five different KIDS component classes.&amp;gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h6&gt;2.2 Hooks&lt;/h6&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;3. Using the KIDS example to extend the linux network architecture&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&#51060;&#51204;&#51109;&#50640;&#49436;&#45716; KIDS &#54532;&#47112;&#51076;&#50892;&#53356;&#51032; &#44396;&#49457;&#50640; &#45824;&#54616;&#50668; &#49444;&#47749; &#54616;&#50688;&#45796;.&lt;/li&gt;
&lt;li&gt;&#51060;&#48264;&#51109;&#50640;&#49436;&#45716; KIDS&#47484; &#47532;&#45573;&#49828; &#52964;&#45328;&#50640; &#44396;&#54788;&#54632;&#51004;&#47196;&#50024; &#50612;&#46523;&#44172; &#44592;&#45733; &#54869;&#51109;&#51060; &#44032;&#45733;&#54620;&#51648;&#47484; &#50696;&#49884; &#49340;&#50500; &#49444;&#47749; &#54616;&#46020;&#47197; &#54616;&#44192;&#45796;. (&#53945;&#55176;, &#52980;&#54252;&#45324;&#53944;&#51032; &#46356;&#51088;&#51064;&#48143;&amp;nbsp; &#44288;&#47532;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&#52968;&#54252;&#45324;&#53944;&#47484; &#50612;&#46523;&#44172; &#46356;&#51088;&#51064; &#54616;&#45716;&#44032;?&lt;/li&gt;
&lt;li&gt;&#52968;&#54252;&#45324;&#53944;&#47484; &#50780; &#46356;&#51088;&#51064; &#54616;&#45716;&#44032;?&lt;/li&gt;
&lt;li&gt;&#52968;&#54252;&#45324;&#53944;&#47484; Runtime&#49884;&#51216;&#50640; &#50612;&#46523;&#44172; &#52964;&#45328;&#50640;&#44172; &#50672;&#44208;(Introduce) &#49884;&#53412;&#45716;&#44032;?&lt;/li&gt;
&lt;li&gt;Hook&#47484; &#49436;&#47196;&#45796;&#47480; &#52964;&#45328; &#51064;&#53552;&#54168;&#51060;&#49828;&#50640;&#44172; &#44396;&#54788;&#54616;&#45716;&#44032;?&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&#51060; &#47568;&#51008; &#52964;&#45328;&#51012; &#48148;&#44984;&#51648; &#50506;&#44256;&#46020; KIDS&#47484; &#52628;&#44032; &#54624;&#49688; &#51080;&#45796;&#45716; &#44163;&#51060;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h6&gt;3.1 Conponents and Their instances&lt;sup class="tocAnchorContainer"&gt;&lt;a  href="#toc_6" class="anchor" title="toc_6" id="toc_6"&gt;#&lt;/a&gt;&lt;/sup&gt;&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;KIDS&#51032; Conponent concept&#49345; &#46160; &#48516;&#47448;&#47196; &#44396;&#49457;&#46104;&#50612; &#51080;&#45796;.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Components&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&#53945;&#48324; &#47785;&#51201;(Behavoir)&#47484; &#54616;&#45716; QoS&#47700;&#52964;&#45768;&#51608;&lt;/li&gt;
&lt;li&gt;Linux KIDS&#51032; bhvr_type &#44396;&#51312;&#52404;&#51032; &#44288;&#47532;&#47484; &#48155;&#51020; (&#51060; &#44396;&#51312;&#52404; &#50504;&#50640;&#45716; &#52980;&#54252;&#45324;&#53944;&#51032; &#47784;&#46304; &#49549;&#49457;&#51060; &#46308;&#50612; &#51080;&#51020;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Component instances&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&#52980;&#54252;&#45324;&#53944;&#51032; &#51064;&#49828;&#53556;&#49828;&#44032; &#54596;&#50836;&#49884; &#49373;&#49457;&lt;/li&gt;
&lt;li&gt;&#51060;&#46412;&#47928;&#50640; bhvr &#53440;&#51077;&#51032; &#44396;&#51312;&#52404;&#47484; &#49373;&#49457;&#54616;&#50668;&#50556; &#54620;&#45796;. (&#51060; &#44396;&#51312;&#52404; &#50504;&#50640;&#45716;component instance&#51032; &#47784;&#46304; &#49549;&#49457;&#51060; &#46308;&#50612; &#51080;&#51020;)&lt;/li&gt;
&lt;li&gt;Instance&#45716; component&#51032; &#54665;&#46041; &#50577;&#49885;(Behavior)&#47484; &#51200;&#51109;, &#46384;&#46972;&#49436; &#52980;&#54252;&#45324;&#53944;&#51032; bhvr_type&#44396;&#51312;&#52404;&#47484; &#52280;&#51312; &#54616;&#44256;&#51080;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol class="code" style="margin-left: 1em;"&gt;
&lt;li&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;struct bhvr_type&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; char&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name[STRLEN];&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 0, 255);"&gt;//&#52980;&#54252;&#45324;&#53944; &#51060;&#47492; (ex: Token_Bucket)&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; unsigned int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bhvr_class_id;&amp;nbsp; &lt;span style="color: rgb(0, 0, 255);"&gt;//&#52980;&#54252;&#45324;&#53944;&#51032; &#53364;&#47000;&#49828;(ex: BHVR_ID, ENQ_BHVR_ID, DEQ_BHVR_ID, DEQ_DISC_ID, and QUEUE_ID)&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; unsigned long&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private_data_size; &lt;span style="color: rgb(0, 0, 255);"&gt;//&#44033; &#52980;&#54252;&#45324;&#53944; &#51064;&#49828;&#53556;&#49828;&#51032; bhvr &#44396;&#51312;&#52404;&#50640;&#49436; &#49324;&#50857;&#46104;&#45716; private data &#44396;&#51312;&#52404;&#51032; &#53356;&#44592; &#51648;&#51221;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; unsigned int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; instances; &lt;span style="color: rgb(0, 0, 255);"&gt;//&#52980;&#54252;&#45324;&#53944;&#50640;&#49436; &#49373;&#49457;&#46108; &#51064;&#49828;&#53556;&#49828; &#44288;&#47532; (ex : 0&#51068; &#44221;&#50864; &#52980;&#54252;&#45324;&#53944;&#44032; &#52964;&#45328;&#50640;&#49436; &#49325;&#51228; &#46104;&#50632;&#51020;&#51012; &#51032;&#48120;)&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; struct bhvr_type&amp;nbsp; *next; &lt;span style="color: rgb(0, 0, 255);"&gt;// bhvr_type_list&#51032; &#54644;&#45817;&#54616;&#45716; bhvr_type &#44396;&#51312;&#52404;&#47196;&#51032; &#47553;&#53356;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*func) (struct bhvr *, struct sk_buff *); &lt;span style="color: rgb(0, 0, 255);"&gt;//&#52980;&#54252;&#45324;&#53944;&#51032; &#51064;&#49828;&#53556;&#49828;&#50640;&#44172; &#54056;&#53431; &#51204;&#45804;&#49884; &#49892;&#54665; &#46104;&#45716; &#54632;&#49688;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; struct sk_buff*&amp;nbsp;&amp;nbsp; (*deq_func) (struct bhvr *); &lt;span style="color: rgb(0, 0, 255);"&gt;// dequeuing &amp;amp; strategic &#52980;&#54252;&#45324;&#53944;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;nbsp; // &#44396;&#54788;&#46108; &#47700;&#49884;&#51648; &#51064;&#53552;&#54168;&#51060;&#49828;&#50752; &#50672;&#44288;&#49457; &#51648;&#45784;, &#52980;&#54252;&#45324;&#53944;&#51032; &#51064;&#49828;&#53556;&#49828;&#44032; &#54056;&#53431;&#51012; &#50836;&#52397;&#49884; &#54840;&#52636;&#46108;&#45796;.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // &#52980;&#54252;&#45324;&#53944;&#45716; &#46160;&#44060;&#51032; &#54632;&#49688;&#51473; &#54616;&#45208;&#47484; &#44396;&#54788;&#54620;&#45796;.(fucn = &#54056;&#53431; &#51064;&#53552;&#54168;&#51060;&#49828; &#51064;&#54411; &#49548;&#50976;, deq_func= &#47700;&#49884;&#51648; &#51064;&#53552;&#54168;&#51060;&#49828;&#49548;&#50976;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*constructor) (struct bhvr *bhvr, char * data, int flag); &lt;span style="color: rgb(0, 0, 255);"&gt;//bhvr&#51064;&#49828;&#53556;&#49828;&#44032; &#52488;&#44592;&#54868; &#46104;&#44144;&#45208; &#49444;&#51221;&#51060; &#48320;&#44221;&#49884; &#54840;&#52636;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*destructor) (struct bhvr *bhvr); &lt;span style="color: rgb(0, 0, 255);"&gt;//bhvr &#51064;&#49828;&#53556;&#49828; &#49325;&#51228;&#49884; &#54840;&#52636;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; struct bhvr*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*get_bhvr) (struct bhvr *bhvr, char * port); &lt;span style="color: rgb(0, 0, 255);"&gt;//&#52980;&#54252;&#45324;&#53944; &#51064;&#49828;&#53556;&#49828;&#51032; bhvr &#44396;&#51312;&#52404;&#51032; &#51452;&#49548;&#47484; &#50508;&#50500; &#50724;&#44592;&#50948;&#54644; KIDS&#44032; &#54840;&#52636;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*append_bhvr) (struct bhvr *new_bhvr, struct bhvr&amp;nbsp; *old_bhvr, char *port);&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 0, 255);"&gt;// &#50500;&#50883;&#54411;&#51004;&#47196;&#50024; &#54788;&#51116; &#52968;&#54252;&#45324;&#53944; &#51064;&#49828;&#53556;&#49828;(=old_bhvr)&#51012; &#49352; &#52968;&#54252;&#45324;&#53944; &#51064;&#49828;&#53556;&#49828;&#47196; &#50672;&#44208;(=new_bhvr)&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*proc) (struct bhvr *bhvr, char *ptr, int layer); &lt;span style="color: rgb(0, 0, 255);"&gt;//bhvr &#52968;&#54252;&#45324;&#53944; &#51064;&#49828;&#53556;&#49828;&#51032; &#51221;&#48372; &#49373;&#49457;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //&#45824;&#48512;&#48516;&amp;nbsp; proc &#54028;&#51068;&#51032; output&#51060;&#45796;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*get_config) (struct bhvr *bhvr, char *ptr);&amp;nbsp; &lt;span style="color: rgb(0, 0, 255);"&gt;// KIDS &#49444;&#51221;&#49888;&#53581;&#49828;&#50640; &#47582;&#52628;&#50612;&#49436; bhvr &#52968;&#54252;&#45324;&#53944; &#51064;&#49828;&#53556;&#49828;&#51032; &#49444;&#51221; &#51221;&#48372;&#47484; ptr&#48260;&#54140;&#44277;&#44036;&#50640; &#50424;&#46412; &#54840;&#52636;&lt;/span&gt;&lt;br /&gt;
};&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;
&lt;p&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;struct bhvr&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; char&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name[STRLEN];&amp;nbsp; &lt;span style="color: rgb(0, 0, 255);"&gt;//&#54788; &#51064;&#49828;&#53556;&#49828;&#51032; &#51060;&#47492; (ex : tb0, marker1)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; use_counter;&amp;nbsp; &lt;span style="color: rgb(0, 0, 255);"&gt;// &#54788; bhvr &#44396;&#51312;&#52404;&#51032; &#47112;&#54140;&#47088;&#49828; &#54943;&#49688;&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct bhvr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *next_bhvr;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 0, 255);"&gt;// bhvr_list&#50640; &#51080;&#45716; bhvr &#45936;&#51060;&#53552; &#44396;&#51312;&#52404;&#51032; &#47553;&#53356;, &#52980;&#54252;&#45324;&#53944; &#53456;&#49353;&#49884; &#49324;&#50857;&#46120;&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct bhvr_type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *bhvr_type; &amp;nbsp; &lt;span style="color: rgb(0, 0, 255);"&gt;// bhvr_ype &#44396;&#51312;&#52404;&#50640; &#51221;&#51032; &#46104;&#50612; &#51080;&#45716; &#52980;&#54252;&#45324;&#53944; &#51064;&#49828;&#53556;&#49828;&#51032; &#53945;&#51221; &#51089;&#50629;(behavior)&#51032; &#51452;&#49548;&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; char&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bhvr_data[0]; &lt;span style="color: rgb(0, 0, 255);"&gt;// private &#51221;&#48372;&#47484; &#50948;&#54644; &#44277;&#44036; &#54869;&#48372;&#50857; (Place holder)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;};&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h6 style="margin-left: 1em;"&gt;Using the token - Bucjet component as an example for a private data structure&lt;sup class="tocAnchorContainer"&gt;&lt;a  href="#toc_7" class="anchor" title="toc_7" id="toc_7"&gt;#&lt;/a&gt;&lt;/sup&gt;&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;bhvr_data &#44396;&#51312;&#52404;&#51032; private &#51221;&#48372;(bhvr_data)&#47484; &#51200;&#51109;&#54616;&#44256; &#51080;&#45716;&#44148; &#51473;&#50836;&#54616;&#45796;.&lt;/li&gt;
&lt;li&gt;&#53945;&#51221; &#52968;&#54252;&#45324;&#53944; &#51064;&#49828;&#53556;&#49828;&#51032; &#49345;&#53468;&#45208; &#49444;&#51221;&#50640; &#44288;&#47144;&#46108; &#51221;&#48372;&#45716; bhvr &#44396;&#51312;&#52404;&#51032; Private data &#44396;&#51312;&#52404; &#50504;&#50640;&#49436; &#51064;&#49828;&#53556;&#49828; &#44536; &#51088;&#52404;&#47196;&#50024; &#44288;&#47532; &#46108;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&#45796;&#51020;&#51008; Token_Bucket &#52968;&#54252;&#45324;&#53944;&#51032; private data &#44396;&#51312;&#52404;&#47484; &#44032;&#47476;&#53416;&#45796;.&lt;/strong&gt;&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;struct tb_data&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; unsigned int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rate, bucket_size;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; unsigned long&amp;nbsp;&amp;nbsp;&amp;nbsp; token, packets_arvd, packets_in, packets_out;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; CPU_STAMP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; last_arvl, cycles_per_byte;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; struct bhvr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *enough_token_bhvr;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; struct bhvr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *not_enough_token_bhvr;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*enough_token_func) (struct bhvr *, struct sk_buff *);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*not_enough_token_func) (struct bhvr *, struct sk_buff *);&lt;br /&gt;
};&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&#50948;&#51032; Private data &#44396;&#51312;&#52404;&#51032; &#44033; &#48320;&#49688; &#46308;&#51008; &#49464;&#44060;&#51032; &#44536;&#47353;&#51004;&#47196; &#45208;&#45572;&#50612; &#51656;&#49688; &#51080;&#45796;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&#54028;&#46972;&#48120;&#53552; &amp;amp; &#48320;&#49688; : &#52968;&#54252;&#45324;&#53944;&#51032; &#48320;&#49688;&#46308;&#51008; &#52968;&#54252;&#45324;&#53944;&#50640; &#44396;&#54788;&#46108; &#50508;&#44256;&#47532;&#51608;&#50640; &#46384;&#46972; &#44033;&#44033; &#46021;&#47549;&#51201;&#51060;&#45796;. &#51060;&#44163;&#46412;&#47928;&#50640; &#48320;&#49688;&#46308;&#51008; &#52968;&#54252;&#45324;&#53944;&#51032; Private data &#44396;&#51312;&#52404;&#47196; &#44288;&#47532; &#46104;&#50612;&#50556; &#54620;&#45796;.&lt;/li&gt;
&lt;li&gt;Func()&#54632;&#49688;&#45208; deq_func()&#54632;&#49688;&#51032; &#54252;&#51064;&#53552; &#51221;&#48372;(function pointer)&lt;/li&gt;
&lt;li&gt;bhvr_strucuture&#51032; &#51452;&#49548;(reference)&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;Private information&#51008; &#44033; &#52968;&#54252;&#45324;&#53944; output&#50640; &#45824;&#54616;&#50668; (2),(3)&#51032; &#50836;&#49548;&#46308;&#51012; &#44288;&#47532; &#54620;&#45796;. &#44536;&#51060;&#50976;&#45716; &#50500;&#50883;&#54411;&#51032; &#44079;&#49688; &#46608;&#54620; &#44033; &#52968;&#54252;&#45324;&#53944;&#47560;&#45796; &#45796;&#47476;&#44256;, bhvr_type &#44396;&#51312;&#52404;&#50640; &#45347;&#50612;&#49436; &#44288;&#47532; &#54624;&#49688; &#50630;&#44592; &#46412;&#47928;&#51060;&#45796;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h6&gt;3.2 Registering and Managing Components&lt;sup class="tocAnchorContainer"&gt;&lt;a  href="#toc_8" class="anchor" title="toc_8" id="toc_8"&gt;#&lt;/a&gt;&lt;/sup&gt;&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;bhvr_type_list : resistered componenrs &#44288;&#47532;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[&#46321;&#47197; &#51089;&#50629;] : QoS&#47700;&#52964;&#45768;&#51608;&#51012; &#51201;&#50857;&#49884;&#53412;&#44592; &#50948;&#54644; Linux KIDS&#47484; &#49324;&#50857;&#54616;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&#49440;&#54665; &#51089;&#50629; : &#52964;&#45328;&#50640;&#44172; &#50612;&#46500; component&#44032; &#54788;&#51116; &#49324;&#50857; &#44032;&#45733;&#54620;&#51648; &#50508;&#47140; &#51452;&#50612;&#50556; &#54632;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&#51060;&#47484; &#50948;&#54644; Linux KIDS&#45716; bhvr_type_list&#47484; &#50976;&#51648; &#54616;&#50556; &#46321;&#47197;&#46108; &#47784;&#46304; &#52968;&#54252;&#45324;&#53944;&#47484; &#44288;&#47532;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;bhvr_type_list&#45716; vhbr_type &#45936;&#51060;&#53552; &#44396;&#51312;&#52404;&#50640; &#44033;&#44033; &#50672;&#44208; &#46104;&#50612; &#51080;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&#46321;&#47197; &#54632;&#49688; &#54840;&#52636; :&amp;nbsp;register_bhvr_type&#54632;&#49688;&#47484; &#51060;&#50857;&#54616;&#50668;&#49436; bhvr_type&#44396;&#51312;&#52404;&#50640; &#51221;&#51032;&#46104;&#50612; &#51080;&#45716; &#52980;&#54252;&#45324;&#53944;&#46308;&#51012; &#46321;&#47197;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&#51060;&amp;nbsp; &#47568;&#51008; bhvr_type&#44396;&#51312;&#52404;&#44032; bhvr_type_list&#50640; &#46308;&#50612; &#44032;&#44172; &#46104;&#47732;, &#44536;&#46412;&#48512;&#53552; &#54644;&#45817; &#52980;&#54252;&#53556;&#53944;&#47484; &#52964;&#45328;&#51012; &#51064;&#49885;&#54624;&#49688; &#51080;&#44256;, &#49324;&#50857;&#51088;&#45716; &#54644;&#45817; &#52980;&#54252;&#45324;&#53944;&#51032; &#51064;&#49828;&#53556;&#49828;&#47484; &#49373;&#49457;&#54624;&#49688; &#51080;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[&#54644;&#51648; &#51089;&#50629;]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&#54644;&#51648; &#54632;&#49688; &#54840;&#52636; : unregister_bhv_type&#54632;&#49688;&#47484; &#51060;&#50857;&#54616;&#50668;&#49436; &#52980;&#54252;&#45324;&#53944;&#47484; &#47532;&#49828;&#53944;&#50640;&#49436; &#46321;&#47197;&#54644;&#51648;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&#47932;&#47200; &#46321;&#47197; &#54644;&#51648; &#51204;&#50640;&#45716; &#54644;&#45817; &#52980;&#54252;&#45324;&#53944;&#50752; &#44288;&#47144;&#46108; &#51064;&#49828;&#53556;&#49828; &#46308;&#51060; &#45224;&#50500; &#51080;&#51004;&#47732; &#50504;&#46108;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="margin-left: 2em;"&gt;
&lt;ul class="noindent"&gt;
&lt;li&gt;Linux KIDS&#45716; &#46041;&#51201;&#51004;&#47196; &#44592;&#45733;&#46308;&#51012; &#46321;&#47197; &#48143; &#54644;&#51648; &#54616;&#44592; &#50948;&#54616;&#50668; &#46160;&#44060;&#51032; &#50836;&#49548;&#46308;&#51012; &#52628;&#44032;&#51201;&#51004;&#47196; &#44032;&#51648;&#44256; &#51080;&#45796;.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;Hooks&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;hook &#44396;&#51312;&#52404;&#50640; &#50948;&#54616;&#50668; &#51221;&#51032; &#46104;&#50612; &#51080;&#45796;.&lt;/li&gt;
&lt;li&gt;&#46321;&#47197; : register_hook()&lt;/li&gt;
&lt;li&gt;&#54644;&#51648; : unregister_hook()&lt;/li&gt;
&lt;li&gt;&#47564;&#50557; &#54532;&#47196;&#53664;&#53084; &#51064;&#49828;&#53556;&#49828;&#44032; hook&#51648;&#50896;&#51012; &#50896;&#54620;&#45796;&#47732; &#51201;&#51208;&#54620; hook &#44396;&#51312;&#52404; &#49373;&#49457;&#54980; hook&#47484; &#46321;&#47197;&#54616;&#44172; &#46108;&#45796;. &#52628;&#44032;&#51201;&#51004;&#47196; &#52968;&#54252;&#45324;&#53944;&#46308;&#51008; &#54644;&#45817; hook&#50640; &#52628;&#44032;&#46104;&#44172; &#46108;&#45796;.&lt;/li&gt;
&lt;li&gt;&#51060;&#54980; &#52968;&#54252;&#45324;&#53944;&#46308;&#51008; &#51060; hook&#47484; &#52280;&#51312; &#54624;&#49688; &#51080;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;queue categories&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;kids_queue_type &#44396;&#51312;&#52404;&#50640; &#51032;&#54616;&#50668; &#44288;&#47532; &#46104;&#50612; &#51652;&#45796;.&lt;/li&gt;
&lt;li&gt;&#46321;&#47197; : register_queue_type()&lt;/li&gt;
&lt;li&gt;&#54644;&#51648; : unregister_queue_type()&lt;/li&gt;
&lt;li&gt;queue variant&#51032; &#51064;&#49828;&#53556;&#49828;&#46308;&#51008; kids_queue&#44396;&#51312;&#52404;&#50640; &#51221;&#51032; &#46104;&#50612; &#51080;&#45796;.&lt;/li&gt;
&lt;li&gt;&#53328; &#44288;&#47532;&#45716; &#52968;&#54252;&#45324;&#53944; &#52852;&#53580;&#44256;&#47532;&#50752; &#44144;&#51032; &#55137;&#49324;&#54616;&#45796;. &#54616;&#51648;&#47564; &#52980;&#54252;&#45324;&#53944;&#50752; &#53328;&#45716; &#45796;&#47480;&#44163;&#51060;&#48064;&#47196; &#49436;&#47196; &#46021;&#47549;&#51201;&#51004;&#47196; &#44288;&#47532; &#46104;&#50612;&#50556; &#54620;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h6&gt;3.3 Managing Component Instances&lt;sup class="tocAnchorContainer"&gt;&lt;a  href="#toc_10" class="anchor" title="toc_10" id="toc_10"&gt;#&lt;/a&gt;&lt;/sup&gt;&lt;/h6&gt;
&lt;p&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;&#48376;&#51109;&#50640;&#49436;&#45716; &#52968;&#54252;&#45324;&#53944;&#51032; &#51064;&#49828;&#53556;&#49828; &#46308;&#51012; &#50612;&#46523;&#44172; &#49373;&#49457;, &#49325;&#51228;, &#47553;&#53433;&#46321;&#51032; &#44288;&#47532;&#47484; &#54616;&#45716;&#51648; &#49332;&#54196; &#48372;&#44192;&#45796;.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;&amp;nbsp;[&#44060;&#50836;]&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&#44032;&#45733;&#54620; &#49789;&#44172; QoS&#47700;&#52964;&#45768;&#51608;&#51012; &#44288;&#47532; &#54616;&#44592; &#50948;&#54616;&#50668; &#48324;&#46020;&#51032; &#49888;&#53469;&#49828;&#44032; &#44060;&#48156; &#46104;&#50632;&#45796;.&lt;/li&gt;
&lt;li&gt;&#52880;&#47533;&#53552; &#44592;&#48152; &#51109;&#48708;(dev/kids)&#51008; &#49444;&#51221; &#47749;&#47161;&#50612;&#46308; Linux KIDS&#50640;&#44172; &#51204;&#45804; &#54624;&#49688; &#51080;&#45796;.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&#51060;&#46468; &#49324;&#50857;&#46104;&#45716; &#54632;&#49688; : create_bhvr(), remove_vhbr(), change_bhvr()&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;&amp;nbsp;create_bhvr(type,name, data, id)&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&#52980;&#54252;&#45324;&#53944;(name)&#51032; &#51064;&#49828;&#53556;&#49828; &#49373;&#49457;&#49884; &#49324;&#50857;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&#54644;&#45817; &#52980;&#54252;&#45324;&#53944;&#45716; bhvr_type_list(&#46321;&#47197;&#46108; &#52980;&#54252;&#45324;&#53944; &#47532;&#49828;&#53944;)&#50640; &#51060;&#48120; &#51316;&#51116; &#54616;&#50668;&#50556; &#54632;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;&#49352; &#52980;&#54252;&#53556;&#46300; &#51064;&#49828;&#53556;&#49828;&#47484; &#50948;&#54620; &#47700;&#47784;&#47532; &#44277;&#44036;&#51060; &#50696;&#50557;&#46120; (&#47700;&#47784;&#47532; &#44277;&#44036; = bhvr &#44396;&#51312;&#52404;_&#47784;&#46304; &#52980;&#54252;&#45324;&#53944;&#50752; &#46041;&#51068;+private data &#44396;&#51312;&#52404;_&#44033; &#52980;&#54252;&#45324;&#53944;&#47560;&#45796; &#45796;&#47492; )&lt;/li&gt;
&lt;li&gt;bhvr &#44396;&#51312;&#52404; &#52488;&#44592;&#54868;&lt;/li&gt;
&lt;li&gt;&#52980;&#54252;&#45324;&#53944;&#51032; constructor &#54840;&#52636; (private date&#44277;&#44036;&#51012; &#52980;&#54252;&#45324;&#53944;&#51032; &#49444;&#51221; &#54028;&#46972;&#48120;&#53552;&#47196; &#52292;&#50864;&#44592;), &#49444;&#51221; &#54028;&#46972;&#48120;&#53552;&#46308;&#51008; CREATE&#47749;&#47161;&#50612;&#47484; &#53685;&#54644; &#52628;&#52636;&#46108;&#54980; &#45936;&#51060;&#53552; &#52880;&#47533;&#53552; &#49828;&#53944;&#47553;&#51004;&#47196; &#51204;&#45804;&#46108;&#45796;. &#54620;&#48264; &#49373;&#49457;&#46108; &#54980;&#50640;&#45716; &#52980;&#54252;&#53556;&#53944;&#46308;&#51008; &#45796;&#47480; &#52968;&#54252;&#45324;&#53944;&#46308;&#44284; &#50672;&#44208;&#46104;&#51648; &#50506;&#45716;&#45796;.&lt;/li&gt;
&lt;li&gt;bhvr_list&#50640; &#46321;&#47197;&#46108;&#45796;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;remove_bhvr(name, force)&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;name&#50640; &#51221;&#51032;&#46108; &#52980;&#54252;&#45324;&#53944; &#51064;&#49828;&#53552;&#49828;&#47484; &#49325;&#51228; &#54616;&#44256; bhvr_list&#50640;&#49436; &#51228;&#44144; &#54620;&#45796;.&lt;/li&gt;
&lt;li&gt;force&#45716; &#51064;&#49828;&#53556;&#49828;&#51032; user_counter&#44032; &#47924;&#49884; &#46104;&#50612;&#50556; &#54620;&#45796;&#45716; &#51216;&#51012; &#50508;&#47540;&#46412; &#49324;&#50857;&#46108;&#45796;.&lt;/li&gt;
&lt;li&gt;&#45936;&#51060;&#53552; &#44396;&#51312;&#52404;&#44032; release&#46112;&#46412; &#52980;&#54252;&#45324;&#53944;&#51032; destructor&#51060; &#54840;&#52636;&#46104;&#50612; &#51088;&#50896;&#51012; release&#54620;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;change_bhvr(name, data)&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;runtime&#49884;&#51032; &#52980;&#54252;&#45324;&#53944; &#51064;&#49828;&#53556;&#49828;&#51032; private data&#47484; &#48148;&#44984;&#45716;&#45936; &#49324;&#50857;&#46108;&#45796;.&lt;/li&gt;
&lt;li&gt;INIT_BHVR&#54540;&#47000;&#44536;&#44032; &#49444;&#51221;&#51648; &#50506;&#45716;&#45796;&lt;/li&gt;
&lt;li&gt;Constructor&#45716; &#54028;&#46972;&#48120;&#53552;&#50640;&#49436; &#51648;&#51221;&#54620; &#44163;&#46308;&#47564; &#48148;&#44988;&#45796;, &#44536;&#47111;&#51648; &#50506;&#51012;&#44221;&#50864;&#50640;&#45716; &#47784;&#46304; &#51064;&#49828;&#53556;&#49828; &#46308;&#51060; &#52488;&#44592;&#54868; &#46108;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h6&gt;3.4 Implementating Hooks&lt;sup class="tocAnchorContainer"&gt;&lt;a  href="#toc_11" class="anchor" title="toc_11" id="toc_11"&gt;#&lt;/a&gt;&lt;/sup&gt;&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Hooks&#45716; &#44592;&#51316;&#51032; &#54532;&#47196;&#53664;&#53084; &#51064;&#49828;&#53556;&#49828;&#51032; &#54869;&#51109;&#44592;&#45733;&#51004;&#47196;&#50024; &#49324;&#50857;&#51088;&#44032; &#49789;&#44172; KIDS &#54532;&#47112;&#51076; &#50892;&#53356;&#51032; &#44508;&#52825;&#50640; &#44592;&#48152;&#54620; QoS&#52968;&#54252;&#45324;&#53944;&#46308;&#51012; embed&#54624;&#49688; &#51080;&#46020;&#47197; &#54620;&#45796;.&lt;/li&gt;
&lt;li&gt;&#51473;&#50836;&#54620; &#50836;&#49548;&#51473; &#54616;&#45208;&#45716; hook&#47484; &#53685;&#54644; &#54869;&#51109;&#54616;&#44256;&#51088; &#54616;&#45716; &#50948;&#52824; &#49444;&#51221;&#51060;&#45796;.(&#54532;&#47196;&#53664;&#53084; &#51064;&#49828;&#53556;&#49828;&#51032; &#54532;&#47196;&#49464;&#49828; &#50504;&#50640;&#49436;)&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&#44536; &#51060;&#50976;&#45716; &#49324;&#50857;&#51088;&#45716; &#54637;&#49345; &#53945;&#51221; &#50577;&#51032; &#54056;&#53431;&#46308;&#44284; &#53945;&#51221; &#50948;&#52824;&#47484; &#51648;&#51221;&#54616;&#44592; &#46468;&#47928;&#51060;&#45796;.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;ex) IP_FORWARD hook&#51648;&#51216;&#50640;&#49436;&#51032; &#47784;&#46304; &#54056;&#53431; &#54252;&#50892;&#46377; , IP_LOCAL_DELIVER hook&#51648;&#51216;&#50640;&#49436;&#51032; IP&#51064;&#49828;&#53556;&#49828;&#51032; &#47784;&#46304; &#54056;&#53431;&#51008; &#45236;&#48512;(locally)&#47196; &#51204;&#45804;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&#45796;&#47480; &#51064;&#53552;&#54168;&#51060;&#49828;&#47560;&#45796;&#51032; &#49444;&#51221;&#51032; &#51060;&#51216;&#51004;&#47196;&amp;nbsp; &#47532;&#45573;&#49828;&#45348;&#53944;&#50892;&#53356; &#50500;&#53412;&#53581;&#52432;&#45716;&amp;nbsp;&#54532;&#47196;&#53664;&#53084; &#51064;&#49828;&#53556;&#49828;&#47484; &#44592;&#45733;&#50640; &#46384;&#46972; &#54869;&#51109;&#54624;&#49688; &#51080;&#46020;&#47197; &#48169;&#48277;&#51012; &#44592;&#48376;&#51201;&#51004;&#47196; &#51228;&#44277;&#54620;&#45796;.&lt;/li&gt;
&lt;li&gt;&#51060;&#47084;&#54620; &#51064;&#53552;&#54168;&#51060;&#49828;&#46308;&#51008; KIDS&#50640;&#49436;&#46020; &#49324;&#50857;&#46108;&#45796;. &#46384;&#46972;&#49436; &#48324;&#46020;&#51032; &#49548;&#49828;&#53076;&#46300; &#49688;&#51221; &#50630;&#51060;&#46020; &#47532;&#45573;&#49828;&#50640; &#44536;&#45824;&#47196; &#49324;&#50857;&#44032;&#45733;&#54616;&#45796;.&lt;/li&gt;
&lt;li&gt;IP&#51064;&#49828;&#53556;&#49828;&#47484; &#50948;&#54620; hook&#45716; &#45367;&#54596;&#53552; &#51064;&#53552;&#54168;&#51060;&#49828;&#50640; &#44592;&#48152;&#51012; &#46160;&#44256; &#51080;&#45796;.&lt;/li&gt;
&lt;li&gt;Data-link &#44228;&#52789; hook&#45716; &#53944;&#47000;&#54589; &#52968;&#53944;&#47204; &#51064;&#53552;&#54168;&#51060;&#49828;&#50640; &#44592;&#48152;&#51012; &#46160;&#44256; &#51080;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&#52628;&#44032;&#51201;&#51064; hooks&#45716; runtime&#51068;&#46412;&#46972;&#46020; &#49789;&#44172; &#53685;&#54633;&#46112;&#49688;&#51080;&#45796;.&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;hook&#47484; &#53685;&#54633;&#54616;&#44592; &#50948;&#54644;&#49436;&#45716; hook&#45936;&#51060;&#53552; &#44396;&#51312;&#52404;&#50640;&#49436; &#50836;&#44396;&#54616;&#45716; &#44288;&#47144; &#51221;&#48372;&#46308;&#51012; &#51200;&#51109;&lt;/li&gt;
&lt;li&gt;register_hook()&#47484; &#51060;&#50857;&#54616;&#50668;&#49436; &#46321;&#47197; &#54620;&#45796;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&#54869;&#51109;&#54616;&#44256;&#51088; &#54616;&#45716; &#54532;&#47196;&#53664;&#53084; &#51064;&#49828;&#53556;&#49828; &#46308;&#51008; &#54632;&#49688; &#54840;&#52636;&#51012; &#53685;&#54616;&#50668; &#49789;&#44172; &#54869;&#51109; &#44032;&#45733;&#54620;&#45796;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h6&gt;&amp;nbsp;3.5 How a Component works&lt;sup class="tocAnchorContainer"&gt;&lt;a  href="#toc_12" class="anchor" title="toc_12" id="toc_12"&gt;#&lt;/a&gt;&lt;/sup&gt;&lt;/h6&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;&#52964;&#45328;&#50640; &#51068;&#45800; KIDS &#54532;&#47112;&#51076;&#50892;&#53356;&#51032; &#47784;&#46304; &#52980;&#54252;&#45324;&#53944;&#46308;&#51012; &#46321;&#47197;&lt;/li&gt;
&lt;li&gt;&#52968;&#54252;&#45324;&#53944; &#52404;&#51064;&#51012; &#49373;&#49457;&#54980;, &#52968;&#54252;&#45324;&#53944;&#44032; hook&#47484; &#52280;&#51312;&#54616;&#44172; &#54632;&lt;/li&gt;
&lt;li&gt;&#52968;&#54252;&#45324;&#53944;&#46308;&#51012; &#46041;&#51089; &#49884;&#53020;&#50556; &#54616;&#45716;&#51648;&#50640; &#45824;&#54620; &#49444;&#47749;&#51060; &#54596;&#50836; &amp;lt;- &#51060;&#51109;&#51032; &#51452;&#51228;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;token_bucket_func()&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;int token_bucket_func(struct bhvr *tb_bhvr, struct sk_buff *skb)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; struct tb_data&amp;nbsp; *data = (struct tb_data *) &amp;amp;(tb_bhvr-&amp;gt;bhvr_data);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; CPU_STAMP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; now;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; data-&amp;gt;packets_arvd++;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; TAKE_TIME(now);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; /* calcs the tokens, that are produced since the last packet arrival */&lt;br /&gt;
&amp;nbsp;&amp;nbsp; (unsigned long) data-&amp;gt;token += (((unsigned long) (now - data-&amp;gt;last_arvl)) /&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (unsigned long) data-&amp;gt;cycles_per_byte);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; /* check, if the bucket is overflood */&lt;br /&gt;
&amp;nbsp;&amp;nbsp; if (data-&amp;gt;token &amp;gt; data-&amp;gt;bucket_size)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data-&amp;gt;token = data-&amp;gt;bucket_size;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; data-&amp;gt;last_arvl = now;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; /* check, if there are enough tokens to send the packet */&lt;br /&gt;
&amp;nbsp;&amp;nbsp; if (data-&amp;gt;token &amp;lt; skb-&amp;gt;len)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp; /* not enough tokens -&amp;gt; out of profile */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data-&amp;gt;packets_out++;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* forward the packet to the next behavior (out-of-profile) */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((data-&amp;gt;not_enough_token_bhvr) &amp;amp;&amp;amp; (data-&amp;gt;not_enough_token_func))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return data-&amp;gt;not_enough_token_func(data-&amp;gt;not_enough_token_bhvr, skb);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp; /* enough tokens -&amp;gt; in profile */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data-&amp;gt;token -= skb-&amp;gt;len;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data-&amp;gt;packets_in++;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* forward the packet to the next behavior (in-profile) */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((data-&amp;gt;enough_token_bhvr ) &amp;amp;&amp;amp; (data-&amp;gt;enough_token_func))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return data-&amp;gt;enough_token_func(data-&amp;gt;enough_token_bhvr, skb);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp; return KIDS_ACCEPT; /* Do not discard packet, when no behavior is attached */&lt;br /&gt;
}&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img title="22fig06_alt.gif" class="attachment" src="/pages/395698/attachments/175733" alt="22fig06_alt.gif" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Token_Bucket &#52968;&#54252;&#45324;&#53944;&#45716; Operative &#52968;&#54252;&#45324;&#53944; &#53364;&#47000;&#49828;&#50640; &#49549;&#54620;&#45796;.
&lt;ul&gt;
&lt;li&gt;&#51593;,&amp;nbsp;&#54616;&#45208;&#51032; &#54056;&#53431; &#51064;&#54411;&#44284; n&#44060;&#51032; &#54056;&#53431; &#50500;&#50883;&#54411;&#51012; &#44032;&#51648;&#44256; &#51080;&#50612;&#50556; &#54620;&#45796;.
&lt;ul&gt;
&lt;li&gt;ex) 2&#44060;&#51032; &#50500;&#50883;&#54411; : confirm &amp;amp; non_confirm&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Token_Bucket &#52968;&#54252;&#45324;&#53944;&#51032; &#51064;&#49828;&#53556;&#49828;&#44032; &#54056;&#53431;&#51012; &#49688;&#49888;&#54616;&#44172; &#46104;&#47732; &#51060;&#50752; &#50672;&#44288;&#46108; func()&#54648;&#46308;&#47553; &#51208;&#52264;&#44032; &#54840;&#52636;&#46108;&#45796;.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&#50619;&#44172; &#46104;&#45716; &#54028;&#46972;&#48120;&#53552;&#46308;&#47196;&#45716; socket buffer, skb, &#52968;&#54252;&#45324;&#53944; &#51064;&#49828;&#53556;&#49828;&#51032; &#45936;&#51060;&#53552;&#47484; &#44032;&#47476;&#53412;&#45716; &#54252;&#51064;&#53552; &#51221;&#48372;&#46308;&#51060; &#51080;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[ &#49692;&#49436; ]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&#52376;&#51020;&#50640;, &#51064;&#49828;&#53556;&#49828;&#51032; private data&#51032; &#54252;&#51064;&#53552;&#45716; type cast&#47484; &#44032;&#47476;&#53412;&#45716; &#51060; &#54252;&#51064;&#53552; &#50504;&#50640;&#49436;&#47564; &#44032;&#47476;&#53412;&#46020;&#47197; &#46104;&#50612; &#51080;&#45796;.&lt;/li&gt;
&lt;li&gt;&#54632;&#49688;&#44032; &#50756;&#51204;&#55176; reentrant&#46104;&#44256; &#45208;&#47732;, &#51088;&#49888;&#51032; private data&#45208; local &#48320;&#49688;&#50504;&#50640;&#49436;&#47564; &#51089;&#46041;&#54616;&#44172; &#46108;&#45796;.&lt;/li&gt;
&lt;li&gt;&#51060;&#50612;&#49436; token bucket &#50508;&#44256;&#47532;&#51608;&#50640; &#46384;&#46972; &#51068;&#47144;&#51032; &#44228;&#49328; &#51089;&#50629;&#51060; &#49688;&#54665;&#46108;&#45796;.&lt;/li&gt;
&lt;li&gt;&#44536;&#47532;&#44256; &#53685;&#44228; &#48320;&#49688;&#51032; &#51221;&#48372;&#46308;&#51060; &#50629;&#45936;&#51060;&#53944; &#46108;&#45796;.
&lt;ol&gt;
&lt;li&gt;&#51060;&#47084;&#54620; &#44228;&#49328;&#51032; &#44208;&#44284; &#44050;&#51008; &#50500;&#50883;&#54411;&#51012; &#44208;&#47200;&#51667;&#44172; &#46104;&#44256; &#51060; &#44050;&#51012; &#53685;&#54644; socket buffer&#51032; &#54252;&#50892;&#46377;&#49884; &#51060;&#50857;&#46108;&#45796;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&#47564;&#50557; &#54644;&#45817; &#50500;&#50883;&#54411;&#50640; &#50672;&#44288;&#46104;&#45716; &#51064;&#49828;&#53556;&#49828;&#44032; &#50630;&#51012;&#44221;&#50864; &#54632;&#49688;&#45716; KIDS_ACCEPT &#44208;&#44284;&#44050;&#51012; &#48152;&#54872;&#54620;&#45796;.&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&#51060; &#46907;&#51008; &#54056;&#53431;&#51060; hook&#50640;&#44172;&#47196; &#54252;&#50892;&#46377;&#46104;&#50612;&#50556; &#54620;&#45796;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;counterpart&#48512;&#48516;&#51008; KIDS_DROP&#51060;&#45796;.&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&#51060; &#48512;&#48516;&#51008; hook&#50640;&#44172; socket buffer&#51012; &#46300;&#46989;&#49884;&#53412;&#46972;&#44256; &#54620;&#45796;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&#54616;&#51648;&#47564; &#52980;&#54252;&#45324;&#53944; &#51064;&#49828;&#53556;&#49828;&#44032; &#51648;&#51221;&#46108; output(data-&amp;gt; ..._bhvr != NULL)&#51012; &#46384;&#47476;&#44172; &#46108;&#45796;&#47732;
&lt;ol&gt;
&lt;li&gt;&#51064;&#49828;&#53556;&#49828;&#51032; &#54648;&#46308;&#47553; &#51208;&#52264;(data-&amp;gt;..._funv())&#44032; &#54840;&#52636;&#46108;&#45796;.&lt;/li&gt;
&lt;li&gt;&#44536;&#47532;&#44256; &#45208;&#49436; &#51060;&#50612;&#51648;&#45716; &#51064;&#49828;&#53556;&#49828;&#51032; &#45936;&#51060;&#53552;&#50640; &#45824;&#54620; &#54252;&#51064;&#53552;&#44032; &#51060; &#54648;&#46308;&#47084;&#51032; &#47336;&#54004;&#51004;&#47196; &#51204;&#45804; &#46108;&#45796;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&#51060;&#50612;&#51648;&#45716; &#53568;&#54252;&#45324;&#53944; &#51064;&#49828;&#53552;&#49828;&#51032; &#48152;&#54872;&#44050;&#51008; token-bucket &#52968;&#54252;&#45324;&#53944;&#51032; &#48152;&#54872;&#44050;&#51004;&#47196; &#48148;&#47196; &#49324;&#50857;&#46104;&#44172; &#46108;&#45796;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
      <pubDate>Fri, 17 Aug 2007 03:18:25 +0900</pubDate>
      <link>http://adioshun.springnote.com/pages/395698</link>
      <guid>http://adioshun.springnote.com/pages/395698</guid>
    </item>
    <item>
      <title>[&#49464;&#48120;&#45208;] Snort_ Network Intrusion Setection with Snort</title>
      <description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;&#44060;&#50836;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;1998&#45380; &#44060;&#48156; &#51060;&#54980; &#44032;&#51109; &#50976;&#47749;&#54620; NIDS&#53812;&#51060; &#46104;&#50632;&#51020;&lt;/li&gt;
&lt;li&gt;&#51228;&#51089;&#51088; Marty Roesch&#45716; &#44060;&#51064; &#50857;&#46020;&#47196; &#45348;&#53944;&#50892;&#53356; &#53944;&#47000;&#54589; &#48516;&#49437;&#51012; &#47785;&#51201;&#51004;&#47196; &#49828;&#45432;&#53944;&#47484; &#44060;&#48156; &#54616;&#50688;&#45796;.&lt;/li&gt;
&lt;li&gt;&#52488;&#44592; &#49828;&#45432;&#53944;&#45716; &#48148;&#51060;&#45320;&#47532; tcpdump&#45936;&#51060;&#53552;&#47484; &#51064;&#44036;&#51060; &#51069;&#51012;&#49688; &#51080;&#45716; &#54805;&#53468;&#47196; &#52636;&#47141;&#54616;&#45716; &#54805;&#49885;&#51060;&#50632;&#45796;.&lt;/li&gt;
&lt;li&gt;&#44592;&#45733; : &#49828;&#45768;&#54140;, &#54056;&#53431; &#47196;&#44144;, NID&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&#49324;&#49892; &#49828;&#45432;&#53944;&#45716; &#51068;&#51333;&#51032; souped-up &#49828;&#45768;&#54140; &#47784;&#46300;&#47196; &#51089;&#46041;&#54616;&#45716; &#49480;&#51060;&#45796;. &#45800;&#51648; &#52264;&#51060;&#44032; &#51080;&#45796;&#47732; &#49828;&#45768;&#54609;&#54620; &#54056;&#53431;&#51012; &#51452;&#50612;&#51652; &#45936;&#51060;&#53552;&#50752; &#50672;&#44208;&#46108; &#51089;&#50629;&#51012; &#54620;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;1. Snort's Specifications&lt;/h1&gt;
&lt;h3&gt;1.1 &#50836;&#44396; &#49324;&#54637;&lt;/h3&gt;
&lt;p&gt;&#49828;&#45432;&#53944;&#45716; generic sniffing interface(libpcap)&#47484; &#49324;&#50857;&#54616;&#44592; &#46412;&#47928;&#50640; &#45824;&#48512;&#48516;&#51004; &#49884;&#49828;&#53596;&#50640;&#49436; &#46041;&#51089;&#54620;&#45796;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&#45796;&#51020;&#51008; &#49828;&#45432;&#53944;&#44032; &#51648;&#50896;&#54616;&#45716; &#50500;&#53412;&#53581;&#52432; &#46308;&#51060;&#45796;.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;i386&lt;/li&gt;
&lt;li&gt;Sparc&lt;/li&gt;
&lt;li&gt;Motorola 68000/PowerPC&lt;/li&gt;
&lt;li&gt;Alpha&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&#45796;&#51020;&#51008; &#49828;&#45432;&#53944;&#44032; &#51648;&#50896;&#54616;&#45716; OS&#51060;&#45796;.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Linux&lt;/li&gt;
&lt;li&gt;OpenBSD&lt;/li&gt;
&lt;li&gt;FreeBSD&lt;/li&gt;
&lt;li&gt;Solaris&lt;/li&gt;
&lt;li&gt;HP-UX&lt;/li&gt;
&lt;li&gt;AIX&lt;/li&gt;
&lt;li&gt;Mac OS X&lt;/li&gt;
&lt;li&gt;Win32(Win9x/NT/2000/XP)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;1.2 Bandwidth Consderations&lt;/h3&gt;
&lt;p&gt;100Mb : &#48736;&#47480; &#49549;&#46020;&#47196; &#51068;&#52376;&#47532; &#44032;&#45733;&lt;/p&gt;
&lt;p&gt;200 ~ 300Mb : &#54056;&#53431; &#49552;&#49892; &#48156;&#49373;&lt;/p&gt;
&lt;p&gt;500Mb~ : &#51089;&#46041; &#54616;&#51648; &#50506;&#51020;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;1.3 Snort is an open source Application&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&#49828;&#45432;&#53944;&#45716; &#50724;&#54536;&#49548;&#49828; &#51060;&#45796;.&lt;/p&gt;
&lt;p&gt;&#51068;&#48512; &#49345;&#50857;&#48260;&#51260;&#46020; &#51080;&#45796; : silicon Defense &amp;amp; sourcefire&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;2. Detecting Suspicious Traffic via Signatures&lt;/h1&gt;
&lt;p&gt;&amp;nbsp;&#44277;&#44201;&#51088; &#48143; &#49884;&#49828;&#53596;&#51012; &#53456;&#51648; &#54644;&#45236;&#45716; &#44032;&#51109; &#51339;&#51008; &#48169;&#48277;&#51008; "&#49884;&#44536;&#45348;&#52432; &#44592;&#48152;(signature-based) &#53456;&#51648;" &#44592;&#48277;&#51060;&#45796;.&lt;/p&gt;
&lt;p&gt;signature-based detection &#44592;&#48277;&#51008; &#50501;&#51032;&#51201; &#45348;&#53944;&#50892;&#53356; &#53944;&#47000;&#54589;&#51008; &#53945;&#51221; &#54056;&#53556;&#51012; &#44032;&#51648;&#44256; &#51080;&#45796;&#45716; &#44032;&#51221;&#54616;&#50640; &#51080;&#45796;.&lt;/p&gt;
&lt;p&gt;&#51060;&#47084;&#54620; &#53945;&#51221; &#54056;&#53556;&#51012; &#51060;&#50857;&#54616;&#50668;&#49436; signature&#47484; &#49373;&#49457; &#54624;&#49688; &#51080;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;alert icmp $EXTERNAL_NET any -&amp;gt; $HOME_NET any&lt;br /&gt;
&lt;p&gt;(msg:"ICMP PING NMAP"; dsize: 0; itype:8; )&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&#50808;&#48512;&#45348;&#53944;&#50892;&#53356;&#50640;&#49436; &#46308;&#50612;&#50724;&#45716; &#47784;&#46304;(ANY) ICMP + &#45936;&#51060;&#53440; &#54168;&#51060;&#47196;&#46300; &#48512;&#48516;&#51060; &#48708;&#50612; &#51080;&#51020; + ICMP &#53440;&#51077;&#54596;&#46300;&#44032; 8&#51068; &#44221;&#50864; &#44221;&#44256; &#47700;&#49884;&#51648; &#52636;&#47141;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&amp;nbsp;2.1 Detecting Suspicious Payloads&lt;/h3&gt;
&lt;p&gt;&#49828;&#45432;&#53944;&#45716; &#54056;&#53431; &#54644;&#45908; &#49104;&#47564;&#51060; &#50500;&#45768;&#46972;..&#54168;&#51060;&#47196;&#46300;&#51032; &#45236;&#50857;&#44620;&#51648;&#46020; &#54869;&#51064; &#54624;&#49688;&#44032; &#51080;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;&amp;nbsp;alert tcp $EXTERNAL_NET any -&amp;gt; $HOME_NET 139&lt;/p&gt;
&lt;p&gt;(msg: "DOS SMBdie atack" : flags: A+; content:"|57724c65680042313342577a|";)&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&#50808;&#48512; &#45348;&#53944;&#50892;&#53356;&#50640;&#49436; &#45236;&#48512; SMB&#49436;&#48260;&#47196; &#46308;&#50612; &#50724;&#45716;TCP&#54056;&#53431; &#51473;&#50640;&#49436; &#54168;&#51060;&#47196;&#46300;&#50640; "57724c65680042313342577a"&#44032; &#46308;&#50612; &#51080;&#51012;&#44221;&#50864; &#44221;&#44256; &#47700;&#49884;&#51648; &#52636;&#47141;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&amp;nbsp;2.2 Detecting Specific Protocol Element&lt;/h3&gt;
&lt;p&gt;&#49457;&#45733;&#44284; &#51221;&#54869;&#46020;&#47484; &#50948;&#54644; &#49828;&#45432;&#53944; &#49884;&#44536;&#45348;&#52432;&#45716; &#53945;&#51221; &#54532;&#47196;&#53664;&#53084;&#51032; &#54620; &#50836;&#49548;&#50640; &#44397;&#54620; &#49884;&#53420;&#49688;&#46020; &#51080;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;alert tcp $EXTERNAL_NEW any -&amp;gt;$HTTP_SERVERS $HTTP_PORTS&lt;/p&gt;
&lt;p&gt;(msg : "WEB-IIS ISAPI .ida attempt"; uricontent:".ida?"; nocase; dsize:&amp;gt;239; flags:A+;)&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&#50808;&#48512;&#50640;&#49436; &#45236;&#48512;&#51032; &#50937;&#49436;&#48260;&#47196; &#51217;&#44540;&#54616;&#45716; &#53944;&#47000;&#54589; &#51473;&#50640;&#49436; URI&#50640; ".ida"&#44032; &#46308;&#50612; &#51080;&#45796;&#47732; &#44221;&#44256; &#47700;&#49884;&#51648;&#47484; &#52636;&#47141;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;2.3 Extending Coverage with Custom Rules&lt;/h3&gt;
&lt;p&gt;&#51088;&#49888;&#51032; &#45348;&#53944;&#50892;&#53356;&#51032; &#53945;&#49457;&#50640; &#47582;&#45716; &#47344;&#51060;&#45208; &#49352;&#47196;&#50868; &#47344;&#46308;&#51012; &#51221;&#51032; &#54624;&#49688;&#46020; &#51080;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;alert tcp 192.168.1.1 any -&amp;gt; $HOEM_NET 22&lt;/p&gt;
&lt;p&gt;(msg: "suspicious host SSH traffic";)&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&#53945;&#51221; &#49324;&#50857;&#51088;(192.168.1.1)&#51032; IP&#47484; &#50416;&#45716; &#50501;&#51032;&#51201; &#49324;&#50857;&#51088;&#44032; ssh&#47196; &#51217;&#49549;&#51012; &#49884;&#46020; &#54624;&#44221;&#50864; &#44221;&#44256; &#47700;&#49884;&#51648; &#52636;&#47141;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&#45908; &#51088;&#49464;&#54620; &#45236;&#50857;&#51008; 12&#51109;&#51032; "Basic Rule Writing" &#48512;&#48516;&#51012; &#49332;&#54196; &#48372;&#44592; &#48148;&#46976;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;3. Detecting Suspicious Traffic via Heuristics&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;&#49884;&#44536;&#45348;&#52432; &#44592;&#48152;&#51032; &#53456;&#51648; &#44592;&#48277;&#51008; &#44900; &#54952;&#44284;&#51201;&#51060;&#45796;. &#54616;&#51648;&#47564; &#51060;&#47084;&#54620; &#49884;&#44536;&#45348;&#52432;&#44032; &#54637;&#49345; 100%&#51221;&#54869;&#54616;&#51648;&#45716; &#50506;&#45796;.&lt;/li&gt;
&lt;li&gt;&#50612;&#46504;&#46412;&#45716; &#53944;&#47000;&#54589;&#51008; &#50501;&#51032;&#51201;&#51064;&#45936; &#51060;&#50640; &#47582;&#45716; &#49884;&#44536;&#45348;&#52432;&#44032; &#50630;&#45716; &#44221;&#50864;&#46020; &#51080;&#45796;.&lt;/li&gt;
&lt;li&gt;&#51060;&#47484; &#50948;&#54644; &#49828;&#45432;&#53944; &#52964;&#48036;&#45768;&#54000;&#50640;&#49436;&#45716; Statistical Packet Anomaly Detection Engine(SPADE)&#47784;&#46280;&#51012; &#44060;&#48156; &#54616;&#50688;&#45796;.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&#51060; &#47784;&#46280;&#51008; &#53945;&#51221; &#49884;&#44536;&#45348;&#52432;&#44032; &#50630;&#50612;&#46020; &#49688;&#49345;&#51789;&#51064; &#53944;&#47000;&#54589;&#51012; &#44048;&#51648; &#54624;&#49688; &#51080;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;SPADE&#45716; &#50501;&#51032;&#51201; &#53944;&#47000;&#54589;&#51012; heuristic &#54056;&#53556; &#47588;&#52845; &#48169;&#48277;&#51004;&#47196; &#50508;&#50500;&#45240;&#45796;.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&#51060;&#47484; &#50948;&#54644; SPADE&#45716; &#45348;&#53944;&#50892;&#53356; &#53944;&#47000;&#54589;&#51012; &#44048;&#49884;&#54616;&#47732;&#49436; &#53580;&#51060;&#48660;&#51012; &#49373;&#49457;&#54620;&#45796;. &#51060; &#53580;&#51060;&#48660;&#50640;&#45716; &#51068;&#48152;&#51201;&#51064; &#53944;&#47000;&#54589;&#51032; &#51221;&#48372;&#44032; &#44592;&#47197;&#46108;&#45796;.&lt;/li&gt;
&lt;li&gt;&#44592;&#47197; &#45236;&#50857; : &#54056;&#53431; &#53440;&#51077;, &#47785;&#51201;&#51648;, &#48156;&#49888;&#51648; &#51452;&#49548;&lt;/li&gt;
&lt;li&gt;&#53945;&#51221; &#50577;&#51032; &#53580;&#51060;&#48660;&#51060; &#49373;&#49457;&#46104;&#47728; &#47588; &#49688;&#49888; &#54056;&#53431;&#47560;&#45796; &#53580;&#51060;&#48660;&#44284; &#48708;&#44368; &#54616;&#50668;...&#49352;&#47196;&#50868; &#54056;&#53556;&#51032; &#54056;&#53431;&#51060;&#47732; &#45458;&#51008; &#51216;&#49688;&#47484; &#47588;&#44592;&#44256;..&#51060; &#51216;&#49688;&#44032; &#53945;&#51221;&#44050;&#51012; &#45336;&#44592;&#47732; &#44221;&#44256; &#47700;&#49884;&#51648; &#52636;&#47141;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;4. Gathering Intrusion Data&lt;/h1&gt;
&lt;p&gt;&#46608;&#45796;&#47480; &#49828;&#45432;&#53944;&#51032; &#51452;&#46108; &#53945;&#51669;&#51473; &#54616;&#45208;&#45716; &#45936;&#51060;&#53552; &#49688;&#51665;&#51060;&#45796;.&lt;/p&gt;
&lt;p&gt;&#54596;&#50836;&#50640; &#46384;&#46972;&#49436; &#47784;&#46304; &#54168;&#51060;&#47196;&#46300;&#47484; &#47196;&#44536;&#54868; &#54624;&#49688; &#51080;&#46384;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&amp;nbsp;4.1 Assessing Treats&lt;/h3&gt;
&lt;p&gt;&#44277;&#44201; &#45936;&#51060;&#53552;&#51032; &#54168;&#51060;&#47196;&#46300;&#47484; &#48516;&#49437;&#54616;&#45716; &#44163;&#51008; &#54644;&#45817; &#44277;&#44201;&#51032; &#49457;&#44201;&#51012; &#50508;&#50500; &#45236;&#45716;&#45936; &#51473;&#50836;&#54620; &#50669;&#54624;&#51012; &#54620;&#45796;.&lt;/p&gt;
&lt;p&gt;&#51060;&#47111;&#44172; &#48516;&#49437;&#54620; &#51221;&#48372;&#47484; &#51060;&#50857;&#54616;&#50668;&#49436; &#51221;&#54869;&#54620; &#48169;&#50612;&#48143; &#44277;&#44201;&#51088;&#51032; &#51221;&#48372;&#47484; &#50619;&#50612; &#45244;&#49688; &#51080;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;4.2 Preprocessors&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&#49828;&#45432;&#53944; &#44060;&#48156;&#54016;&#51008; &#50976;&#50672;&#49457;&#44284; &#47784;&#46280; &#48169;&#49885;&#51032; &#50612;&#54540;&#47532;&#52992;&#51060;&#49496; &#51648;&#50896;&#51012; &#50948;&#54616;&#50668; Preprocessors &#47700;&#52964;&#45768;&#51608;&#51012; &#46020;&#51077; &#54616;&#50688;&#45796;.&lt;/li&gt;
&lt;li&gt;&#51221;&#51032; : A class of Plug-ins, &#53456;&#51648; &#50644;&#51652;&#51060; &#46041;&#51089;&#51204;&#50640; &#45936;&#51060;&#53552;&#50752; &#49345;&#54840; &#46041;&#51089; &#47785;&#54364;&lt;/li&gt;
&lt;li&gt;Preprocessors&#51008; &#44536; &#44592;&#45733;&#50640; &#46384;&#46972; &#53356;&#44172; &#49464; &#48512;&#48516;&#51004;&#47196; &#45208;&#45580;&#49688; &#51080;&#45796;.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Data Normalization&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&#49352;&#47196;&#50868; &#44277;&#44201;&#51060;&#45208; IDS &#53456;&#51648; &#54924;&#54588; &#44277;&#44201;&#51008; &#49828;&#45432;&#53944;&#44032; &#53456;&#51648; &#54644;&#45236;&#44592; &#55192;&#46308;&#45796;&lt;/li&gt;
&lt;li&gt;&#44536;&#47000;&#49436; &#49828;&#45432;&#53944;&#50640; Preprocessor&#47484; &#45908;&#54616;&#50668; &#45936;&#51060;&#53552;&#47484; &#51221;&#44508;&#54868; &#49884;&#53416;&#45796;.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&#44536;&#54980; &#53456;&#51648; &#50644;&#51652;&#51060; &#54644;&#49437; &#54624;&#49688; &#51080;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Protocol analysis&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&#53456;&#51648; &#50644;&#51652;&#51008; &#51088;&#49888;&#51060; &#54644;&#49437; &#44032;&#45733;&#54620; &#54532;&#47196;&#53664;&#53084;&#51032; &#47532;&#49828;&#53944;&#47484; &#44032;&#51648;&#44256; &#51080;&#45796;.&lt;/li&gt;
&lt;li&gt;&#51060; &#47532;&#49828;&#53944; &#50808;&#50640;&#45716; &#51088;&#51452; &#49324;&#50857;&#46104;&#45716; &#54532;&#47196;&#53664;&#53084;&#51060;&#46972; &#54624;&#51648;&#46972;&#46020; &#54644;&#49437;&#51060; &#48520;&#44032;&#45733; &#54616;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Non-signature-matching detection&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&#51068;&#48512; &#50501;&#51032;&#51201; &#45432;&#46300;&#45716; &#46385; &#44396;&#48324;&#46104;&#45716; &#49884;&#44536;&#45348;&#52432;&#44032; &#50630;&#51012;&#49688; &#51080;&#46384;&#45796;.&lt;/li&gt;
&lt;li&gt;&#51060;&#47084;&#54620; &#51032;&#49900; &#53944;&#47000;&#54589;&#51012; .....&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Data Normalization&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;e&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;5. Alerting via output plug-ins&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Preprocessirs &#52376;&#47532; &#49828;&#45432;&#53944; outputing &#44592;&#45733;&#51008; &#47784;&#46280;&#54868;&#48143; &#54540;&#47084;&#44536;&#51064;&#51060; &#44032;&#45733;&#54620;&#45796;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&#49436;&#47196; &#45796;&#47480; &#44592;&#49696; &#47112;&#48296;, &#45348;&#53944;&#50892;&#53356; &#49444;&#51221;, &#44060;&#51064; &#52712;&#54693;&#50640; &#46384;&#46972; &#47582;&#45716; &#50500;&#50883;&#54411; &#47700;&#52964;&#45768;&#51608;&#51012; &#49440;&#48324; &#51201;&#50857;&#54620;&#45796;.&lt;/li&gt;
&lt;li&gt;&#51060;&#47084;&#54620; &#50500;&#50883;&#54411;&#51008; &#51064;&#44036;&#51060; &#50508;&#50500; &#48372;&#44592; &#49789;&#51648;&#45716; &#50506;&#45796;.&lt;/li&gt;
&lt;li&gt;&#45796;&#47480; &#50612;&#54540;&#47532;&#52992;&#51060;&#49496;&#51060;&#45208; &#53812;&#46308;&#51060; &#49324;&#50857;&#54624;&#49688; &#51080;&#46020;&#47197; &#50500;&#50883;&#54411; &#54620;&#45796;.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Syslog&lt;/li&gt;
&lt;li&gt;tcpdump&lt;/li&gt;
&lt;li&gt;Text Logfile&lt;/li&gt;
&lt;li&gt;XML&lt;/li&gt;
&lt;li&gt;Relational database&lt;/li&gt;
&lt;li&gt;SNMP&lt;/li&gt;
&lt;li&gt;Snort Unified&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&#51060;&#47084;&#54620; &#45796;&#50577;&#54620; &#54252;&#47607;&#46308;&#51008; &#49324;&#50857;&#51088;&#50640;&#44172; &#49440;&#53469;&#51032; &#51088;&#50976;&#47484; &#51456;&#45796;.&lt;/li&gt;
&lt;li&gt;&#46608;&#54620; &#49828;&#45432;&#53944;&#45716; &#50668;&#47084; DB &#54540;&#47019;&#54268;&#51012; &#51648;&#50896;&#54620;&#45796;.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;mysql&lt;/li&gt;
&lt;li&gt;oracle&lt;/li&gt;
&lt;li&gt;MS sql Server&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;5.1 Aggrefating Data&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;5.2 Logging with the Unified format and Baryard&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&#44592;&#48376;&#51201;&#51004;&#47196; DB&#50672;&#44208; &#50500;&#50883;&#54411; &#54540;&#47084;&#44536;&#51064;&#51008; &#48180;&#46300;&#50948;&#49828;&#50640; &#46384;&#47480; &#51228;&#50557;&#51060; &#51080;&#45796;.&lt;/li&gt;
&lt;li&gt;DB &#54540;&#47084;&#44536;&#51064; &#49324;&#50857;&#49884; &#44032;&#51109; &#48736;&#47480; &#48169;&#49885;&#51064; tcpdump file&#47196; &#47196;&#44536;&#47484; &#45224;&#44592;&#45716; &#44163;&#48372;&#45796; 40%&#51032; &#49457;&#45733; &#44048;&#49548;&#44032; &#51080;&#45796;.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&#45348;&#53944;&#50892;&#53356;&#47484; &#53685;&#54620; &#51200;&#51109;&#49884;&#45716; &#45908; &#50501;&#54868; &#46108;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&#51060;&#47484; &#54644;&#44208;&#54616;&#44592; &#50948;&#54644; "Baryard&#47484; &#44060;&#48156; &#54616;&#50688;&#45796;.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;Baryard&#49444;&#52824;&#49884; &#49828;&#45432;&#53944;&#45716; &#50500;&#50883;&#54411; &#45936;