¡¾×ª¡¿linux socket()µ÷ÓÃÓëarp±¨ÎÄ·¢ËÍ
LinuxÌṩ×î³£ÓõÄÍøÂçͨÐÅÓ¦ÓóÌÐò¿ª·¢½Ó¿Ú--BerkerleyÌ×½Ó×Ö(Socket)£®Ëü¼ÈÊÊÓÃÓÚͬһÖ÷»úÉϽø³Ì¼äͨÐÅ(IPC)£¬ÓÖÊÊÓÃÓÚ²»Í¬Ö÷»úÉϵĽø³Ì¼äͨÐÅ¡£Ì×½Ó×ÖµÄÉèÖÃͨ¹ýsocketµ÷ÓÃÍê³É£º
int socket(int family,int type,int protocol);
ÆäÖÐfamilyָͨÐÅÓò»òÐÒé×壬Linuxϵͳ֧³ÖµÄÍøÂçÐÒé×åÓÐPF_UNIX£¬PF_IPX£¬PF_PACKETµÈ¼¸Ê®ÖÖ£»typeΪÌ×½Ó×ÖÀàÐÍ,ĿǰÓÐSOCK_STREAM¡¢SOCK_DGRAM¡¢SOCK_RAW¡¢SOCK_PACKETµÈ£»protocolÊÇÌ×½Ó×ÖËùÓõÄÌØ¶¨ÐÒéÀàÐͺţ®
LinuxϵͳÌṩµÄ»ùÓÚÊý¾ÝÁ´Â·²ã¿ª·¢Ó¦ÓóÌÐòµÄ½Ó¿Ú¼¯³ÉÔÚÌ×½Ó×ÖÖУ¬ËüÊÇͨ¹ý´´½¨packetÀàÐ͵ÄÌ×½ÓÓʹӦÓóÌÐò¿ÉÖ±½ÓÔÚÊý¾ÝÁ´Â·²ã½ÓÊÕ»ò·¢ËÍδ±»ÏµÍ³´¦ÀíµÄÔʼµÄÊý¾Ý±¨ÎÄ(ÈçARP±¨ÎÄ)£¬Óû§Ò²¿ÉÒÔʹÓÃpacketÀàÐ͵ÄÌ×½ÓÓîÔÚÎïÀí²ãÉ϶¨Òå×Ô¼ºÌØÊâµÄÍøÂçÐÒé¡£Ö»ÓÐ×¢²áºÅΪ0µÄÓû§(³¬¼¶Óû§)½ø³Ì²ÅÄܽ¨Á¢»ò´ò¿ªÓÃÓÚ·ÃÎÊÍøÂçµÍ²ãµÄÌ×½Ó×Ö£®ÔÚLinuxϵͳÖУ¬ÓÃÒÔÏÂÈýÖÖ·½Ê½´´½¨µÄpacketÌ×½Ó×Ö¿ÉÖ±½ÓÓÃÓÚ·ÃÎÊÊý¾ÝÁ´Â·²ã£º
(1)PF_INETÐÒé×åÖÐSOCK_PACKEIÀàÐ͵ÄÌ×½Ó×Ö
(2)PF_PACKETÐÒé×åÖÐSOCK_RAWÀàÐ͵ÄÌ×½Ó×Ö
(3)PF_PACKETÐÒé×åÖÐSOCK_DGRAMÀàÐ͵ÄÌ×½Ó×Ö
Linux 2£®0ÖжÔÊý¾ÝÁ´Â·²ãµÄ²Ù×÷Ö÷ҪʹÓÃSOCK_PACKET¶¨ÒåµÄpacketÌ×½Ó×Ö£®³õʼ»¯¶¨ÒåÈçÏ£º
sockfd=socket(AF_INET,SOCK_PACKET,protocol)£»
ÆäÖУ¬protocolÓÃÓÚ¾ö¶¨Ì×½Ó×ÖËùʹÓõÄÎïÀí²ãÐÒé(ÔÚIEEE802.3Öж¨Òå)£®±ÊÕßÔÚ´ËÑ¡Ôñ³£ÓõÄÎïÀí²ãÐÒéETH_P_IP(InternetÐÒé)£®SOCK_PACKETʹÓÃÒ»ÖֱȽÏÀϵÄsockaddr_pktÊý¾Ý½á¹¹À´ÉèÖÃÍøÂç½Ó¿Ú¡£
ÔÚLinux 2 2ÖÐʹÓÃPF_PACKET´úÌæSOCK_PACKETÀ´¶¨ÒåpacketÌ×½Ó×Ö£®ÕâÖÖÌ×½Ó×ֵijõʼ»¯¶¨ÒåÈçÏ£º
sockfd=socket(PF_PACKET,socket_type,protocol)£»
ÆäÖÐsocket_typeÖ»ÄÜΪSOCK_RAW»òSOCK_DGRAM,protocolΪÎïÀí²ãͨÐÅÐÒé(ͬÉÏ)¡£SOCK_RAWºÍSOCK_DGRAMÀàÐÍÌ×½Ó×ÖʹÓÃÒ»ÖÖÓëÉ豸Î޹صıê×¼ÎïÀí²ãµØÖ·½á¹¹sockaddr_ll£¬µ«¾ßÌå²Ù×÷µÄ±¨Îĸñʽ²»Í¬¡£SOCK_RAWÌ×½Ó×ÖÖ±½ÓÏòÍøÂçÓ²¼þÇý¶¯³ÌÐò·¢ËÍ(»ò´ÓÍøÂçÓ²¼þÇý¶¯³ÌÐò½ÓÊÕ)ûÓÐÈκδ¦ÀíµÄÍêÕûÊý¾Ý±¨ÎÄ(°üÀ¨ÎïÀíÖ¡µÄÖ¡Í·)£¬Õâ¾ÍÒªÇó³ÌÐòÔ±±ØÐëÁ˽â¶ÔÓ¦É豸µÄÎïÀíÖ¡Ö¡Í·½á¹¹£¬²ÅÄÜÕýÈ·µØ×°ÔغͷÖÎö±¨ÎÄ¡£SOCK_DGRAMÌ×½Ó×ÖÊÕµ½µÄÊý¾Ý±¨ÎĵÄÎïÀíÖ¡Ö¡Í·»á±»ÏµÍ³×Ô¶¯È¥µô£¬Í¬Ñù,ÔÚ·¢ËÍʱ£®ÏµÍ³½«»á¸ù¾Ýsockaddr_ll½á¹¹ÖеÄÄ¿µÄµØÖ·ÐÅϢΪÊý¾Ý±¨ÎÄÌò¼ÓÒ»¸ǫ̈ÊʵÄÎïÀíÖ¡Ö¡Í·¡£
ĬÈÏÇé¿öÏ£®´ÓÈκνӿÚÊÕµ½µÄ·ûºÏÖ¸¶¨ÐÒéµÄËùÓÐÊý¾Ý±¨Îͼ»á±»´«Ë͵½packetÌ×
Ïà¹ØÎĵµ£º
1. HCI²ãÐÒé¸ÅÊö£º
HCIÌṩһÌ×ͳһµÄ·½·¨À´·ÃÎÊBluetoothµ×²ã¡£ÈçͼËùʾ£º
´ÓͼÉÏ¿ÉÒÔ¿´³ö£¬Host Controller Interface(HCI) ¾ÍÊÇÓÃÀ´¹µÍ¨HostºÍModule¡£Hostͨ³£¾ÍÊÇPC£¬ ModuleÔòÊÇÒÔ¸÷ÖÖÎïÀíÁ¬½ÓÐÎʽ£¨USB,serial,pc-cardµÈ£©Á¬½Óµ½PCÉϵÄbluetooth Dongle¡£
ÔÚHostÕâÒ»¶Ë£ºapplication,SDP,L2capµÈÐÒé ......
1. ѧ»áд¼òµ¥µÄmakefile
2. ±àһЩӦÓÃ
³ÌÐò
£¬¿ÉÒÔÓÃmakefileÅÜÆðÀ´
3. ѧ»áдÇý¶¯
µÄmakefile
4. дһ¼òµ¥charÇý¶¯£¬makefile±àÒëͨ¹ý£¬¿ÉÒÔinsmod£¬ lsmod£¬ rmmod. ÔÚÇý¶¯µÄinitº¯ÊýÀï´òÓ¡hello world£¬insmodºóÓ¦¸ÃÄܹ»Í¨¹ýdmesg¿´µ½Êä³ö
¡£
5. дһÍêÕûÇý¶¯£¬ ¼ÓÉÏread£¬ write£¬ ioctl£¬ pollingµÈ¸ ......
×°ºÃapacheºÍsubversionºó½ÓÏÂÀ´ÅäÖÃÅäÖÃÎļþ,ÏÈÓÃÃüÁîsvnadmin svnadmin create /home/repository/svn1 svnadmin create /home/repository/svn2 ÔÚ/home/repository/Ŀ¼ÀïÃæ´´½¨ÁË2¸ö²Ö¿âsvn1ºÍsvn2 ÐÞ¸Ähttp.conf¼ÓÉϹØÓÚsvnµÄÅäÖÃÑ¡Ïî LoadModule dav_svn_module modules/mod_dav_svn.so
LoadM ......
×÷Õߣºbioforge alkerr@yifan.net
ÔÃû£º <<Hacking the Linux Kernel Network Stack>>
·Ò룬Ð޸ģº duanjigang <duanjigang1983@126.com>
·Òë²Î¿¼£ºraodan (raod_at_30san.com) 2003-08-22
µÚÒ»Õ ¼ò½é
±¾ÎĽ«ÃèÊöÈçºÎÀûÓÃLinuxÍøÂç¶ÑÕ»µÄÇÏÃÅ£¨²»Ò»¶¨¶¼ÊÇ©¶´£©À´´ïµ½Ò»Ð©Ä¿µÄ£¬»ò ......
LINUX³£ÓÃÃüÁ»ù´¡£©
1. man ¶ÔÄãÊìϤ»ò²»ÊìϤµÄÃüÁîÌṩ°ïÖú½âÊÍ
eg:man ls ¾Í¿ÉÒԲ鿴lsÏà¹ØµÄÓ÷¨
×¢£º°´q¼ü»òÕßctrl+cÍ˳ö£¬ÔÚlinuxÏ¿ÉÒÔʹÓÃctrl+cÖÕÖ¹µ±Ç°³ÌÐòÔËÐС£
2. ls ²é¿´Ä¿Â¼»òÕßÎļþµÄÊô*£¬ÁоٳöÈÎһĿ¼ÏÂÃæµÄÎļþ
eg: ls /usr/man
ls -l
a.d±íʾĿ¼(directory)£¬Èç¹ûÊÇÒ»¸ö"-"±íʾÊÇÎļþ ......