LinuxÄÚºËÈçºÎ½ÓÊÕ²»Í¬ÀàÐÍÒÔ̫֡
1. ǰÑÔ
ÒÔ̫ͷÖгýÁË6×Ö½ÚÄ¿µÄMACµØÖ·¡¢6×Ö½ÚÔ´MACµØÖ·Í⣬»¹ÓÐÁ½×Ö½ÚµÄÒÔ̫֡ÀàÐÍÖµ£¬ÈçIPv4Ϊ0x0800£¬ARPΪ0x0806µÈ£¬Íø¿¨Çý¶¯ÊÕµ½ÒÔ̫֡ºóͨ¹ý½Ó¿Úº¯Êýnetif_receive_skb()(netif_rxʵ¼Ê×îºóÒ²Êǵ÷ÓÃnetif_receive_skb)½»µ½Éϲ㣬¶øÕâ¸ö½Ó¿Úº¯Êý¾ÍÍê³É¶ÔÒÔ̫֡ÀàÐ͵ÄÇø·Ö£¬½»µ½²»Í¬µÄÐÒé´¦Àí³ÌÐò¡£Èç¹ûÏë×Ô¼º±àдijһÒÔÌ«ÀàÐÍÖ¡µÄ´¦Àí³ÌÐò£¬ÐèÒª×Ô¼ºÌí¼ÓÏàÓ¦µÄ
ÒÔÏÂLinuxÄں˴úÂëΪ2.6.17.11¡£
2. Êý¾Ý½á¹¹
ÿÖÖÐÒé¶¼Òª¶¨ÒåÒ»¸öpacket_type½á¹¹£¬Òýµ¼½øÈëÏà¹ØµÄÐÒéÊý¾Ý´¦Àíº¯Êý£¬ËùÓнڵã×é³ÉÒ»¸öÁ´±í(HASHÁ´±í)¡£
/* include/linux/netdevice.h */
struct packet_type {
__be16 type; /* This is really htons(ether_type). */
struct net_device *dev; /* NULL is wildcarded here */
int (*func) (struct sk_buff *,
struct net_device *,
struct packet_type *,
struct net_device *);
void *af_packet_priv;
struct list_head list;
};
²ÎÊý˵Ã÷£º
type£ºÒÔ̫֡ÀàÐÍ£¬16λ
dev£ºËù¸½×ŵÄÍø¿¨É豸£¬Èç¹ûΪNULLÔòÆ¥ÅäÈ«²¿Íø¿¨
func£ºÐÒéÈë¿Ú½ÓÊÕ´¦Àíº¯Êý
af_packet_priv£ºÐÒé˽ÓÐÊý¾Ý
list£ºÁ´±í¿Û
Ò»°ã¸÷ÐÒéµÄpacket_type½á¹¹¶¼ÊǾ²Ì¬´æÔÚ£¬³õʼ»¯Ê±Ö»ÌṩtypeºÍfuncÁ½¸ö²ÎÊý¾Í¿ÉÒÔÁË£¬Ã¿¸öÐÒéÔÚ³õʼ»¯Ê±¶¼Òª½«´Ë½á¹¹¼ÓÈ뵽ϵͳÀàÐÍÁ´±íÖС£
3. ´¦Àíº¯Êý
3.1 Ìí¼Ó½Úµã
/* net/core/dev.c */
/**
* dev_add_pack - add packet handler
* @pt: packet type declaration
*
* Add a protocol handler to the networking stack. The passed &packet_type
* is linked into kernel lists and may not be freed until it has been
* removed from the kernel lists.
*
* This call does not sleep therefore it can not
* guarantee all CPU's that are in middle of receiving packets
* will see the new packet type (until the next received packet).
*/
void dev_add_pack(struct packet_type *pt)
{
int hash;
 
Ïà¹ØÎĵµ£º
±¾ÎÄ´Ó¸÷·½Ãæ²ûÊöÁËRed Hat LinuxµÄ°²È«ÅäÖ÷½·¨£¬Èç¹ûÄúʹÓõÄÊÇWindows Server 2003·þÎñÆ÷µÄ»°£¬Çë¿´Windows Server 2003 ϵͳÅäÖ÷½°¸¡£
ÍøÂ簲ȫÊÇÖ¸ÍøÂçϵͳµÄÓ²¼þ¡¢Èí¼þ¼°ÆäϵͳÖеÄÊý¾ÝÊܵ½±£»¤£¬²»ÊÜżȻµÄ»òÕß¶ñÒâµÄÔÒò¶øÔâµ½ÆÆ»µ¡¢¸ü¸Ä¡¢Ð¹Â¶£¬ÏµÍ³Á¬Ðø¿É¿¿Õý³£µØÔËÐУ¬ÍøÂç·þÎñ²»Öжϡ£
ÍøÂ簲ȫ´ÓÆä±¾ÖÊÉÏÀ´ ......
1¡¢MYSQLµÄ°²×°
1£©Ê×Ïȵ±È»ÊÇÏÂÔØÔ´Âë°ü¿©£¬È磺mysql-5.0.27µÄ°²×°£¬http://www.mysql.com
2£©½âѹËõ£¬>tar -zxvf mysql-5.0.27.tar.gz
3£©½âѹÍê³É£¬½øÈëmysql-5.0.27Îļþ¼Ð£¬>cd mysql-5.0.27
4£©°²×°ÅäÖã¬>./configure --prefix=/opt/mysql --with-extra-charsets=all --with-unix-socket-path=/opt/m ......
MEMCACHED°²×°
Ò»¡¢·þÎñ¶Ë¡£ÏȰ²×°libevent£¬ÔÙ°²×°memcached¡££¨×¢£ºlibeventÊÇÒ»Ì×¿çÆ½Ì¨µÄʼþ´¦Àí½Ó¿ÚµÄ·â×°£¬Äܹ»¼æÈݰüÀ¨£ºWindows/Linux/BSD/SolarisµÈ²Ù×÷ϵͳµÄʼþ´¦Àí£©
1¡¢ÏÂÔØ×îа汾µÄlibeventºÍmemcached£¬±ÊÕߵݲװĿ¼Ϊ/soft
>cd /soft
>wget http://www.dange.com/memcached/dist/memcach ......
¸ú×ÙϵͳµÄÊä³ö:
strace
ÀýÈç: strace -p 9034 -x -s 2048
-p ½ø³ÌºÅ
-x ²»ÊÇASCIIµÄÊä³öÓÃHEX±íʾ
-s ÿ´ÎÊä³öµ ......