荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: ykwch.bbs@bbs.cqupt.edu.cn (心蓝--雨下), 信区: Linux
标  题: TCP/IP协议栈阅读笔记
发信站: 幽幽黄桷兰 (Sat Apr  5 15:26:04 2003)
转信站: SZU!news.tiaozhan.com!news.happynet.org!CQUPT

----------------------------------------------------------------------------
----
TCP/IP协议栈阅读笔记
    下面是我看RH6.2(Kernel 2-2-14)的TCP/IP代码的笔记
[目录]
----------------------------------------------------------------------------
----
启动以后
    先从init/main.c的start_kernel函数说起。
    在这个函数里面调用kernel_thread启动了init进程,这个进程对应的函数是同一个
文件里面的init函数,在init函数里面调用了一个
叫do_basic_setup的在同一个文件里面的函数,这个函数调用了net/socket.c里面的so
ck_init函数,这个函数就是TCP/IP协议栈,也包括ipx等的入口。
    首先sock_init函数里面有很多ifdef这样的东东,我觉得对于一个普通的主机来说
,这些都不会配置的,它们包括:
SLAB_SKB,CONFIG_WAN_ROUTER,CONFIG_FIREWALL,CONFIG_RTNETLINK,CONFIG_NETLINK_D
EV
    去掉了这些编译选项以后就剩下这样的代码:
for (i = 0; i < NPROTO; i++)
net_families[i] = NULL;
sk_init();
proto_init();
    其中net_families在include/linux/net.h里面定义,是这样的:
struct net_proto_family
{
int family;
int (*create)(struct socket *sock, int protocol);
/* These are counters for the number of different methods of
each we support */
short authentication;
short encryption;
short encrypt_net;
};
    其中有用的只有前两项,那个create的callback函数是每个协议,例如AF_INET等初
始化上层协议如TCP/ICMP协议需要的,以后还会遇到的,这里先放着把
    sk_init函数在net/core/sock.c里面,没什么说的..
struct sock *sk_alloc(int family, int priority, int zero_it)
{
struct sock *sk = kmem_cache_alloc(sk_cachep, priority);
if(sk) {
if (zero_it)
memset(sk, 0, sizeof(struct sock));
sk->family = family;
}
return sk;
}
    proto_init函数在同一个文件里面:
void __init proto_init(void)
{
extern struct net_proto protocols[];
struct net_proto *pro;
pro = protocols;
while (pro->name != NULL)
{
(*pro->init_func)(pro);
pro++;
}
}
    struct net_proto在include/linux/net.h里面是这样的:
struct net_proto
{
const char *name; /* Protocol name */
void (*init_func)(struct net_proto *); /* Bootstrap */
};
    这个protocols的数组是在net/protocols.c里面定义的,包含了一堆的协议初始化
结构体,其中我只注意两个:AF_INET和AF_PACKET
它们的初始化函数分别是inet_proto_init和packet_proto_init

--
也许轮回里早已经注定
今生就该我还给你
一颗心在风雨里飘来飘去
只是为你
※ 来源:·幽幽黄桷兰 bbs.cqupt.edu.cn·[FROM: BlueCrystal]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店