LinuxÍøÂç½Ø°ü²»ÍêÈ«ÕûÀí
ÍøÂç½Ø°üÊÇÒ»ÏîºÜÓÐÒâ˼µÄ¿ÎÌ⣬¿ÉÒÔÓÐÊý¾Ý¹ýÂË£¬·À»ðǽ£¬Á÷Á¿¿ØÖÆ£¬±¨ÎĴ۸ĵÈÖî¶àÓ¦Ó㬰´ÕÕÄں˷ֲã¼Ü¹¹½«Ò»Ð©½Ø°ü·½·¨²»ÍêÈ«ÕûÀíÈçÏ£¬»¶Ó²¹³ä¡£
1¡¢ L1²ãÇý¶¯½Ø°ü·¨
ÔÚÇý¶¯ÖÐÏÂÊÖÓ¦¸Ã¿ÉÒÔ˵ÊÇ×îÌù½üµ×²ãµÄ£¬Íø¿¨Çý¶¯ÖÐ×ÜÓÐrx½ÓÊÕºÍxmit·¢Ëͺ¯Êý£¬²ÎÊý×ÜÊÇsk_buffer£¬ÔÚÕâÀïÐ޸ĺܻƺܱ©Á¦£¬¶øÇÒ¼¸ºõ²»ÐèҪʲôlinuxÄں˵Ä֪ʶ¡£
xmitº¯Êýµ÷ÓÃʱµÄ²ÎÊýsk_bufferÒѾÊÇÒ»¸ö·¢Óý½¡È«µÄ³ÉÊìÌ壬Òò´ËÔÚÕâÀï×ö¹ýÂËÄÇÕæÊǵÃÐÄÓ¦ÊÖÃÀ´ôÁË£¬µ±È»Ð޸ĵÄʱºò»¹ÊÇÒªÏÂÒ»·¬¹¦·ò£¬¶ørxµÄʱºòÔòÏà·´£¬¿ÉÁ¯µÄsk_bufferÔÚÕâʱºòÖ»·¢ÓýÁËÁ´Â·²ã(L2)Í·²¿£¬Ò»µ©Éæ¼°µ½½ÏΪ¸´ÔӵĹýÂË£¬ÔòÐèÒª×öһЩģÄâÐÒéÕ»µÄ·ÖÎö£¬ÈçÐèÒª»ñÈ¡udp¶Ë¿Ú£¬¾ÍÒª´Ósk_bufferÖÐÏÈÈ¡³öL3 IP²ãµÄ³¤¶È£¬¶Ôsk_buffer->data×÷ÏàÓ¦Î»ÒÆ¡£
2¡¢ L2²ãÐéÄâÉ豸½Ø°ü·¨
Óë¾ßÌåÍø¿¨É豸Î޹أ¬Í¨¹ýregister_netdevice×¢²áÒ»¸önet_device½á¹¹£¬ÔÚÇý¶¯²ãÉÏÐéÄâÒ»¸öÉ豸½Úµã(ethx.y)£¬À´ÊµÏֽذü£¬Í¨¹ýÉèÖ÷ÓÉ£¬ÈÃÐèÒªÀ¹½ØµÄ±¨ÎÄͨ¹ý¸ÃÉ豸½Úµã·¢³ö£¬´Ó¶øÊµÏÖ¹ýÂË¡£
ÕýÊÇÒòΪÐèÒª½áºÏ·ÓÉÀ´Ê¹Ó㬸÷½·¨ÏÔµÃÌØ±ðÓÅÑÅ£¬¶ÔÄ¿µÄIPµÄ¹ýÂËÉõÖÁÔÚ·ÓÉÉèÖÃÖоÍÒѾÍê³É£¬±ÜÃâÆäËûÎ޹ر¨ÎIJ»±ØÒªµÄÀ¹½ØÅжϡ£ÐéÄâÉ豸À¹½Øµ½µÄsk_bufferÒ²ÒѾ»ù±¾³ÉÊìÁË£¬¿ÉÒÔ·½±ãµÄ¹ýÂË¡£
¿Éϧ·ð˵£¬Óŵ㼴ȱµã£¬ÕýÊÇÒòΪÐèÒª½áºÏ·ÓÉʹÓ㬸÷¨¶Ô½ÓÊÕ±¨ÎĵĹýÂ˺ÍÐÞ¸ÄÎÞÄÜΪÁ¦(Èç¹ûÀí½âÓÐÎó»¶ÓÖ¸Õý)¡£
3¡¢ L3²ã×Ô¶¨ÒåÐÒ齨°ü·¨
ÓÖÊǷdz£ÓÅÑŵÄ×ö·¨£¬Í¨¹ýdev_add_pack×¢²ápacket_type½á¹¹£¬¹Ò½ÓÉÏ×Ô¶¨ÒåÐÒéµÄÊÕ·¢Á÷³Ì£¬¾ÍËãLinuxÉý¼¶µ½3.0 4.0£¬¹À¼ÆÒ²ÄÜÇáÒ×µÄÒÆÖ²¡£
¿Éϧ¸Ã·½·¨Ö»ÄÜÀ¹½Ø½ÓÊյı¨ÎÄ£¬¶øÇÒÖ»ÄÜÀ¹½Ø¸ÃÐÒéµÄ±¨ÎÄ£¬¶àÓÃÓÚÕý¹æÐÒ鿪·¢£¬²»ÊÊÓÃÓÚһЩС¹¦ÄÜʵÏÖ¡£
4¡¢ L3²ãnetfilter½Ø°ü·¨
netfilterÊÇlinuxÄÚºË×Ô´øµÄÕý¹æ·À»ðǽ£¬×ªÒ»¸önetfilter¹³×Ó·Ö²¼Í¼£º
¿ÉÒÔ·¢ÏÖ£¬netfilter¹³×ÓËäÈ»²»¶à£¬µ«ÊDZ鲼ÐÒéÕ»µÄ¸÷¸ö¹Ø¼ü·¾¶£¬Í¨¹ýÕâЩ¹³×ӾͿÉÒÔ»ù±¾ÊµÏÖ¶þ²ãÒÔÉϱ¨ÎĵĹýÂ˺Íɾ¸Ä¡£
5¡¢ Ó¦Óòãraw socket½Ø°ü·¨
ÔʼÌ×½Ó×ÖÒ²Êdz£ÓõĽذü·½·¨£¬¿Éϧ¹¦ÄÜÓÐÏÞ¡£Äں˴¦ÀíµÄËùÓÐÆäËüÀàÐ͵ÄÊý¾Ý°ü¶¼»á´«Ò»¸ö¿½±´¸øÆ¥ÅäµÄÔʼÌ×½Ó×Ö£¬µ«ÊÇ·½±ã¼àÌýµÄͬʱÊÇÐÞ¸ÄÉϵÄÎÞÁ¦£¬ÒòΪµÃµ½µÄÊý¾Ý½ö½öÊǸö¿½±´¡£¶øÔʼÌ
Ïà¹ØÎĵµ£º
Ò»¡¢ÒýÑÔ£º
±¾ÎĵµµÄÄÚÈݴ󲿷ÝÄÚÈݶ¼ÊÇ´ÓÍøÉÏÊÕ¼¯¶øÀ´£¬È»ºóÅäºÏһЩеĽØÍ¼£¨Äں˰汾£ºV2.4.19£©¡£ÔÚÿһÅäÖÃÏîºó»áÓÐÒ»¸öÑ¡ÔñÖ¸ÄϵIJ¿·Ý£¬ÓÃÀ´Ö¸µ¼´ó¼ÒÔõôÑù¸ù¾Ý×Ô¼ºµÄÇé¿öÀ´×öÏàÓ¦µÄÑ¡Ôñ£»»¹ÓÐÔÚÿһ¸ö´óÏîºÍÎĵµµÄ×îºó»áÓÐÒ»¸ö¾Ñé̸£¬ËüÊÇһЩ¸ßÊÖÃÇÔÚÓ¦¶ÔÎÊÌâºÍ´¦ÀíÌØÓÐÓ²¼þʱµÄһЩ¾Ñ飨Õâ¸ö»¹µ ......
Linux 2.6.19.x Äں˱àÒëÅäÖÃÑ¡Ïî¼ò½é
×÷Õߣº½ð²½¹ú
°æÈ¨ÉùÃ÷
±¾ÎÄ×÷ÕßÊÇһλ×ÔÓÉÈí¼þ°®ºÃÕߣ¬ËùÒÔ±¾ÎÄËäÈ»²»ÊÇÈí¼þ£¬µ«ÊDZ¾×Å GPL µÄ¾«Éñ·¢²¼¡£ÈκÎÈ˶¼¿ÉÒÔ×ÔÓÉʹÓá¢×ªÔØ¡¢¸´ÖƺÍÔÙ·Ö·¢£¬µ«±ØÐë±£Áô×÷ÕßÊðÃû£¬Ò಻µÃ¶ÔÉùÃ÷ÖеÄÈκÎÌõ¿î×÷ÈκÎÐÎʽµÄÐ޸ģ¬Ò²²»µÃ¸½¼ÓÈÎºÎÆäËüÌõ¼þ¡£Äú¿ÉÒÔ×ÔÓÉÁ´½Ó¡¢ÏÂÔØ¡¢´«²¥´ËÎĵµ£¬ ......
so_test.h£º
#include
#include
void test_a();
void test_b();
void test_c();
test_a.c£º
#include "so_test.h"
void test_a()
{
printf("this is in test_a...\n");
}
test_b.c£º
#include "so_test.h"
void test_b()
{
printf("this is in test_b...\n");
......
access£¨ÅжÏÊÇ·ñ¾ßÓдæÈ¡ÎļþµÄȨÏÞ£©
¡¡¡¡Ïà¹Øº¯Êý stat£¬open£¬chmod£¬chown£¬setuid£¬setgid
¡¡¡¡±íÍ·Îļþ #include<unistd.h>
¡¡¡¡¶¨Ò庯Êý int access(const char * pathname,int mode);
¡¡¡¡º¯Êý˵Ã÷ access()»á¼ì²éÊÇ·ñ¿ÉÒÔ¶Á/дijһÒÑ´æÔÚµÄÎļþ¡£²ÎÊýmodeÓм¸ÖÖÇé¿ö×éºÏ£¬R_OK ......
±àÒëºÍ¼ÓÔØ
±¾Õ¿ªÍ·µÄ "hello world" Àý×Ó°üº¬ÁËÒ»¸ö¼ò¶ÌµÄ½¨Á¢²¢¼ÓÔØÄ£¿éµ½ÏµÍ³ÖÐÈ¥µÄÑÝʾ. µ±È», Õû¸ö¹ý³Ì±ÈÎÒÃÇĿǰ¿´µ½µÄ¶à. ±¾½ÚÌṩÁ˸ü¶àϸ½Ú¹ØÓÚÒ»¸öÄ£¿é×÷ÕßÈçºÎ½«Ô´Âëת»»³ÉÄÚºËÖеÄÔËÐеÄ×Óϵͳ.
2.4.1. ±àÒëÄ£¿é
µÚÒ»²½, ÎÒÃÇÐèÒª¿´Ò»ÏÂÄ£¿éÈçºÎ±ØÐë±»½¨Á¢. Ä£¿éµÄ½¨Á¢¹ý³ÌÓëÓû§¿Õ¼äµÄÓ¦ÓóÌÐòµÄ½ ......