Ñо¿libnet´úÂëÒÔ¼°Êµ¼Ê²âÊÔ£º
·¢ÏÖÔÚFreebsdÖУ¬Êµ¼Ê·¢Ë͵ÄÊý¾ÝÖ¡²»Äܳ¬¹ý2034£¬¼ÓÉÏ14×Ö½ÚÕýºÃÊÇ2048ÁË
ÔÚLinuxÖУ¬LibNet²ÉÈ¡ÁËRAW SOCKETµÄ·½Ê½·¢ËÍÊý¾Ýsocket(PF_SOCKET,SOCK_RAW,htons(ETH_P_ALL))
FreebsdÖл»ÁË»úÖÆ£¬Ê¹ÓõÄÊÇbpfÇý¶¯·½Ê½¡£
²é¿´BPFÔ´´úÂ룬·¢ÏÖÄÚºËʵÏÖʱ
bpf.c:248
    if ((unsigned)len > MCLBYTES)
        return (EIO);
¶øMCLBYTEºêȱʡ¶¨ÒåΪ2048£¬ÔÚÄÚºËÅäÖÃÎļþsys/params.h:144ÐÐ
/*
 * Constants related to network buffer management.
 * MCLBYTES must be no larger than PAGE_SIZE.
 */
#ifndef    MSIZE
#define MSIZE        256        /* size of an mbuf */
#endif    /* MSIZE */
#ifndef    MCLSHIFT
#define MCLSHIFT    11        /* convert bytes to mbuf clusters */
#endif    /* MCLSHIFT */
#define MCLBYTES    (1 << MCLSHIFT)    /* size of an mbuf cluster */
#define    MJUMPAGESIZE    PAGE_SIZE    /* jumbo cluster 4k */
#define    MJUM9BYTES    (9 * 1024)    /* jumbo cluster 9k */
#define    MJUM16BYTES    (16 * 1024)    /* jumbo cluster 16k */
ÔÚÅäÖÃÄÚºËʱӦ¸Ã¿ÉÒÔͨ¹ýÅäÖÃ
MCLSHIFT    12 À´½«»º³åÇøÌá¸ßµ½4096
µ«ÊÇÎÒÏë·¢ËÍ8KµÄÊý¾Ý°üÔõô°ì£¿
/*
 * Constants related to network buffer management.
 * MCLBYTES must be no larger than PAGE_SIZE.
 */
רÃÅÓÐÒ»¸öÌáʾҪÇó²»ÄÜ´óÓÚPAGE_SIZE£¬ÄѵÀÎÒ»¹Òª¸Ä¶¯PAGE_SIZE£¿¸Ä¶¯ºó¶Ôϵͳ»á²»»áÔì³É½Ï´óÓ°Ï죿£¿
¿´ÁËϵͳԴÂ룬ÔÚIA64ÖУ¬PAGE_SIZEĬÈÏΪ8K£¬ÔÚÆäÆäËûÌåϵÖУ¬°üÀ¨AMD64£¬¶¼ÊÇ4096
ΪºÎ£¿´ýÑо¿
¿´À´RAW SOCKETÐÔÄÜÊÇÒª¸ß¡£
ÏÂÀ´ÔÙÑо¿bfpÔ´Âë°É
                  	
				
