LinuxÄÚºËÍøÂçÕ»´úÂëµÄ×¼±¸ÖªÊ¶ÏêÊö
1. LinuxÄÚºËipv4ÍøÂ粿·Ö·Ö²ã½á¹¹£º
BSD socket²ã£º ÕâÒ»²¿·Ö´¦ÀíBSD socketÏà¹Ø²Ù×÷£¬Ã¿¸ösocketÔÚÄÚºËÖÐÒÔstruct socket½á¹¹ÌåÏÖ¡£ÕâÒ»²¿·ÖµÄÎļþ
Ö÷ÒªÓУº/net/socket.c /net/protocols.c etc
INET socket²ã£ºBSD socketÊǸö¿ÉÒÔÓÃÓÚ¸÷ÖÖÍøÂçÐÒéµÄ½Ó¿Ú£¬¶øµ±ÓÃÓÚtcp/ip£¬¼´½¨Á¢ÁËAF_INETÐÎʽµÄsocketʱ£¬
»¹ÐèÒª±£ÁôЩ¶îÍâµÄ²ÎÊý£¬ÓÚÊǾÍÓÐÁËstruct sock½á¹¹¡£ÎļþÖ÷ÒªÓУº/net/ipv4/protocol.c /net/ipv4/af_inet.c /net/core/sock.c etc
TCP/UDP²ã£º´¦Àí´«Êä²ãµÄ²Ù×÷£¬´«Êä²ãÓÃstruct inet_protocolºÍstruct protoÁ½¸ö½á¹¹±íʾ¡£ÎļþÖ÷Òª
ÓУº/net/ipv4/udp.c /net/ipv4/datagram.c /net/ipv4/tcp.c /net/ipv4/tcp_input.c /net/ipv4//tcp_output.c /net/ipv4/tcp_minisocks.c /net/ipv4/tcp_output.c /net/ipv4/tcp_timer.c
etc
IP²ã£º´¦ÀíÍøÂç²ãµÄ²Ù×÷£¬ÍøÂç²ãÓÃstruct packet_type½á¹¹±íʾ¡£ÎļþÖ÷ÒªÓУº/net/ipv4/ip_forward.c
ip_fragment.c ip_input.c ip_output.c etc.
Êý¾ÝÁ´Â·²ãºÍÇý¶¯³ÌÐò£ºÃ¿¸öÍøÂçÉ豸ÒÔstruct net_device±íʾ£¬Í¨ÓõĴ¦ÀíÔÚdev.cÖУ¬Çý¶¯³ÌÐò¶¼ÔÚ/driver/netÄ¿
¼Ï¡£
2. Á½Ì¨Ö÷»ú½¨Á¢udpͨÐÅËù×ß¹ýµÄº¯ÊýÁбí
^
| sys_read fs/read_write.c
| sock_read net/socket.c
| sock_recvmsg net/socket.c
| inet_recvmsg net/ipv4/af_inet.c
| udp_recvmsg net/ipv4/udp.c
| skb_recv_datagram net/core/datagram.c
| --------------
Ïà¹ØÎĵµ£º
1. HCI²ãÐÒé¸ÅÊö£º
HCIÌṩһÌ×ͳһµÄ·½·¨À´·ÃÎÊBluetoothµ×²ã¡£ÈçͼËùʾ£º
´ÓͼÉÏ¿ÉÒÔ¿´³ö£¬Host Controller Interface(HCI) ¾ÍÊÇÓÃÀ´¹µÍ¨HostºÍModule¡£Hostͨ³£¾ÍÊÇPC£¬ ModuleÔòÊÇÒÔ¸÷ÖÖÎïÀíÁ¬½ÓÐÎʽ£¨USB,serial,pc-cardµÈ£©Á¬½Óµ½PCÉϵÄbluetooth Dongle¡£
ÔÚHostÕâÒ»¶Ë£ºapplication,SDP,L2capµÈÐÒé ......
2009 Äê 10 ÔÂ 29 ÈÕ
±¾ÎÄÊÇ Unix/Linux ϵͳ¹ÜÀí×Ô¶¯»¯ÏµÁÐÖеÄһƪÎÄÕ£¬Ö÷Òª½éÉÜÁËÄÚ´æ¹ÜÀíËùÉæ¼°µÄÃüÁ²¢Í¨¹ý±àд×Ô¶¯»¯½Å±¾ÊµÏÖÁËÄÚ´æ¹ÜÀíÓë¼à¿ØµÄ×Ô¶¯»¯
ÄÚ´æÊÇ Unix/Linux ÄÚºËËù¹ÜÀíµÄ×îÎªÖØÒªµÄ×ÊÔ´Ö®Ò»£¬ÄÚ´æ¹ÜÀíÊÇϵͳ¹ÜÀíÖзdz£ÖØÒªÒ²ÊÇ×ÔӵĵIJ¿·Ö¡£ÏµÍ³¹ÜÀíÔ±ÐèÒªÕÆÎÕÄÚ´æ¹ÜÀíµÄ»ù±¾¹¤×÷ÔÀíÒÔ¼°Ê¹Óú ......
¹ØÓÚepollʹÓ÷½·¨£º
²ÎÕÕ£º http://linux.die.net/man/4/epoll
ʵÀý´úÂ룺£¨À´×ÔÍøÉÏijÂÛ̳£©
#include <pthread.h>
#include <stdio.h>
#include <sys/timeb.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/epoll.h> ......